From afe588ef4760667cac095402b0ccdfc8ed9d0678 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Fri, 2 Sep 2016 20:45:00 +0700 Subject: [PATCH] empty abc tag --- Assembly-CSharp-Editor.csproj | 1 + .../Editor/SwfTools/SwfContextExecuter.cs | 14 ++++---- .../Editor/SwfTools/SwfTags/DoABCTag.cs | 32 +++++++++++++++++++ .../Editor/SwfTools/SwfTags/DoABCTag.cs.meta | 12 +++++++ .../Editor/SwfTools/SwfTags/SwfTagBase.cs | 4 +-- .../Editor/SwfTools/SwfTags/SwfTagVisitor.cs | 1 + 6 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs create mode 100644 Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs.meta diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index e7fc02b..6299190 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -66,6 +66,7 @@ + diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfContextExecuter.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfContextExecuter.cs index 67b76ff..b1e521f 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfContextExecuter.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfContextExecuter.cs @@ -18,7 +18,7 @@ namespace FlashTools.Internal.SwfTools { dl.FrameName = string.Empty; while ( CurrentTag < tags.Count ) { var tag = tags[CurrentTag++]; - //TagToDebugLog(tag); + TagToDebugLog(tag); tag.AcceptVistor(this, dl); if ( tag.TagType == SwfTagType.ShowFrame ) { ChildrenNextFrameLooped(dl); @@ -198,6 +198,10 @@ namespace FlashTools.Internal.SwfTools { return dl; } + public SwfDisplayList Visit(DoABCTag tag, SwfDisplayList dl) { + return dl; + } + public SwfDisplayList Visit(DefineShapeTag tag, SwfDisplayList dl) { AddShapesToLibrary(tag.ShapeId, tag.Shapes); return dl; @@ -318,12 +322,8 @@ namespace FlashTools.Internal.SwfTools { } void TagToDebugLog(SwfTagBase tag) { - if ( tag is UnsupportedTag ) { - Debug.LogError(tag); - } else if ( tag is UnknownTag ) { - Debug.LogWarning(tag); - } else { - Debug.Log(tag); + if ( tag is UnsupportedTag || tag is UnknownTag ) { + Debug.LogWarningFormat("SwfContextExecuter. {0}", tag); } } } diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs new file mode 100644 index 0000000..2ac5572 --- /dev/null +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs @@ -0,0 +1,32 @@ +using FlashTools.Internal.SwfTools.SwfTypes; + +namespace FlashTools.Internal.SwfTools.SwfTags { + public class DoABCTag : SwfTagBase { + public bool ExecuteImmediately; + public string Name; + public byte[] ABCBytes; + + public override SwfTagType TagType { + get { return SwfTagType.DoABC; } + } + + public override TResult AcceptVistor(SwfTagVisitor visitor, TArg arg) { + return visitor.Visit(this, arg); + } + + public override string ToString() { + return "DoABCTag."; + } + + public static DoABCTag Create(SwfStreamReader reader) { + const int kDoAbcLazyInitializeFlag = 1; + var flags = reader.ReadUInt32(); + var name = reader.ReadString(); + var abc_bytes = reader.ReadRest(); + return new DoABCTag{ + ExecuteImmediately = (flags & kDoAbcLazyInitializeFlag) == 0, + Name = name, + ABCBytes = abc_bytes}; + } + } +} \ No newline at end of file diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs.meta b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs.meta new file mode 100644 index 0000000..5caf4a2 --- /dev/null +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/DoABCTag.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1644c7cd661b049a0afab118c09d69a5 +timeCreated: 1472819662 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagBase.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagBase.cs index 58aed3d..7b9ac2c 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagBase.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagBase.cs @@ -37,7 +37,7 @@ DoAction = 12, // Unsupported DoInitAction = 59, // Unsupported - DoABC = 82, // Unsupported + DoABC = 82, // ----------------------------- // Shape @@ -175,7 +175,7 @@ // Actions case (int)SwfTagType.DoAction: return UnsupportedTag.Create(SwfTagType.DoAction); case (int)SwfTagType.DoInitAction: return UnsupportedTag.Create(SwfTagType.DoInitAction); - case (int)SwfTagType.DoABC: return UnsupportedTag.Create(SwfTagType.DoABC); + case (int)SwfTagType.DoABC: return DoABCTag.Create(reader); // Shape case (int)SwfTagType.DefineShape: return DefineShapeTag.Create(reader); case (int)SwfTagType.DefineShape2: return DefineShape2Tag.Create(reader); diff --git a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagVisitor.cs b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagVisitor.cs index 82cd91b..e6b0df6 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagVisitor.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/SwfTools/SwfTags/SwfTagVisitor.cs @@ -12,6 +12,7 @@ TResult Visit(ExportAssetsTag tag, TArg arg); TResult Visit(SymbolClassTag tag, TArg arg); TResult Visit(DefineSceneAndFrameLabelDataTag tag, TArg arg); + TResult Visit(DoABCTag tag, TArg arg); TResult Visit(DefineShapeTag tag, TArg arg); TResult Visit(DefineShape2Tag tag, TArg arg); TResult Visit(DefineShape3Tag tag, TArg arg);