diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs index 84358eb..c140e08 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTypes/SwfBlendMode.cs @@ -4,7 +4,7 @@ namespace FlashTools.Internal.SwfTools.SwfTypes { public struct SwfBlendMode { public enum Mode { Normal, // + - Layer, // - + Layer, // + Multiply, // + Screen, // + Lighten, // + @@ -43,6 +43,8 @@ namespace FlashTools.Internal.SwfTools.SwfTypes { switch ( Value ) { case Mode.Normal: return new SwfBlendModeData(SwfBlendModeData.Types.Normal); + case Mode.Layer: + return new SwfBlendModeData(SwfBlendModeData.Types.Layer); case Mode.Multiply: return new SwfBlendModeData(SwfBlendModeData.Types.Multiply); case Mode.Screen: diff --git a/Assets/FlashTools/Scripts/Internal/SwfSettings.cs b/Assets/FlashTools/Scripts/Internal/SwfSettings.cs index e4907f4..8ac7078 100644 --- a/Assets/FlashTools/Scripts/Internal/SwfSettings.cs +++ b/Assets/FlashTools/Scripts/Internal/SwfSettings.cs @@ -159,6 +159,7 @@ namespace FlashTools.Internal { Shader SelectShader(bool masked, SwfBlendModeData.Types blend_type) { switch ( blend_type ) { case SwfBlendModeData.Types.Normal: + case SwfBlendModeData.Types.Layer: case SwfBlendModeData.Types.Multiply: case SwfBlendModeData.Types.Screen: case SwfBlendModeData.Types.Lighten: @@ -201,6 +202,11 @@ namespace FlashTools.Internal { material.SetInt("_SrcBlend", (int)BlendMode.One); material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); break; + case SwfBlendModeData.Types.Layer: + material.SetInt("_BlendOp" , (int)BlendOp.Add); + material.SetInt("_SrcBlend", (int)BlendMode.One); + material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha); + break; case SwfBlendModeData.Types.Multiply: material.SetInt("_BlendOp" , (int)BlendOp.Add); material.SetInt("_SrcBlend", (int)BlendMode.DstColor); diff --git a/Assets/FlashTools/Scripts/SwfAsset.cs b/Assets/FlashTools/Scripts/SwfAsset.cs index b21a5c8..2896041 100644 --- a/Assets/FlashTools/Scripts/SwfAsset.cs +++ b/Assets/FlashTools/Scripts/SwfAsset.cs @@ -109,6 +109,7 @@ namespace FlashTools { public struct SwfBlendModeData { public enum Types : byte { Normal, + Layer, Multiply, Screen, Lighten, @@ -136,7 +137,7 @@ namespace FlashTools { public static SwfBlendModeData operator*( SwfBlendModeData a, SwfBlendModeData b) { - return a.type == Types.Normal ? b : a; + return (a.type == Types.Normal || a.type == Types.Layer) ? b : a; } }