mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-07-16 19:14:15 -04:00
Add support for sprites with alpha mask
- Sprites with alpha mask can now be viewed and exported with transparency - Added hotkeys to control display of an alpha mask on the preview tab - Added an option to the export settings to enable/disable export with alpha mask as well - Prevented texture2D preview options from being changed with hotkeys outside of texture preview (e.g. when some other asset is selected)
This commit is contained in:
@ -43,6 +43,10 @@ namespace AssetStudioGUI
|
||||
private uint FMODlenms;
|
||||
private float FMODVolume = 0.8f;
|
||||
|
||||
#region SpriteControl
|
||||
private SpriteMaskMode spriteMaskVisibleMode = SpriteMaskMode.On;
|
||||
#endregion
|
||||
|
||||
#region TexControl
|
||||
private static char[] textureChannelNames = new[] { 'B', 'G', 'R', 'A' };
|
||||
private bool[] textureChannels = new[] { true, true, true, true };
|
||||
@ -315,24 +319,41 @@ namespace AssetStudioGUI
|
||||
if (e.Control)
|
||||
{
|
||||
var need = false;
|
||||
switch (e.KeyCode)
|
||||
if (lastSelectedItem.Type == ClassIDType.Texture2D)
|
||||
{
|
||||
case Keys.B:
|
||||
textureChannels[0] = !textureChannels[0];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.G:
|
||||
textureChannels[1] = !textureChannels[1];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.R:
|
||||
textureChannels[2] = !textureChannels[2];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.A:
|
||||
textureChannels[3] = !textureChannels[3];
|
||||
need = true;
|
||||
break;
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.B:
|
||||
textureChannels[0] = !textureChannels[0];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.G:
|
||||
textureChannels[1] = !textureChannels[1];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.R:
|
||||
textureChannels[2] = !textureChannels[2];
|
||||
need = true;
|
||||
break;
|
||||
case Keys.A:
|
||||
textureChannels[3] = !textureChannels[3];
|
||||
need = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (lastSelectedItem.Type == ClassIDType.Sprite && !((Sprite)lastSelectedItem.Asset).m_RD.alphaTexture.IsNull)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.A:
|
||||
spriteMaskVisibleMode = spriteMaskVisibleMode == SpriteMaskMode.On ? SpriteMaskMode.Off : SpriteMaskMode.On;
|
||||
need = true;
|
||||
break;
|
||||
case Keys.M:
|
||||
spriteMaskVisibleMode = spriteMaskVisibleMode == SpriteMaskMode.MaskOnly ? SpriteMaskMode.On : SpriteMaskMode.MaskOnly;
|
||||
need = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (need)
|
||||
{
|
||||
@ -1170,13 +1191,19 @@ namespace AssetStudioGUI
|
||||
|
||||
private void PreviewSprite(AssetItem assetItem, Sprite m_Sprite)
|
||||
{
|
||||
var image = m_Sprite.GetImage();
|
||||
var image = m_Sprite.GetImage(spriteMaskVisibleMode);
|
||||
if (image != null)
|
||||
{
|
||||
var bitmap = new DirectBitmap(image.ConvertToBytes(), image.Width, image.Height);
|
||||
image.Dispose();
|
||||
assetItem.InfoText = $"Width: {bitmap.Width}\nHeight: {bitmap.Height}\n";
|
||||
PreviewTexture(bitmap);
|
||||
|
||||
if (!m_Sprite.m_RD.alphaTexture.IsNull)
|
||||
{
|
||||
assetItem.InfoText += $"Alpha Mask: {spriteMaskVisibleMode}\n";
|
||||
StatusStripUpdate("'Ctrl'+'A' - Enable/Disable alpha mask usage. 'Ctrl'+'M' - Show alpha mask only.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user