diff --git a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfTags.cs b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfTags.cs index f5e834e..335f8a8 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfTags.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfTags.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Text; using System.Collections.Generic; using Ionic.Zlib; @@ -215,9 +216,30 @@ namespace FlashTools.Internal { public SwfClipActions ClipActions; public override string ToString() { - return string.Format( - "CharacterId: {0}, Depth: {1}, Matrix: {2}, ColorTransform: {3}", - CharacterId, Depth, Matrix, ColorTransform); + var sb = new StringBuilder(1024); + sb.AppendFormat("Move: {0} Depth: {1}", Move, Depth); + if ( HasCharacter ) { + sb.AppendFormat(" CharacterId: {0}", CharacterId); + } + if ( HasMatrix ) { + sb.AppendFormat(" Matrix: {0}", Matrix); + } + if ( HasColorTransform ) { + sb.AppendFormat(" ColorTransform: {0}", ColorTransform); + } + if ( HasRatio ) { + sb.AppendFormat(" Ratio: {0}", Ratio); + } + if ( HasName ) { + sb.AppendFormat(" Name: {0}", Name); + } + if ( HasClipDepth ) { + sb.AppendFormat(" ClipDepth: {0}", ClipDepth); + } + if ( HasClipActions ) { + sb.AppendFormat(" ClipActions: {0}", HasClipActions); + } + return sb.ToString(); } public override SwfTagType TagType { @@ -292,9 +314,30 @@ namespace FlashTools.Internal { public SwfClipActions ClipActions; public override string ToString() { - return string.Format( - "CharacterId: {0}, Depth: {1}, Matrix: {2}, ColorTransform: {3}", - CharacterId, Depth, Matrix, ColorTransform); + var sb = new StringBuilder(1024); + sb.AppendFormat("Move: {0} Depth: {1}", Move, Depth); + if ( HasCharacter ) { + sb.AppendFormat(" CharacterId: {0}", CharacterId); + } + if ( HasMatrix ) { + sb.AppendFormat(" Matrix: {0}", Matrix); + } + if ( HasColorTransform ) { + sb.AppendFormat(" ColorTransform: {0}", ColorTransform); + } + if ( HasRatio ) { + sb.AppendFormat(" Ratio: {0}", Ratio); + } + if ( HasName ) { + sb.AppendFormat(" Name: {0}", Name); + } + if ( HasClipDepth ) { + sb.AppendFormat(" ClipDepth: {0}", ClipDepth); + } + if ( HasClipActions ) { + sb.AppendFormat(" ClipActions: {0}", HasClipActions); + } + return sb.ToString(); } public override SwfTagType TagType { @@ -523,17 +566,11 @@ namespace FlashTools.Internal { var tag = new DefineSceneAndFrameLabelDataTag(); var scenes = reader.ReadEncodedU32(); for ( var i = 0; i < scenes; ++i ) { - tag.Scenes.Add(new SceneOffsetData { - Offset = reader.ReadEncodedU32(), - Name = reader.ReadString() - }); + tag.Scenes.Add(SceneOffsetData.Read(reader)); } var frames = reader.ReadEncodedU32(); for ( var i = 0; i < frames; ++i ) { - tag.Frames.Add(new FrameLabelData { - Number = reader.ReadEncodedU32(), - Label = reader.ReadString() - }); + tag.Frames.Add(FrameLabelData.Read(reader)); } return tag; } diff --git a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfUtils.cs b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfUtils.cs index 062f3d8..afcbf4c 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfUtils.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimSwfUtils.cs @@ -176,11 +176,25 @@ namespace FlashTools.Internal { struct SceneOffsetData { public uint Offset; public string Name; + + public static SceneOffsetData Read(SwfStreamReader reader) { + var data = new SceneOffsetData(); + data.Offset = reader.ReadEncodedU32(); + data.Name = reader.ReadString(); + return data; + } } struct FrameLabelData { public uint Number; public string Label; + + public static FrameLabelData Read(SwfStreamReader reader) { + var data = new FrameLabelData(); + data.Number = reader.ReadEncodedU32(); + data.Label = reader.ReadString(); + return data; + } } struct SwfRGB { @@ -254,8 +268,8 @@ namespace FlashTools.Internal { public float ScaleY; public float RotateSkew0; public float RotateSkew1; - public int TranslateX; - public int TranslateY; + public float TranslateX; + public float TranslateY; public static SwfMatrix Identity { get { @@ -265,8 +279,7 @@ namespace FlashTools.Internal { RotateSkew0 = 0, RotateSkew1 = 0, TranslateX = 0, - TranslateY = 0 - }; + TranslateY = 0}; } } @@ -285,8 +298,8 @@ namespace FlashTools.Internal { matrix.RotateSkew1 = reader.ReadFixedPoint16(bits); } var translate_bits = (byte)reader.ReadUnsignedBits(5); - matrix.TranslateX = reader.ReadSignedBits(translate_bits); - matrix.TranslateY = reader.ReadSignedBits(translate_bits); + matrix.TranslateX = reader.ReadSignedBits(translate_bits) / 20.0f; + matrix.TranslateY = reader.ReadSignedBits(translate_bits) / 20.0f; reader.AlignToByte(); return matrix; } @@ -307,8 +320,23 @@ namespace FlashTools.Internal { public short GAdd; public short BAdd; public bool HasAdd; + + public static SwfColorTransformRGB Identity { + get { + return new SwfColorTransformRGB { + RMul = 1, + GMul = 1, + BMul = 1, + HasMul = false, + RAdd = 0, + GAdd = 0, + BAdd = 0, + HasAdd = false}; + } + } + public static SwfColorTransformRGB Read(SwfStreamReader reader) { - SwfColorTransformRGB transform; + var transform = SwfColorTransformRGB.Identity; var has_add = reader.ReadBit(); var has_mul = reader.ReadBit(); var bits = reader.ReadUnsignedBits(4); @@ -317,26 +345,22 @@ namespace FlashTools.Internal { transform.GMul = (short)reader.ReadSignedBits(bits); transform.BMul = (short)reader.ReadSignedBits(bits); transform.HasMul = true; - } else { - transform.RMul = 1; - transform.GMul = 1; - transform.BMul = 1; - transform.HasMul = false; } if ( has_add ) { transform.RAdd = (short)reader.ReadSignedBits(bits); transform.GAdd = (short)reader.ReadSignedBits(bits); transform.BAdd = (short)reader.ReadSignedBits(bits); transform.HasAdd = true; - } else { - transform.RAdd = 0; - transform.GAdd = 0; - transform.BAdd = 0; - transform.HasAdd = false; } reader.AlignToByte(); return transform; } + + public override string ToString() { + return string.Format( + "RMul: {0}, GMul: {1}, BMul: {2}, HasMul: {3}, RAdd: {4}, GAdd: {5}, BAdd: {6}, HasAdd: {7}", + RMul, GMul, GMul, HasMul, RAdd, GAdd, BAdd, HasAdd); + } } struct SwfColorTransformRGBA { @@ -350,8 +374,25 @@ namespace FlashTools.Internal { public short BAdd; public short AAdd; public bool HasAdd; + + public static SwfColorTransformRGBA Identity { + get { + return new SwfColorTransformRGBA { + RMul = 1, + GMul = 1, + BMul = 1, + AMul = 1, + HasMul = false, + RAdd = 0, + GAdd = 0, + BAdd = 0, + AAdd = 0, + HasAdd = false}; + } + } + public static SwfColorTransformRGBA Read(SwfStreamReader reader) { - SwfColorTransformRGBA transform; + var transform = SwfColorTransformRGBA.Identity; var has_add = reader.ReadBit(); var has_mul = reader.ReadBit(); var bits = reader.ReadUnsignedBits(4); @@ -361,12 +402,6 @@ namespace FlashTools.Internal { transform.BMul = (short)reader.ReadSignedBits(bits); transform.AMul = (short)reader.ReadSignedBits(bits); transform.HasMul = true; - } else { - transform.RMul = 1; - transform.GMul = 1; - transform.BMul = 1; - transform.AMul = 1; - transform.HasMul = false; } if ( has_add ) { transform.RAdd = (short)reader.ReadSignedBits(bits); @@ -374,16 +409,16 @@ namespace FlashTools.Internal { transform.BAdd = (short)reader.ReadSignedBits(bits); transform.AAdd = (short)reader.ReadSignedBits(bits); transform.HasAdd = true; - } else { - transform.RAdd = 0; - transform.GAdd = 0; - transform.BAdd = 0; - transform.AAdd = 0; - transform.HasAdd = false; } reader.AlignToByte(); return transform; } + + public override string ToString() { + return string.Format( + "RMul: {0}, GMul: {1}, BMul: {2}, AMul: {3}, HasMul: {4}, RAdd: {5}, GAdd: {6}, BAdd: {7}, AAdd: {8}, HasAdd: {9}", + RMul, GMul, GMul, AMul, HasMul, RAdd, GAdd, BAdd, AAdd, HasAdd); + } } struct SwfClipActions {