mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-15 04:25:27 +07:00
SwfTools to dll
This commit is contained in:
@@ -5,9 +5,9 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using FlashTools.Internal.SwfTools;
|
||||
using FlashTools.Internal.SwfTools.SwfTags;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
using SwfTools;
|
||||
using SwfTools.SwfTags;
|
||||
using SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal {
|
||||
public class SwfPostprocessor : AssetPostprocessor {
|
||||
@@ -289,4 +289,74 @@ namespace FlashTools.Internal {
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// Extensions
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static class SwfExtensions {
|
||||
public static Matrix4x4 ToUMatrix(this SwfMatrix self) {
|
||||
var mat = Matrix4x4.identity;
|
||||
mat.m00 = self.ScaleX;
|
||||
mat.m10 = self.RotateSkew0;
|
||||
mat.m01 = self.RotateSkew1;
|
||||
mat.m11 = self.ScaleY;
|
||||
mat.m03 = self.TranslateX;
|
||||
mat.m13 = self.TranslateY;
|
||||
return mat;
|
||||
}
|
||||
|
||||
public static SwfBlendModeData ToBlendModeData(this SwfBlendMode self) {
|
||||
switch ( self.Value ) {
|
||||
case SwfBlendMode.Mode.Normal:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
|
||||
case SwfBlendMode.Mode.Layer:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Layer);
|
||||
case SwfBlendMode.Mode.Multiply:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Multiply);
|
||||
case SwfBlendMode.Mode.Screen:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Screen);
|
||||
case SwfBlendMode.Mode.Lighten:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Lighten);
|
||||
case SwfBlendMode.Mode.Darken:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Darken);
|
||||
case SwfBlendMode.Mode.Difference:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Difference);
|
||||
case SwfBlendMode.Mode.Add:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Add);
|
||||
case SwfBlendMode.Mode.Subtract:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Subtract);
|
||||
case SwfBlendMode.Mode.Invert:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Invert);
|
||||
case SwfBlendMode.Mode.Hardlight:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Hardlight);
|
||||
default:
|
||||
Debug.LogWarningFormat(
|
||||
"<b>[FlashTools]</b> SwfBlendMode. Unsupported blend mode '{0}'",
|
||||
self.Value);
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfColorTransData ToColorTransData(this SwfColorTransform self) {
|
||||
var trans = SwfColorTransData.identity;
|
||||
if ( self.HasAdd ) {
|
||||
trans.addColor = new SwfVec4Data(
|
||||
self.RAdd / 256.0f,
|
||||
self.GAdd / 256.0f,
|
||||
self.BAdd / 256.0f,
|
||||
self.AAdd / 256.0f);
|
||||
}
|
||||
if ( self.HasMul ) {
|
||||
trans.mulColor = new SwfVec4Data(
|
||||
self.RMul / 256.0f,
|
||||
self.GMul / 256.0f,
|
||||
self.BMul / 256.0f,
|
||||
self.AMul / 256.0f);
|
||||
}
|
||||
return trans;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 484a94bbfa1744985a66e8f387d32d00
|
||||
folderAsset: yes
|
||||
timeCreated: 1457862313
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,114 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools {
|
||||
|
||||
using LibraryDefines = SortedDictionary<ushort, SwfLibraryDefine>;
|
||||
using DisplayInstances = SortedDictionary<ushort, SwfDisplayInstance>;
|
||||
|
||||
//
|
||||
// SwfLibrary
|
||||
//
|
||||
|
||||
public enum SwfLibraryDefineType {
|
||||
Shape,
|
||||
Bitmap,
|
||||
Sprite
|
||||
}
|
||||
|
||||
public abstract class SwfLibraryDefine {
|
||||
public string ExportName = string.Empty;
|
||||
public abstract SwfLibraryDefineType Type { get; }
|
||||
}
|
||||
|
||||
public class SwfLibraryShapeDefine : SwfLibraryDefine {
|
||||
public ushort[] Bitmaps = new ushort[0];
|
||||
public SwfMatrix[] Matrices = new SwfMatrix[0];
|
||||
|
||||
public override SwfLibraryDefineType Type {
|
||||
get { return SwfLibraryDefineType.Shape; }
|
||||
}
|
||||
}
|
||||
|
||||
public class SwfLibraryBitmapDefine : SwfLibraryDefine {
|
||||
public int Width = 0;
|
||||
public int Height = 0;
|
||||
public byte[] ARGB32 = new byte[0];
|
||||
public ushort Redirect = 0;
|
||||
|
||||
public override SwfLibraryDefineType Type {
|
||||
get { return SwfLibraryDefineType.Bitmap; }
|
||||
}
|
||||
}
|
||||
|
||||
public class SwfLibrarySpriteDefine : SwfLibraryDefine {
|
||||
public SwfControlTags ControlTags = SwfControlTags.identity;
|
||||
|
||||
public override SwfLibraryDefineType Type {
|
||||
get { return SwfLibraryDefineType.Sprite; }
|
||||
}
|
||||
}
|
||||
|
||||
public class SwfLibrary {
|
||||
public LibraryDefines Defines = new LibraryDefines();
|
||||
|
||||
public bool HasDefine<T>(ushort define_id) where T : SwfLibraryDefine {
|
||||
return FindDefine<T>(define_id) != null;
|
||||
}
|
||||
|
||||
public T FindDefine<T>(ushort define_id) where T : SwfLibraryDefine {
|
||||
SwfLibraryDefine def;
|
||||
if ( Defines.TryGetValue(define_id, out def) ) {
|
||||
return def as T;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// SwfDisplayList
|
||||
//
|
||||
|
||||
public enum SwfDisplayInstanceType {
|
||||
Shape,
|
||||
Sprite
|
||||
}
|
||||
|
||||
public abstract class SwfDisplayInstance {
|
||||
public abstract SwfDisplayInstanceType Type { get; }
|
||||
|
||||
public ushort Id;
|
||||
public ushort Depth;
|
||||
public ushort ClipDepth;
|
||||
public bool Visible;
|
||||
public SwfMatrix Matrix;
|
||||
public SwfBlendMode BlendMode;
|
||||
public SwfSurfaceFilters FilterList;
|
||||
public SwfColorTransform ColorTransform;
|
||||
}
|
||||
|
||||
public class SwfDisplayShapeInstance : SwfDisplayInstance {
|
||||
public override SwfDisplayInstanceType Type {
|
||||
get { return SwfDisplayInstanceType.Shape; }
|
||||
}
|
||||
}
|
||||
|
||||
public class SwfDisplaySpriteInstance : SwfDisplayInstance {
|
||||
public int CurrentTag = 0;
|
||||
public SwfDisplayList DisplayList = new SwfDisplayList();
|
||||
|
||||
public override SwfDisplayInstanceType Type {
|
||||
get { return SwfDisplayInstanceType.Sprite; }
|
||||
}
|
||||
|
||||
public void Reset() {
|
||||
CurrentTag = 0;
|
||||
DisplayList = new SwfDisplayList();
|
||||
}
|
||||
}
|
||||
|
||||
public class SwfDisplayList {
|
||||
public string FrameName = string.Empty;
|
||||
public DisplayInstances Instances = new DisplayInstances();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45e892bdc5efe44c0bef4552f2dcb5b0
|
||||
timeCreated: 1458464395
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,385 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using FlashTools.Internal.SwfTools.SwfTags;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools {
|
||||
public class SwfContextExecuter : SwfTagVisitor<SwfDisplayList, SwfDisplayList> {
|
||||
public SwfLibrary Library = null;
|
||||
public int CurrentTag = 0;
|
||||
|
||||
public SwfContextExecuter(SwfLibrary library, int current_tag) {
|
||||
Library = library;
|
||||
CurrentTag = current_tag;
|
||||
}
|
||||
|
||||
public bool NextFrame(List<SwfTagBase> tags, SwfDisplayList dl) {
|
||||
dl.FrameName = string.Empty;
|
||||
while ( CurrentTag < tags.Count ) {
|
||||
var tag = tags[CurrentTag++];
|
||||
TagToDebugLog(tag);
|
||||
tag.AcceptVistor(this, dl);
|
||||
if ( tag.TagType == SwfTagType.ShowFrame ) {
|
||||
ChildrenNextFrameLooped(dl);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
ChildrenNextFrameLooped(dl);
|
||||
return false;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(PlaceObjectTag tag, SwfDisplayList dl) {
|
||||
var is_shape = Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId);
|
||||
var is_sprite = Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId);
|
||||
SwfDisplayInstance new_inst = null;
|
||||
if ( is_shape ) {
|
||||
new_inst = new SwfDisplayShapeInstance();
|
||||
} else if ( is_sprite ) {
|
||||
new_inst = new SwfDisplaySpriteInstance();
|
||||
}
|
||||
if ( new_inst != null ) {
|
||||
new_inst.Id = tag.CharacterId;
|
||||
new_inst.Depth = tag.Depth;
|
||||
new_inst.ClipDepth = 0;
|
||||
new_inst.Visible = true;
|
||||
new_inst.Matrix = tag.Matrix;
|
||||
new_inst.BlendMode = SwfBlendMode.identity;
|
||||
new_inst.FilterList = SwfSurfaceFilters.identity;
|
||||
new_inst.ColorTransform = tag.ColorTransform;
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(PlaceObject2Tag tag, SwfDisplayList dl) {
|
||||
var is_shape = tag.HasCharacter
|
||||
? Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId)
|
||||
: false;
|
||||
var is_sprite = tag.HasCharacter
|
||||
? Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId)
|
||||
: false;
|
||||
if ( tag.HasCharacter ) {
|
||||
SwfDisplayInstance old_inst = null;
|
||||
if ( tag.Move ) { // replace character
|
||||
if ( dl.Instances.TryGetValue(tag.Depth, out old_inst) ) {
|
||||
dl.Instances.Remove(tag.Depth);
|
||||
}
|
||||
}
|
||||
// new character
|
||||
SwfDisplayInstance new_inst = null;
|
||||
if ( is_shape ) {
|
||||
new_inst = new SwfDisplayShapeInstance();
|
||||
} else if ( is_sprite ) {
|
||||
new_inst = new SwfDisplaySpriteInstance();
|
||||
}
|
||||
if ( new_inst != null ) {
|
||||
new_inst.Id = tag.CharacterId;
|
||||
new_inst.Depth = tag.Depth;
|
||||
new_inst.ClipDepth = tag.HasClipDepth ? tag.ClipDepth : (old_inst != null ? old_inst.ClipDepth : (ushort)0);
|
||||
new_inst.Visible = true;
|
||||
new_inst.Matrix = tag.HasMatrix ? tag.Matrix : (old_inst != null ? old_inst.Matrix : SwfMatrix.identity);
|
||||
new_inst.BlendMode = SwfBlendMode.identity;
|
||||
new_inst.FilterList = SwfSurfaceFilters.identity;
|
||||
new_inst.ColorTransform = tag.HasColorTransform ? tag.ColorTransform : (old_inst != null ? old_inst.ColorTransform : SwfColorTransform.identity);
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
} else if ( tag.Move ) { // move character
|
||||
SwfDisplayInstance inst;
|
||||
if ( dl.Instances.TryGetValue(tag.Depth, out inst) ) {
|
||||
if ( tag.HasClipDepth ) {
|
||||
inst.ClipDepth = tag.ClipDepth;
|
||||
}
|
||||
if ( tag.HasMatrix ) {
|
||||
inst.Matrix = tag.Matrix;
|
||||
}
|
||||
if ( tag.HasColorTransform ) {
|
||||
inst.ColorTransform = tag.ColorTransform;
|
||||
}
|
||||
}
|
||||
}
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(PlaceObject3Tag tag, SwfDisplayList dl) {
|
||||
var is_shape = tag.HasCharacter
|
||||
? Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId)
|
||||
: false;
|
||||
var is_sprite = tag.HasCharacter
|
||||
? Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId)
|
||||
: false;
|
||||
if ( tag.HasCharacter ) {
|
||||
SwfDisplayInstance old_inst = null;
|
||||
if ( tag.Move ) { // replace character
|
||||
if ( dl.Instances.TryGetValue(tag.Depth, out old_inst) ) {
|
||||
dl.Instances.Remove(tag.Depth);
|
||||
}
|
||||
}
|
||||
// new character
|
||||
SwfDisplayInstance new_inst = null;
|
||||
if ( is_shape ) {
|
||||
new_inst = new SwfDisplayShapeInstance();
|
||||
} else if ( is_sprite ) {
|
||||
new_inst = new SwfDisplaySpriteInstance();
|
||||
}
|
||||
if ( new_inst != null ) {
|
||||
new_inst.Id = tag.CharacterId;
|
||||
new_inst.Depth = tag.Depth;
|
||||
new_inst.ClipDepth = tag.HasClipDepth ? tag.ClipDepth : (old_inst != null ? old_inst.ClipDepth : (ushort)0);
|
||||
new_inst.Visible = tag.HasVisible ? tag.Visible : (old_inst != null ? old_inst.Visible : true);
|
||||
new_inst.Matrix = tag.HasMatrix ? tag.Matrix : (old_inst != null ? old_inst.Matrix : SwfMatrix.identity);
|
||||
new_inst.BlendMode = tag.HasBlendMode ? tag.BlendMode : (old_inst != null ? old_inst.BlendMode : SwfBlendMode.identity);
|
||||
new_inst.FilterList = tag.HasFilterList ? tag.SurfaceFilters : (old_inst != null ? old_inst.FilterList : SwfSurfaceFilters.identity);
|
||||
new_inst.ColorTransform = tag.HasColorTransform ? tag.ColorTransform : (old_inst != null ? old_inst.ColorTransform : SwfColorTransform.identity);
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
} else if ( tag.Move ) { // move character
|
||||
SwfDisplayInstance inst;
|
||||
if ( dl.Instances.TryGetValue(tag.Depth, out inst) ) {
|
||||
if ( tag.HasClipDepth ) {
|
||||
inst.ClipDepth = tag.ClipDepth;
|
||||
}
|
||||
if ( tag.HasVisible ) {
|
||||
inst.Visible = tag.Visible;
|
||||
}
|
||||
if ( tag.HasMatrix ) {
|
||||
inst.Matrix = tag.Matrix;
|
||||
}
|
||||
if ( tag.HasBlendMode ) {
|
||||
inst.BlendMode = tag.BlendMode;
|
||||
}
|
||||
if ( tag.HasFilterList ) {
|
||||
inst.FilterList = tag.SurfaceFilters;
|
||||
}
|
||||
if ( tag.HasColorTransform ) {
|
||||
inst.ColorTransform = tag.ColorTransform;
|
||||
}
|
||||
}
|
||||
}
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(RemoveObjectTag tag, SwfDisplayList dl) {
|
||||
dl.Instances.Remove(tag.Depth);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(RemoveObject2Tag tag, SwfDisplayList dl) {
|
||||
dl.Instances.Remove(tag.Depth);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(ShowFrameTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(SetBackgroundColorTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(FrameLabelTag tag, SwfDisplayList dl) {
|
||||
dl.FrameName = tag.Name.Trim();
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(ProtectTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(EndTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(ExportAssetsTag tag, SwfDisplayList dl) {
|
||||
foreach ( var asset_tag in tag.AssetTags ) {
|
||||
var define = Library.FindDefine<SwfLibraryDefine>(asset_tag.Tag);
|
||||
if ( define != null ) {
|
||||
define.ExportName = asset_tag.Name.Trim();
|
||||
}
|
||||
}
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(EnableDebuggerTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(EnableDebugger2Tag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(ScriptLimitsTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(SymbolClassTag tag, SwfDisplayList dl) {
|
||||
foreach ( var symbol_tag in tag.SymbolTags ) {
|
||||
var define = Library.FindDefine<SwfLibraryDefine>(symbol_tag.Tag);
|
||||
if ( define != null ) {
|
||||
define.ExportName = symbol_tag.Name.Trim();
|
||||
}
|
||||
}
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(MetadataTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineSceneAndFrameLabelDataTag tag, SwfDisplayList dl) {
|
||||
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;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineShape2Tag tag, SwfDisplayList dl) {
|
||||
AddShapesToLibrary(tag.ShapeId, tag.Shapes);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineShape3Tag tag, SwfDisplayList dl) {
|
||||
AddShapesToLibrary(tag.ShapeId, tag.Shapes);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineShape4Tag tag, SwfDisplayList dl) {
|
||||
AddShapesToLibrary(tag.ShapeId, tag.Shapes);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineBitsLosslessTag tag, SwfDisplayList dl) {
|
||||
AddBitmapToLibrary(
|
||||
tag.CharacterId,
|
||||
tag.BitmapWidth,
|
||||
tag.BitmapHeight,
|
||||
tag.ToARGB32());
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineBitsLossless2Tag tag, SwfDisplayList dl) {
|
||||
AddBitmapToLibrary(
|
||||
tag.CharacterId,
|
||||
tag.BitmapWidth,
|
||||
tag.BitmapHeight,
|
||||
tag.ToARGB32());
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineSpriteTag tag, SwfDisplayList dl) {
|
||||
AddSpriteToLibrary(
|
||||
tag.SpriteId,
|
||||
tag.ControlTags);
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(FileAttributesTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(EnableTelemetryTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(DefineBinaryDataTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(UnknownTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
public SwfDisplayList Visit(UnsupportedTag tag, SwfDisplayList dl) {
|
||||
return dl;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
void AddShapesToLibrary(ushort define_id, SwfShapesWithStyle shapes) {
|
||||
var bitmap_styles = shapes.FillStyles.Where(p => p.Type.IsBitmapType);
|
||||
var define = new SwfLibraryShapeDefine{
|
||||
Bitmaps = bitmap_styles.Select(p => p.BitmapId ).ToArray(),
|
||||
Matrices = bitmap_styles.Select(p => p.BitmapMatrix).ToArray()
|
||||
};
|
||||
Library.Defines.Add(define_id, define);
|
||||
}
|
||||
|
||||
void AddBitmapToLibrary(ushort define_id, int width, int height, byte[] argb32) {
|
||||
var duplicated = FindDuplicatedBitmap(argb32);
|
||||
var define = new SwfLibraryBitmapDefine{
|
||||
Width = width,
|
||||
Height = height,
|
||||
ARGB32 = duplicated > 0 ? new byte[0] : argb32,
|
||||
Redirect = duplicated};
|
||||
Library.Defines.Add(define_id, define);
|
||||
}
|
||||
|
||||
void AddSpriteToLibrary(ushort define_id, SwfControlTags control_tags) {
|
||||
var define = new SwfLibrarySpriteDefine{
|
||||
ControlTags = control_tags
|
||||
};
|
||||
Library.Defines.Add(define_id, define);
|
||||
}
|
||||
|
||||
ushort FindDuplicatedBitmap(byte[] argb32) {
|
||||
foreach ( var define in Library.Defines ) {
|
||||
var bitmap = define.Value as SwfLibraryBitmapDefine;
|
||||
if ( bitmap != null && bitmap.ARGB32.Length == argb32.Length ) {
|
||||
if ( bitmap.ARGB32.SequenceEqual(argb32) ) {
|
||||
return define.Key;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool IsSpriteTimelineEnd(SwfDisplaySpriteInstance sprite) {
|
||||
var sprite_def = Library.FindDefine<SwfLibrarySpriteDefine>(sprite.Id);
|
||||
if ( sprite_def != null && sprite.CurrentTag < sprite_def.ControlTags.Tags.Count ) {
|
||||
return false;
|
||||
}
|
||||
var children = sprite.DisplayList.Instances.Values
|
||||
.Where (p => p.Type == SwfDisplayInstanceType.Sprite)
|
||||
.Select(p => p as SwfDisplaySpriteInstance);
|
||||
foreach ( var child in children ) {
|
||||
if ( !IsSpriteTimelineEnd(child) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ChildrenNextFrameLooped(SwfDisplayList dl) {
|
||||
var sprites = dl.Instances.Values
|
||||
.Where (p => p.Type == SwfDisplayInstanceType.Sprite)
|
||||
.Select(p => p as SwfDisplaySpriteInstance);
|
||||
foreach ( var sprite in sprites ) {
|
||||
var sprite_def = Library.FindDefine<SwfLibrarySpriteDefine>(sprite.Id);
|
||||
if ( sprite_def != null ) {
|
||||
if ( IsSpriteTimelineEnd(sprite) ) {
|
||||
sprite.Reset();
|
||||
}
|
||||
var sprite_executer = new SwfContextExecuter(Library, sprite.CurrentTag);
|
||||
sprite_executer.NextFrame(sprite_def.ControlTags.Tags, sprite.DisplayList);
|
||||
sprite.CurrentTag = sprite_executer.CurrentTag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TagToDebugLog(SwfTagBase tag) {
|
||||
if ( tag is UnsupportedTag || tag is UnknownTag ) {
|
||||
Debug.LogWarningFormat(
|
||||
"<b>[FlashTools]</b> SwfContextExecuter. {0}",
|
||||
tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 642f43b0b67924926879406770376159
|
||||
timeCreated: 1458066637
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,54 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using FlashTools.Internal.SwfTools.SwfTags;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools {
|
||||
public class SwfDecoder {
|
||||
public SwfShortHeader OriginalHeader;
|
||||
public SwfLongHeader UncompressedHeader;
|
||||
public List<SwfTagBase> Tags = new List<SwfTagBase>();
|
||||
|
||||
public SwfDecoder(string swf_path) {
|
||||
var raw_data = File.ReadAllBytes(swf_path);
|
||||
var uncompressed_stream = DecompressSwfData(raw_data);
|
||||
DecodeSwf(new SwfStreamReader(uncompressed_stream));
|
||||
}
|
||||
|
||||
MemoryStream DecompressSwfData(byte[] raw_swf_data) {
|
||||
var raw_reader = new SwfStreamReader(raw_swf_data);
|
||||
OriginalHeader = SwfShortHeader.Read(raw_reader);
|
||||
switch ( OriginalHeader.Format ) {
|
||||
case "FWS":
|
||||
return new MemoryStream(raw_swf_data);
|
||||
case "CWS":
|
||||
var rest_stream = SwfStreamReader.DecompressZBytes(
|
||||
raw_reader.ReadRest());
|
||||
var new_short_header = new SwfShortHeader{
|
||||
Format = "FWS",
|
||||
Version = OriginalHeader.Version,
|
||||
FileLength = OriginalHeader.FileLength};
|
||||
var uncompressed_stream = new MemoryStream();
|
||||
new_short_header.Write(uncompressed_stream);
|
||||
rest_stream.WriteTo(uncompressed_stream);
|
||||
uncompressed_stream.Position = 0;
|
||||
return uncompressed_stream;
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"Unsupported swf format: {0}", OriginalHeader.Format));
|
||||
}
|
||||
}
|
||||
|
||||
void DecodeSwf(SwfStreamReader reader) {
|
||||
UncompressedHeader = SwfLongHeader.Read(reader);
|
||||
while ( !reader.IsEOF ) {
|
||||
var tag = SwfTagBase.Read(reader);
|
||||
if ( tag.TagType == SwfTagType.End ) {
|
||||
break;
|
||||
}
|
||||
Tags.Add(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ec49e670db02d4006b7722966e96ede6
|
||||
timeCreated: 1457864588
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,196 +0,0 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using Ionic.Zlib;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools {
|
||||
public class SwfStreamReader {
|
||||
struct BitContext {
|
||||
public byte CachedByte;
|
||||
public byte BitIndex;
|
||||
}
|
||||
BitContext _bitContext;
|
||||
BinaryReader _binaryReader;
|
||||
|
||||
long Length {
|
||||
get { return _binaryReader.BaseStream.Length; }
|
||||
}
|
||||
|
||||
long Position {
|
||||
get { return _binaryReader.BaseStream.Position; }
|
||||
}
|
||||
|
||||
long BytesLeft {
|
||||
get { return Length - Position; }
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// Public
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
public SwfStreamReader(byte[] data) {
|
||||
var memory_stream = new MemoryStream(data);
|
||||
_binaryReader = new BinaryReader(memory_stream);
|
||||
}
|
||||
|
||||
public SwfStreamReader(Stream stream) {
|
||||
_binaryReader = new BinaryReader(stream);
|
||||
}
|
||||
|
||||
public bool IsEOF {
|
||||
get { return Position >= Length; }
|
||||
}
|
||||
|
||||
public void AlignToByte() {
|
||||
_bitContext.BitIndex = 0;
|
||||
_bitContext.CachedByte = 0;
|
||||
}
|
||||
|
||||
public byte[] ReadRest() {
|
||||
return ReadBytes((int)BytesLeft);
|
||||
}
|
||||
|
||||
public bool ReadBit() {
|
||||
var bit_index = _bitContext.BitIndex & 0x07;
|
||||
if ( bit_index == 0 ) {
|
||||
_bitContext.CachedByte = ReadByte();
|
||||
}
|
||||
++_bitContext.BitIndex;
|
||||
return ((_bitContext.CachedByte << bit_index) & 0x80) != 0;
|
||||
}
|
||||
|
||||
public byte ReadByte() {
|
||||
return _binaryReader.ReadByte();
|
||||
}
|
||||
|
||||
public byte[] ReadBytes(int count) {
|
||||
return count <= 0
|
||||
? new byte[0]
|
||||
: _binaryReader.ReadBytes(count);
|
||||
}
|
||||
|
||||
public char ReadChar() {
|
||||
return _binaryReader.ReadChar();
|
||||
}
|
||||
|
||||
public char[] ReadChars(int count) {
|
||||
return count <= 0
|
||||
? new char[0]
|
||||
: _binaryReader.ReadChars(count);
|
||||
}
|
||||
|
||||
public short ReadInt16() {
|
||||
return _binaryReader.ReadInt16();
|
||||
}
|
||||
|
||||
public int ReadInt32() {
|
||||
return _binaryReader.ReadInt32();
|
||||
}
|
||||
|
||||
public ushort ReadUInt16() {
|
||||
return _binaryReader.ReadUInt16();
|
||||
}
|
||||
|
||||
public uint ReadUInt32() {
|
||||
return _binaryReader.ReadUInt32();
|
||||
}
|
||||
|
||||
public float ReadFloat32() {
|
||||
return _binaryReader.ReadSingle();
|
||||
}
|
||||
|
||||
public double ReadDouble64() {
|
||||
return _binaryReader.ReadDouble();
|
||||
}
|
||||
|
||||
public int ReadSignedBits(uint count) {
|
||||
if ( count == 0 ) {
|
||||
return 0;
|
||||
}
|
||||
bool sign = ReadBit();
|
||||
var res = sign ? uint.MaxValue : 0;
|
||||
--count;
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
var bit = ReadBit();
|
||||
res = (res << 1 | (bit ? 1u : 0u));
|
||||
}
|
||||
return (int)res;
|
||||
}
|
||||
|
||||
public uint ReadUnsignedBits(uint count) {
|
||||
if ( count == 0 ) {
|
||||
return 0;
|
||||
}
|
||||
uint res = 0;
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
var bit = ReadBit();
|
||||
res = (res << 1 | (bit ? 1u : 0u));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
public string ReadString() {
|
||||
var bytes = new List<byte>();
|
||||
while ( true ) {
|
||||
var bt = ReadByte();
|
||||
if ( bt == 0 ) {
|
||||
break;
|
||||
}
|
||||
bytes.Add(bt);
|
||||
}
|
||||
return Encoding.UTF8.GetString(bytes.ToArray());
|
||||
}
|
||||
|
||||
public float ReadFixedPoint_8_8() {
|
||||
var value = ReadInt16();
|
||||
return value / 256.0f;
|
||||
}
|
||||
|
||||
public float ReadFixedPoint_16_16() {
|
||||
var value = ReadInt32();
|
||||
return value / 65536.0f;
|
||||
}
|
||||
|
||||
public float ReadFixedPoint16(uint bits) {
|
||||
var value = ReadSignedBits(bits);
|
||||
return value / 65536.0f;
|
||||
}
|
||||
|
||||
public uint ReadEncodedU32() {
|
||||
uint val = 0;
|
||||
var bt = ReadByte();
|
||||
val |= bt & 0x7Fu;
|
||||
if ( (bt & 0x80) == 0 ) {
|
||||
return val;
|
||||
}
|
||||
bt = ReadByte();
|
||||
val |= (bt & 0x7Fu) << 7;
|
||||
if ( (bt & 0x80) == 0 ) {
|
||||
return val;
|
||||
}
|
||||
bt = ReadByte();
|
||||
val |= (bt & 0x7Fu) << 14;
|
||||
if ( (bt & 0x80) == 0 ) {
|
||||
return val;
|
||||
}
|
||||
bt = ReadByte();
|
||||
val |= (bt & 0x7Fu) << 21;
|
||||
if ( (bt & 0x80) == 0 ) {
|
||||
return val;
|
||||
}
|
||||
bt = ReadByte();
|
||||
val |= (bt & 0x7Fu) << 28;
|
||||
return val;
|
||||
}
|
||||
|
||||
static public MemoryStream DecompressZBytes(byte[] compressed_bytes) {
|
||||
var target = new MemoryStream();
|
||||
var zip_stream = new ZlibStream(target, CompressionMode.Decompress);
|
||||
zip_stream.Write(compressed_bytes, 0, compressed_bytes.Length);
|
||||
target.Position = 0;
|
||||
return target;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: add0a02be3196481daaf1fd9828f0f4e
|
||||
timeCreated: 1457819513
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,9 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15db74a10abbb4b35ab17143a18753a5
|
||||
folderAsset: yes
|
||||
timeCreated: 1457805943
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,27 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineBinaryDataTag : SwfTagBase {
|
||||
public ushort Tag;
|
||||
public byte[] Data;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineBinaryData; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return "DefineBinaryDataTag.";
|
||||
}
|
||||
|
||||
public static DefineBinaryDataTag Create(SwfStreamReader reader) {
|
||||
var tag = reader.ReadUInt16();
|
||||
reader.ReadUInt32(); // reserved
|
||||
var data = reader.ReadRest();
|
||||
return new DefineBinaryDataTag{
|
||||
Tag = tag,
|
||||
Data = data};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ffeb1c85031245dcbcdb64b486fa91c
|
||||
timeCreated: 1472925860
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,60 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineBitsLossless2Tag : SwfTagBase {
|
||||
public ushort CharacterId;
|
||||
public byte BitmapFormat;
|
||||
public ushort BitmapWidth;
|
||||
public ushort BitmapHeight;
|
||||
public ushort BitmapColorTableSize;
|
||||
public byte[] ZlibBitmapData;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineBitsLossless2; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineBitsLossless2Tag. " +
|
||||
"CharacterId: {0}, BitmapFormat: {1}, Width: {2}, Height: {3}",
|
||||
CharacterId, BitmapFormat, BitmapWidth, BitmapHeight);
|
||||
}
|
||||
|
||||
public static DefineBitsLossless2Tag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineBitsLossless2Tag();
|
||||
tag.CharacterId = reader.ReadUInt16();
|
||||
tag.BitmapFormat = reader.ReadByte();
|
||||
tag.BitmapWidth = reader.ReadUInt16();
|
||||
tag.BitmapHeight = reader.ReadUInt16();
|
||||
if ( tag.BitmapFormat == 3 ) {
|
||||
tag.BitmapColorTableSize = (ushort)(reader.ReadByte() + 1);
|
||||
}
|
||||
tag.ZlibBitmapData = reader.ReadRest();
|
||||
return tag;
|
||||
}
|
||||
|
||||
public byte[] ToARGB32() {
|
||||
var result = new byte[BitmapWidth * BitmapHeight * 4];
|
||||
var swf_reader = new SwfStreamReader(
|
||||
SwfStreamReader.DecompressZBytes(ZlibBitmapData));
|
||||
if ( BitmapFormat == 5 ) {
|
||||
for ( var i = 0; i < BitmapWidth * BitmapHeight; ++i ) {
|
||||
var pix32 = swf_reader.ReadUInt32();
|
||||
result[i * 4 + 0] = (byte)((pix32 ) & 0xFF);
|
||||
result[i * 4 + 1] = (byte)((pix32 >> 8) & 0xFF);
|
||||
result[i * 4 + 2] = (byte)((pix32 >> 16) & 0xFF);
|
||||
result[i * 4 + 3] = (byte)((pix32 >> 24) & 0xFF);
|
||||
}
|
||||
} else {
|
||||
//TODO: IMPLME
|
||||
throw new UnityException(string.Format(
|
||||
"Unsupported DefineBitsLossless2 Format: {0}", BitmapFormat));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a86e93cfb4a14b91bca7f9669b7ee7e
|
||||
timeCreated: 1457806192
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,60 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineBitsLosslessTag : SwfTagBase {
|
||||
public ushort CharacterId;
|
||||
public byte BitmapFormat;
|
||||
public ushort BitmapWidth;
|
||||
public ushort BitmapHeight;
|
||||
public ushort BitmapColorTableSize;
|
||||
public byte[] ZlibBitmapData;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineBitsLossless; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineBitsLosslessTag. " +
|
||||
"CharacterId: {0}, BitmapFormat: {1}, Width: {2}, Height: {3}",
|
||||
CharacterId, BitmapFormat, BitmapWidth, BitmapHeight);
|
||||
}
|
||||
|
||||
public static DefineBitsLosslessTag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineBitsLosslessTag();
|
||||
tag.CharacterId = reader.ReadUInt16();
|
||||
tag.BitmapFormat = reader.ReadByte();
|
||||
tag.BitmapWidth = reader.ReadUInt16();
|
||||
tag.BitmapHeight = reader.ReadUInt16();
|
||||
if ( tag.BitmapFormat == 3 ) {
|
||||
tag.BitmapColorTableSize = (ushort)(reader.ReadByte() + 1);
|
||||
}
|
||||
tag.ZlibBitmapData = reader.ReadRest();
|
||||
return tag;
|
||||
}
|
||||
|
||||
public byte[] ToARGB32() {
|
||||
var result = new byte[BitmapWidth * BitmapHeight * 4];
|
||||
var swf_reader = new SwfStreamReader(
|
||||
SwfStreamReader.DecompressZBytes(ZlibBitmapData));
|
||||
if ( BitmapFormat == 5 ) {
|
||||
for ( var i = 0; i < BitmapWidth * BitmapHeight; ++i ) {
|
||||
var pix24 = swf_reader.ReadUInt32();
|
||||
result[i * 4 + 0] = 255;
|
||||
result[i * 4 + 1] = (byte)((pix24 >> 8) & 0xFF);
|
||||
result[i * 4 + 2] = (byte)((pix24 >> 16) & 0xFF);
|
||||
result[i * 4 + 3] = (byte)((pix24 >> 24) & 0xFF);
|
||||
}
|
||||
} else {
|
||||
//TODO: IMPLME
|
||||
throw new UnityException(string.Format(
|
||||
"Unsupported DefineBitsLossless Format: {0}", BitmapFormat));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 93930c1f11b8b4299b5b252c8d1e44cc
|
||||
timeCreated: 1457806180
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,53 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineSceneAndFrameLabelDataTag : SwfTagBase {
|
||||
public struct SceneOffsetData {
|
||||
public uint Offset;
|
||||
public string Name;
|
||||
}
|
||||
|
||||
public struct FrameLabelData {
|
||||
public uint Number;
|
||||
public string Label;
|
||||
}
|
||||
|
||||
public List<SceneOffsetData> Scenes;
|
||||
public List<FrameLabelData> Frames;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineSceneAndFrameLabelData; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineSceneAndFrameLabelDataTag. " +
|
||||
"Scenes: {0}, Frames: {1}",
|
||||
Scenes.Count, Frames.Count);
|
||||
}
|
||||
|
||||
public static DefineSceneAndFrameLabelDataTag Create(SwfStreamReader reader) {
|
||||
var scene_count = reader.ReadEncodedU32();
|
||||
var scenes = new List<SceneOffsetData>((int)scene_count);
|
||||
for ( var i = 0; i < scene_count; ++i ) {
|
||||
scenes.Add(new SceneOffsetData{
|
||||
Offset = reader.ReadEncodedU32(),
|
||||
Name = reader.ReadString()});
|
||||
}
|
||||
var frame_count = reader.ReadEncodedU32();
|
||||
var frames = new List<FrameLabelData>((int)frame_count);
|
||||
for ( var i = 0; i < frame_count; ++i ) {
|
||||
frames.Add(new FrameLabelData{
|
||||
Number = reader.ReadEncodedU32(),
|
||||
Label = reader.ReadString()});
|
||||
}
|
||||
return new DefineSceneAndFrameLabelDataTag{
|
||||
Scenes = scenes,
|
||||
Frames = frames};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8861b3a830cd64ddb8e2b3373a6952dc
|
||||
timeCreated: 1457806126
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,32 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineShape2Tag : SwfTagBase {
|
||||
public ushort ShapeId;
|
||||
public SwfRect ShapeBounds;
|
||||
public SwfShapesWithStyle Shapes;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineShape2; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineShape2Tag. " +
|
||||
"ShapeId: {0}, ShapeBounds: {1}, Shapes: {2}",
|
||||
ShapeId, ShapeBounds, Shapes);
|
||||
}
|
||||
|
||||
public static DefineShape2Tag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineShape2Tag();
|
||||
tag.ShapeId = reader.ReadUInt16();
|
||||
tag.ShapeBounds = SwfRect.Read(reader);
|
||||
tag.Shapes = SwfShapesWithStyle.Read(reader, SwfShapesWithStyle.ShapeStyleType.Shape2);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c14bd04574d2540f5b4c834e394ff09b
|
||||
timeCreated: 1457806145
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,32 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineShape3Tag : SwfTagBase {
|
||||
public ushort ShapeId;
|
||||
public SwfRect ShapeBounds;
|
||||
public SwfShapesWithStyle Shapes;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineShape3; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineShape3Tag. " +
|
||||
"ShapeId: {0}, ShapeBounds: {1}, Shapes: {2}",
|
||||
ShapeId, ShapeBounds, Shapes);
|
||||
}
|
||||
|
||||
public static DefineShape3Tag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineShape3Tag();
|
||||
tag.ShapeId = reader.ReadUInt16();
|
||||
tag.ShapeBounds = SwfRect.Read(reader);
|
||||
tag.Shapes = SwfShapesWithStyle.Read(reader, SwfShapesWithStyle.ShapeStyleType.Shape3);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17f96f9e9841246658fdc871e73cc2cc
|
||||
timeCreated: 1457806154
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,36 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineShape4Tag : SwfTagBase {
|
||||
public ushort ShapeId;
|
||||
public SwfRect ShapeBounds;
|
||||
public SwfRect EdgeBounds;
|
||||
public byte Flags;
|
||||
public SwfShapesWithStyle Shapes;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineShape4; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineShape4Tag. " +
|
||||
"ShapeId: {0}, ShapeBounds: {1}, EdgeBounds: {2}, Flags: {3}, Shapes: {4}",
|
||||
ShapeId, ShapeBounds, EdgeBounds, Flags, Shapes);
|
||||
}
|
||||
|
||||
public static DefineShape4Tag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineShape4Tag();
|
||||
tag.ShapeId = reader.ReadUInt16();
|
||||
tag.ShapeBounds = SwfRect.Read(reader);
|
||||
tag.EdgeBounds = SwfRect.Read(reader);
|
||||
tag.Flags = reader.ReadByte();
|
||||
tag.Shapes = SwfShapesWithStyle.Read(reader, SwfShapesWithStyle.ShapeStyleType.Shape4);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8588b2fc4ef4a49cfb422ae16057b33b
|
||||
timeCreated: 1457806164
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,32 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineShapeTag : SwfTagBase {
|
||||
public ushort ShapeId;
|
||||
public SwfRect ShapeBounds;
|
||||
public SwfShapesWithStyle Shapes;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineShape; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineShapeTag. " +
|
||||
"ShapeId: {0}, ShapeBounds: {1}, Shapes: {2}",
|
||||
ShapeId, ShapeBounds, Shapes);
|
||||
}
|
||||
|
||||
public static DefineShapeTag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineShapeTag();
|
||||
tag.ShapeId = reader.ReadUInt16();
|
||||
tag.ShapeBounds = SwfRect.Read(reader);
|
||||
tag.Shapes = SwfShapesWithStyle.Read(reader, SwfShapesWithStyle.ShapeStyleType.Shape);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c4031f2278a949ea8f13253950a43d6
|
||||
timeCreated: 1457806135
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,32 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class DefineSpriteTag : SwfTagBase {
|
||||
public ushort SpriteId;
|
||||
public ushort FrameCount;
|
||||
public SwfControlTags ControlTags;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.DefineSprite; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"DefineSpriteTag. " +
|
||||
"SpriteId: {0}, FrameCount: {1}, ControlTags: {2}",
|
||||
SpriteId, FrameCount, ControlTags.Tags.Count);
|
||||
}
|
||||
|
||||
public static DefineSpriteTag Create(SwfStreamReader reader) {
|
||||
var tag = new DefineSpriteTag();
|
||||
tag.SpriteId = reader.ReadUInt16();
|
||||
tag.FrameCount = reader.ReadUInt16();
|
||||
tag.ControlTags = SwfControlTags.Read(reader);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3c659fdccfff42f9a79049ed13aab4f
|
||||
timeCreated: 1457806204
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,32 +0,0 @@
|
||||
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<TArg, TResult>(SwfTagVisitor<TArg, TResult> 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};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1644c7cd661b049a0afab118c09d69a5
|
||||
timeCreated: 1472819662
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,29 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class EnableDebugger2Tag : SwfTagBase {
|
||||
public string MD5PasswordHash;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.EnableDebugger2; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"EnableDebugger2Tag. " +
|
||||
"MD5PasswordHash: {0}",
|
||||
MD5PasswordHash.Length > 0);
|
||||
}
|
||||
|
||||
public static EnableDebugger2Tag Create(SwfStreamReader reader) {
|
||||
reader.ReadUInt16(); // reserved
|
||||
var md5 = reader.IsEOF
|
||||
? string.Empty
|
||||
: reader.ReadString();
|
||||
return new EnableDebugger2Tag{
|
||||
MD5PasswordHash = md5};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b616323c0469d4e81ba73869b289b21e
|
||||
timeCreated: 1472880545
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,28 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class EnableDebuggerTag : SwfTagBase {
|
||||
public string MD5PasswordHash;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.EnableDebugger; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"EnableDebuggerTag. " +
|
||||
"MD5PasswordHash: {0}",
|
||||
MD5PasswordHash.Length > 0);
|
||||
}
|
||||
|
||||
public static EnableDebuggerTag Create(SwfStreamReader reader) {
|
||||
var md5 = reader.IsEOF
|
||||
? string.Empty
|
||||
: reader.ReadString();
|
||||
return new EnableDebuggerTag{
|
||||
MD5PasswordHash = md5};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5d4c7d7a464b4c44be8b8653686760e
|
||||
timeCreated: 1472880531
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,29 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class EnableTelemetryTag : SwfTagBase {
|
||||
public byte[] SHA256PasswordHash;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.EnableTelemetry; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"EnableTelemetryTag. " +
|
||||
"SHA256PasswordHash: {0}",
|
||||
SHA256PasswordHash.Length > 0);
|
||||
}
|
||||
|
||||
public static EnableTelemetryTag Create(SwfStreamReader reader) {
|
||||
reader.ReadUInt16(); // reserved
|
||||
var sha256 = reader.IsEOF
|
||||
? new byte[0]
|
||||
: reader.ReadBytes(32);
|
||||
return new EnableTelemetryTag{
|
||||
SHA256PasswordHash = sha256};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40db138046cd1449a9e0a3d5020d9963
|
||||
timeCreated: 1472925852
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,19 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class EndTag : SwfTagBase {
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.End; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return "EndTag.";
|
||||
}
|
||||
|
||||
public static EndTag Create(SwfStreamReader reader) {
|
||||
return new EndTag();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfab3868fff1148f3ada0a0bb74b660b
|
||||
timeCreated: 1457806094
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,39 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class ExportAssetsTag : SwfTagBase {
|
||||
public struct AssetTagData {
|
||||
public ushort Tag;
|
||||
public string Name;
|
||||
}
|
||||
|
||||
public List<AssetTagData> AssetTags;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.ExportAssets; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"ExportAssetsTag. " +
|
||||
"AssetTags: {0}",
|
||||
AssetTags.Count);
|
||||
}
|
||||
|
||||
public static ExportAssetsTag Create(SwfStreamReader reader) {
|
||||
var asset_tag_count = reader.ReadUInt16();
|
||||
var asset_tags = new List<AssetTagData>((int)asset_tag_count);
|
||||
for ( var i = 0; i < asset_tag_count; ++i ) {
|
||||
asset_tags.Add(new AssetTagData{
|
||||
Tag = reader.ReadUInt16(),
|
||||
Name = reader.ReadString()});
|
||||
}
|
||||
return new ExportAssetsTag{
|
||||
AssetTags = asset_tags};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 91d525c5510d747daa79a206efa73ee8
|
||||
timeCreated: 1472655466
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,19 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class FileAttributesTag : SwfTagBase {
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.FileAttributes; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return "FileAttributesTag.";
|
||||
}
|
||||
|
||||
public static FileAttributesTag Create(SwfStreamReader reader) {
|
||||
return new FileAttributesTag();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7799f56fc5f01418f99c69da8d177010
|
||||
timeCreated: 1457806214
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,28 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class FrameLabelTag : SwfTagBase {
|
||||
public string Name;
|
||||
public byte AnchorFlag;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.FrameLabel; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"FrameLabelTag. " +
|
||||
"Name: {0}, AnchorFlag: {1}",
|
||||
Name, AnchorFlag);
|
||||
}
|
||||
|
||||
public static FrameLabelTag Create(SwfStreamReader reader) {
|
||||
var tag = new FrameLabelTag();
|
||||
tag.Name = reader.ReadString();
|
||||
tag.AnchorFlag = reader.IsEOF ? (byte)0 : reader.ReadByte();
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6324f9cc87fb24045bbc089ff54e7969
|
||||
timeCreated: 1457806085
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,25 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class MetadataTag : SwfTagBase {
|
||||
public string Metadata;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.Metadata; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"MetadataTag." +
|
||||
"Metadata: {0}",
|
||||
Metadata.Length);
|
||||
}
|
||||
|
||||
public static MetadataTag Create(SwfStreamReader reader) {
|
||||
return new MetadataTag{
|
||||
Metadata = reader.ReadString()};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc3acad5d3b2f4f6c85b645acc3ba632
|
||||
timeCreated: 1472881090
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,102 +0,0 @@
|
||||
using System.Text;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class PlaceObject2Tag : SwfTagBase {
|
||||
public bool HasClipActions;
|
||||
public bool HasClipDepth;
|
||||
public bool HasName;
|
||||
public bool HasRatio;
|
||||
public bool HasColorTransform;
|
||||
public bool HasMatrix;
|
||||
public bool HasCharacter;
|
||||
public bool Move;
|
||||
public ushort Depth;
|
||||
public ushort CharacterId;
|
||||
public SwfMatrix Matrix;
|
||||
public SwfColorTransform ColorTransform;
|
||||
public ushort Ratio;
|
||||
public string Name;
|
||||
public ushort ClipDepth;
|
||||
public SwfClipActions ClipActions;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.PlaceObject2; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
var sb = new StringBuilder(1024);
|
||||
sb.Append("PlaceObject2Tag. ");
|
||||
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}", ClipActions);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public static PlaceObject2Tag Create(SwfStreamReader reader) {
|
||||
var tag = new PlaceObject2Tag();
|
||||
tag.HasClipActions = reader.ReadBit();
|
||||
tag.HasClipDepth = reader.ReadBit();
|
||||
tag.HasName = reader.ReadBit();
|
||||
tag.HasRatio = reader.ReadBit();
|
||||
tag.HasColorTransform = reader.ReadBit();
|
||||
tag.HasMatrix = reader.ReadBit();
|
||||
tag.HasCharacter = reader.ReadBit();
|
||||
tag.Move = reader.ReadBit();
|
||||
tag.Depth = reader.ReadUInt16();
|
||||
|
||||
tag.CharacterId = tag.HasCharacter
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.Matrix = tag.HasMatrix
|
||||
? SwfMatrix.Read(reader, false)
|
||||
: SwfMatrix.identity;
|
||||
|
||||
tag.ColorTransform = tag.HasColorTransform
|
||||
? SwfColorTransform.Read(reader, true)
|
||||
: SwfColorTransform.identity;
|
||||
|
||||
tag.Ratio = tag.HasRatio
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.Name = tag.HasName
|
||||
? reader.ReadString()
|
||||
: string.Empty;
|
||||
|
||||
tag.ClipDepth = tag.HasClipDepth
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.ClipActions = tag.HasClipActions
|
||||
? SwfClipActions.Read(reader)
|
||||
: SwfClipActions.identity;
|
||||
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b1fd75a14bb004dcbaf692b2cf9b7498
|
||||
timeCreated: 1457806017
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,159 +0,0 @@
|
||||
using System.Text;
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class PlaceObject3Tag : SwfTagBase {
|
||||
public bool HasClipActions;
|
||||
public bool HasClipDepth;
|
||||
public bool HasName;
|
||||
public bool HasRatio;
|
||||
public bool HasColorTransform;
|
||||
public bool HasMatrix;
|
||||
public bool HasCharacter;
|
||||
public bool Move;
|
||||
public bool OpaqueBackground;
|
||||
public bool HasVisible;
|
||||
public bool HasImage;
|
||||
public bool HasClassName;
|
||||
public bool HasCacheAsBitmap;
|
||||
public bool HasBlendMode;
|
||||
public bool HasFilterList;
|
||||
public ushort Depth;
|
||||
public string ClassName;
|
||||
public ushort CharacterId;
|
||||
public SwfMatrix Matrix;
|
||||
public SwfColorTransform ColorTransform;
|
||||
public ushort Ratio;
|
||||
public string Name;
|
||||
public ushort ClipDepth;
|
||||
public SwfSurfaceFilters SurfaceFilters;
|
||||
public SwfBlendMode BlendMode;
|
||||
public bool BitmapCache;
|
||||
public bool Visible;
|
||||
public SwfColor BackgroundColor;
|
||||
public SwfClipActions ClipActions;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.PlaceObject3; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
var sb = new StringBuilder(1024);
|
||||
sb.Append("PlaceObject3Tag. ");
|
||||
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 ( HasFilterList ) {
|
||||
sb.AppendFormat(", SurfaceFilters: {0}", SurfaceFilters);
|
||||
}
|
||||
if ( HasBlendMode ) {
|
||||
sb.AppendFormat(", BlendMode: {0}", BlendMode);
|
||||
}
|
||||
if ( HasCacheAsBitmap ) {
|
||||
sb.AppendFormat(", BitmapCache: {0}", BitmapCache);
|
||||
}
|
||||
if ( HasVisible ) {
|
||||
sb.AppendFormat(", Visible: {0}", Visible);
|
||||
}
|
||||
if ( HasClipActions ) {
|
||||
sb.AppendFormat(", ClipActions: {0}", ClipActions);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public static PlaceObject3Tag Create(SwfStreamReader reader) {
|
||||
var tag = new PlaceObject3Tag();
|
||||
tag.HasClipActions = reader.ReadBit();
|
||||
tag.HasClipDepth = reader.ReadBit();
|
||||
tag.HasName = reader.ReadBit();
|
||||
tag.HasRatio = reader.ReadBit();
|
||||
tag.HasColorTransform = reader.ReadBit();
|
||||
tag.HasMatrix = reader.ReadBit();
|
||||
tag.HasCharacter = reader.ReadBit();
|
||||
tag.Move = reader.ReadBit();
|
||||
reader.ReadBit(); // reserved
|
||||
tag.OpaqueBackground = reader.ReadBit();
|
||||
tag.HasVisible = reader.ReadBit();
|
||||
tag.HasImage = reader.ReadBit();
|
||||
tag.HasClassName = reader.ReadBit();
|
||||
tag.HasCacheAsBitmap = reader.ReadBit();
|
||||
tag.HasBlendMode = reader.ReadBit();
|
||||
tag.HasFilterList = reader.ReadBit();
|
||||
tag.Depth = reader.ReadUInt16();
|
||||
|
||||
tag.ClassName = (tag.HasClassName || (tag.HasImage && tag.HasCharacter))
|
||||
? reader.ReadString()
|
||||
: string.Empty;
|
||||
|
||||
tag.CharacterId = tag.HasCharacter
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.Matrix = tag.HasMatrix
|
||||
? SwfMatrix.Read(reader, false)
|
||||
: SwfMatrix.identity;
|
||||
|
||||
tag.ColorTransform = tag.HasColorTransform
|
||||
? SwfColorTransform.Read(reader, true)
|
||||
: SwfColorTransform.identity;
|
||||
|
||||
tag.Ratio = tag.HasRatio
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.Name = tag.HasName
|
||||
? reader.ReadString()
|
||||
: string.Empty;
|
||||
|
||||
tag.ClipDepth = tag.HasClipDepth
|
||||
? reader.ReadUInt16()
|
||||
: (ushort)0;
|
||||
|
||||
tag.SurfaceFilters = tag.HasFilterList
|
||||
? SwfSurfaceFilters.Read(reader)
|
||||
: SwfSurfaceFilters.identity;
|
||||
|
||||
tag.BlendMode = tag.HasBlendMode
|
||||
? SwfBlendMode.Read(reader)
|
||||
: SwfBlendMode.identity;
|
||||
|
||||
tag.BitmapCache = tag.HasCacheAsBitmap
|
||||
? (0 != reader.ReadByte())
|
||||
: false;
|
||||
|
||||
tag.Visible = tag.HasVisible && !reader.IsEOF
|
||||
? (0 != reader.ReadByte())
|
||||
: true;
|
||||
|
||||
tag.BackgroundColor = tag.HasVisible && !reader.IsEOF
|
||||
? SwfColor.Read(reader, true)
|
||||
: SwfColor.identity;
|
||||
|
||||
tag.ClipActions = tag.HasClipActions && !reader.IsEOF
|
||||
? SwfClipActions.Read(reader)
|
||||
: SwfClipActions.identity;
|
||||
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f0b85321c9e164303a2fb2a6106f6699
|
||||
timeCreated: 1457806030
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,36 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class PlaceObjectTag : SwfTagBase {
|
||||
public ushort CharacterId;
|
||||
public ushort Depth;
|
||||
public SwfMatrix Matrix;
|
||||
public SwfColorTransform ColorTransform;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.PlaceObject; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"PlaceObjectTag. " +
|
||||
"CharacterId: {0}, Depth: {1}, Matrix: {2}, ColorTransform: {3}",
|
||||
CharacterId, Depth, Matrix, ColorTransform);
|
||||
}
|
||||
|
||||
public static PlaceObjectTag Create(SwfStreamReader reader) {
|
||||
var tag = new PlaceObjectTag();
|
||||
tag.CharacterId = reader.ReadUInt16();
|
||||
tag.Depth = reader.ReadUInt16();
|
||||
tag.Matrix = SwfMatrix.Read(reader, false);
|
||||
tag.ColorTransform = reader.IsEOF
|
||||
? SwfColorTransform.identity
|
||||
: SwfColorTransform.Read(reader, false);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ba536e4ee6b3848948e7208a1cefefdf
|
||||
timeCreated: 1457806006
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,28 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class ProtectTag : SwfTagBase {
|
||||
public string MD5Password;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.Protect; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"ProtectTag." +
|
||||
"MD5Password: {0}",
|
||||
MD5Password);
|
||||
}
|
||||
|
||||
public static ProtectTag Create(SwfStreamReader reader) {
|
||||
var md5_password = reader.IsEOF
|
||||
? string.Empty
|
||||
: reader.ReadString();
|
||||
return new ProtectTag{
|
||||
MD5Password = md5_password};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20eb1ce1437f24232afac6c8d35d11ef
|
||||
timeCreated: 1472880066
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,25 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class RemoveObject2Tag : SwfTagBase {
|
||||
public ushort Depth;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.RemoveObject2; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"RemoveObject2Tag. " +
|
||||
"Depth: {0}",
|
||||
Depth);
|
||||
}
|
||||
|
||||
public static RemoveObject2Tag Create(SwfStreamReader reader) {
|
||||
return new RemoveObject2Tag{
|
||||
Depth = reader.ReadUInt16()};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 50a3f4c3646154192b0c4dcb40b315b3
|
||||
timeCreated: 1457806055
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,27 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class RemoveObjectTag : SwfTagBase {
|
||||
public ushort CharacterId;
|
||||
public ushort Depth;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.RemoveObject; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"RemoveObjectTag. " +
|
||||
"CharacterId: {0}, Depth: {1}",
|
||||
CharacterId, Depth);
|
||||
}
|
||||
|
||||
public static RemoveObjectTag Create(SwfStreamReader reader) {
|
||||
return new RemoveObjectTag{
|
||||
CharacterId = reader.ReadUInt16(),
|
||||
Depth = reader.ReadUInt16()};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a66815e233fed447f8319dd343167b2e
|
||||
timeCreated: 1457806046
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,27 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class ScriptLimitsTag : SwfTagBase {
|
||||
public ushort MaxRecursionDepth;
|
||||
public ushort ScriptTimeoutSeconds;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.ScriptLimits; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"ScriptLimitsTag. " +
|
||||
"MaxRecursionDepth: {0}, ScriptTimeoutSeconds: {1}",
|
||||
MaxRecursionDepth, ScriptTimeoutSeconds);
|
||||
}
|
||||
|
||||
public static ScriptLimitsTag Create(SwfStreamReader reader) {
|
||||
return new ScriptLimitsTag{
|
||||
MaxRecursionDepth = reader.ReadUInt16(),
|
||||
ScriptTimeoutSeconds = reader.ReadUInt16()};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e2d082e1df494a31acef10d5e90be69
|
||||
timeCreated: 1472880814
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,27 +0,0 @@
|
||||
using FlashTools.Internal.SwfTools.SwfTypes;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class SetBackgroundColorTag : SwfTagBase {
|
||||
public SwfColor BackgroundColor;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.SetBackgroundColor; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SetBackgroundColorTag. " +
|
||||
"BackgroundColor: {0}",
|
||||
BackgroundColor);
|
||||
}
|
||||
|
||||
public static SetBackgroundColorTag Create(SwfStreamReader reader) {
|
||||
return new SetBackgroundColorTag{
|
||||
BackgroundColor = SwfColor.Read(reader, false)};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ba6ee247270a4e2582be095c59f59bf
|
||||
timeCreated: 1457806076
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,19 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class ShowFrameTag : SwfTagBase {
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.ShowFrame; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return "ShowFrameTag.";
|
||||
}
|
||||
|
||||
public static ShowFrameTag Create(SwfStreamReader reader) {
|
||||
return new ShowFrameTag();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06e82bd9e78964590b8b35dbe6ca47c0
|
||||
timeCreated: 1457806067
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,215 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public enum SwfTagType {
|
||||
// -----------------------------
|
||||
// Display list
|
||||
// -----------------------------
|
||||
|
||||
PlaceObject = 4,
|
||||
PlaceObject2 = 26,
|
||||
PlaceObject3 = 70,
|
||||
RemoveObject = 5,
|
||||
RemoveObject2 = 28,
|
||||
ShowFrame = 1,
|
||||
|
||||
// -----------------------------
|
||||
// Control
|
||||
// -----------------------------
|
||||
|
||||
SetBackgroundColor = 9,
|
||||
FrameLabel = 43,
|
||||
Protect = 24,
|
||||
End = 0,
|
||||
ExportAssets = 56,
|
||||
ImportAssets = 57, // Unsupported
|
||||
EnableDebugger = 58,
|
||||
EnableDebugger2 = 64,
|
||||
ScriptLimits = 65,
|
||||
SetTabIndex = 66, // Unsupported
|
||||
ImportAssets2 = 71, // Unsupported
|
||||
SymbolClass = 76,
|
||||
Metadata = 77,
|
||||
DefineScalingGrid = 78, // Unsupported
|
||||
DefineSceneAndFrameLabelData = 86,
|
||||
|
||||
// -----------------------------
|
||||
// Actions
|
||||
// -----------------------------
|
||||
|
||||
DoAction = 12, // Unsupported
|
||||
DoInitAction = 59, // Unsupported
|
||||
DoABC = 82,
|
||||
|
||||
// -----------------------------
|
||||
// Shape
|
||||
// -----------------------------
|
||||
|
||||
DefineShape = 2,
|
||||
DefineShape2 = 22,
|
||||
DefineShape3 = 32,
|
||||
DefineShape4 = 83,
|
||||
|
||||
// -----------------------------
|
||||
// Bitmaps
|
||||
// -----------------------------
|
||||
|
||||
DefineBits = 6, // Unsupported
|
||||
JPEGTables = 8, // Unsupported
|
||||
DefineBitsJPEG2 = 21, // Unsupported
|
||||
DefineBitsJPEG3 = 35, // Unsupported
|
||||
DefineBitsLossless = 20,
|
||||
DefineBitsLossless2 = 36,
|
||||
DefineBitsJPEG4 = 90, // Unsupported
|
||||
|
||||
// -----------------------------
|
||||
// Shape Morphing
|
||||
// -----------------------------
|
||||
|
||||
DefineMorphShape = 46, // Unsupported
|
||||
DefineMorphShape2 = 84, // Unsupported
|
||||
|
||||
// -----------------------------
|
||||
// Fonts and Text
|
||||
// -----------------------------
|
||||
|
||||
//DefineFont = 10,
|
||||
//DefineFontInfo = 13,
|
||||
//DefineFontInfo2 = 62,
|
||||
//DefineFont2 = 48,
|
||||
//DefineFont3 = 75,
|
||||
//DefineFontAlignZones = 73,
|
||||
//DefineFontName = 88,
|
||||
//DefineText = 11,
|
||||
//DefineText2 = 33,
|
||||
//DefineEditText = 37,
|
||||
//CSMTextSettings = 74,
|
||||
//DefineFont4 = 91,
|
||||
|
||||
// -----------------------------
|
||||
// Sounds
|
||||
// -----------------------------
|
||||
|
||||
//DefineSound = 14,
|
||||
//StartSound = 15,
|
||||
//StartSound2 = 89,
|
||||
//SoundStreamHead = 18,
|
||||
//SoundStreamHead2 = 45,
|
||||
//SoundStreamBlock = 19,
|
||||
|
||||
// -----------------------------
|
||||
// Buttons
|
||||
// -----------------------------
|
||||
|
||||
//DefineButton = 7,
|
||||
//DefineButton2 = 34,
|
||||
//DefineButtonCxform = 23,
|
||||
//DefineButtonSound = 17,
|
||||
|
||||
// -----------------------------
|
||||
// Sprites and Movie Clips
|
||||
// -----------------------------
|
||||
|
||||
DefineSprite = 39,
|
||||
|
||||
// -----------------------------
|
||||
// Video
|
||||
// -----------------------------
|
||||
|
||||
DefineVideoStream = 60, // Unsupported
|
||||
VideoFrame = 61, // Unsupported
|
||||
|
||||
// -----------------------------
|
||||
// Metadata
|
||||
// -----------------------------
|
||||
|
||||
FileAttributes = 69,
|
||||
EnableTelemetry = 93,
|
||||
DefineBinaryData = 87,
|
||||
|
||||
// -----------------------------
|
||||
// Unknown
|
||||
// -----------------------------
|
||||
|
||||
Unknown
|
||||
}
|
||||
|
||||
public abstract class SwfTagBase {
|
||||
struct SwfTagData {
|
||||
public int TagId;
|
||||
public byte[] TagData;
|
||||
}
|
||||
|
||||
public abstract SwfTagType TagType { get; }
|
||||
public abstract TResult AcceptVistor<TArg, TResult>(
|
||||
SwfTagVisitor<TArg, TResult> visitor, TArg arg);
|
||||
|
||||
public static SwfTagBase Read(SwfStreamReader reader) {
|
||||
var type_and_size = reader.ReadUInt16();
|
||||
var tag_id = type_and_size >> 6;
|
||||
var short_size = type_and_size & 0x3f;
|
||||
var size = short_size < 0x3f ? short_size : reader.ReadInt32();
|
||||
var tag_data = reader.ReadBytes(size);
|
||||
return Create(new SwfTagData{
|
||||
TagId = tag_id,
|
||||
TagData = tag_data});
|
||||
}
|
||||
|
||||
static SwfTagBase Create(SwfTagData tag_data) {
|
||||
var reader = new SwfStreamReader(tag_data.TagData);
|
||||
switch ( tag_data.TagId ) {
|
||||
// Display list
|
||||
case (int)SwfTagType.PlaceObject: return PlaceObjectTag.Create(reader);
|
||||
case (int)SwfTagType.PlaceObject2: return PlaceObject2Tag.Create(reader);
|
||||
case (int)SwfTagType.PlaceObject3: return PlaceObject3Tag.Create(reader);
|
||||
case (int)SwfTagType.RemoveObject: return RemoveObjectTag.Create(reader);
|
||||
case (int)SwfTagType.RemoveObject2: return RemoveObject2Tag.Create(reader);
|
||||
case (int)SwfTagType.ShowFrame: return ShowFrameTag.Create(reader);
|
||||
// Control
|
||||
case (int)SwfTagType.SetBackgroundColor: return SetBackgroundColorTag.Create(reader);
|
||||
case (int)SwfTagType.FrameLabel: return FrameLabelTag.Create(reader);
|
||||
case (int)SwfTagType.Protect: return ProtectTag.Create(reader);
|
||||
case (int)SwfTagType.End: return EndTag.Create(reader);
|
||||
case (int)SwfTagType.ExportAssets: return ExportAssetsTag.Create(reader);
|
||||
case (int)SwfTagType.ImportAssets: return UnsupportedTag.Create(SwfTagType.ImportAssets);
|
||||
case (int)SwfTagType.EnableDebugger: return EnableDebuggerTag.Create(reader);
|
||||
case (int)SwfTagType.EnableDebugger2: return EnableDebugger2Tag.Create(reader);
|
||||
case (int)SwfTagType.ScriptLimits: return ScriptLimitsTag.Create(reader);
|
||||
case (int)SwfTagType.SetTabIndex: return UnsupportedTag.Create(SwfTagType.SetTabIndex);
|
||||
case (int)SwfTagType.ImportAssets2: return UnsupportedTag.Create(SwfTagType.ImportAssets2);
|
||||
case (int)SwfTagType.SymbolClass: return SymbolClassTag.Create(reader);
|
||||
case (int)SwfTagType.Metadata: return MetadataTag.Create(reader);
|
||||
case (int)SwfTagType.DefineScalingGrid: return UnsupportedTag.Create(SwfTagType.DefineScalingGrid);
|
||||
case (int)SwfTagType.DefineSceneAndFrameLabelData: return DefineSceneAndFrameLabelDataTag.Create(reader);
|
||||
// Actions
|
||||
case (int)SwfTagType.DoAction: return UnsupportedTag.Create(SwfTagType.DoAction);
|
||||
case (int)SwfTagType.DoInitAction: return UnsupportedTag.Create(SwfTagType.DoInitAction);
|
||||
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);
|
||||
case (int)SwfTagType.DefineShape3: return DefineShape3Tag.Create(reader);
|
||||
case (int)SwfTagType.DefineShape4: return DefineShape4Tag.Create(reader);
|
||||
// Bitmaps
|
||||
case (int)SwfTagType.DefineBits: return UnsupportedTag.Create(SwfTagType.DefineBits);
|
||||
case (int)SwfTagType.JPEGTables: return UnsupportedTag.Create(SwfTagType.JPEGTables);
|
||||
case (int)SwfTagType.DefineBitsJPEG2: return UnsupportedTag.Create(SwfTagType.DefineBitsJPEG2);
|
||||
case (int)SwfTagType.DefineBitsJPEG3: return UnsupportedTag.Create(SwfTagType.DefineBitsJPEG3);
|
||||
case (int)SwfTagType.DefineBitsLossless: return DefineBitsLosslessTag.Create(reader);
|
||||
case (int)SwfTagType.DefineBitsLossless2: return DefineBitsLossless2Tag.Create(reader);
|
||||
case (int)SwfTagType.DefineBitsJPEG4: return UnsupportedTag.Create(SwfTagType.DefineBitsJPEG4);
|
||||
// Shape Morphing
|
||||
case (int)SwfTagType.DefineMorphShape: return UnsupportedTag.Create(SwfTagType.DefineMorphShape);
|
||||
case (int)SwfTagType.DefineMorphShape2: return UnsupportedTag.Create(SwfTagType.DefineMorphShape2);
|
||||
// Sprites and Movie Clips
|
||||
case (int)SwfTagType.DefineSprite: return DefineSpriteTag.Create(reader);
|
||||
// Video
|
||||
case (int)SwfTagType.DefineVideoStream: return UnsupportedTag.Create(SwfTagType.DefineVideoStream);
|
||||
case (int)SwfTagType.VideoFrame: return UnsupportedTag.Create(SwfTagType.VideoFrame);
|
||||
// Metadata
|
||||
case (int)SwfTagType.FileAttributes: return FileAttributesTag.Create(reader);
|
||||
case (int)SwfTagType.EnableTelemetry: return EnableTelemetryTag.Create(reader);
|
||||
case (int)SwfTagType.DefineBinaryData: return DefineBinaryDataTag.Create(reader);
|
||||
default: return UnknownTag.Create(tag_data.TagId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc12052cbac15441bb21840c82f5ebbc
|
||||
timeCreated: 1457805979
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,34 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public interface SwfTagVisitor<TArg, TResult> {
|
||||
TResult Visit(PlaceObjectTag tag, TArg arg);
|
||||
TResult Visit(PlaceObject2Tag tag, TArg arg);
|
||||
TResult Visit(PlaceObject3Tag tag, TArg arg);
|
||||
TResult Visit(RemoveObjectTag tag, TArg arg);
|
||||
TResult Visit(RemoveObject2Tag tag, TArg arg);
|
||||
TResult Visit(ShowFrameTag tag, TArg arg);
|
||||
TResult Visit(SetBackgroundColorTag tag, TArg arg);
|
||||
TResult Visit(FrameLabelTag tag, TArg arg);
|
||||
TResult Visit(ProtectTag tag, TArg arg);
|
||||
TResult Visit(EndTag tag, TArg arg);
|
||||
TResult Visit(ExportAssetsTag tag, TArg arg);
|
||||
TResult Visit(EnableDebuggerTag tag, TArg arg);
|
||||
TResult Visit(EnableDebugger2Tag tag, TArg arg);
|
||||
TResult Visit(ScriptLimitsTag tag, TArg arg);
|
||||
TResult Visit(SymbolClassTag tag, TArg arg);
|
||||
TResult Visit(MetadataTag 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);
|
||||
TResult Visit(DefineShape4Tag tag, TArg arg);
|
||||
TResult Visit(DefineBitsLosslessTag tag, TArg arg);
|
||||
TResult Visit(DefineBitsLossless2Tag tag, TArg arg);
|
||||
TResult Visit(DefineSpriteTag tag, TArg arg);
|
||||
TResult Visit(FileAttributesTag tag, TArg arg);
|
||||
TResult Visit(EnableTelemetryTag tag, TArg arg);
|
||||
TResult Visit(DefineBinaryDataTag tag, TArg arg);
|
||||
TResult Visit(UnknownTag tag, TArg arg);
|
||||
TResult Visit(UnsupportedTag tag, TArg arg);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a50cd5b2e4fdc4596a01180777325faa
|
||||
timeCreated: 1458065417
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,39 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class SymbolClassTag : SwfTagBase {
|
||||
public struct SymbolTagData {
|
||||
public ushort Tag;
|
||||
public string Name;
|
||||
}
|
||||
|
||||
public List<SymbolTagData> SymbolTags;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.SymbolClass; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SymbolClassTag. " +
|
||||
"SymbolTags: {0}",
|
||||
SymbolTags.Count);
|
||||
}
|
||||
|
||||
public static SymbolClassTag Create(SwfStreamReader reader) {
|
||||
var symbol_tag_count = reader.ReadUInt16();
|
||||
var symbol_tags = new List<SymbolTagData>((int)symbol_tag_count);
|
||||
for ( var i = 0; i < symbol_tag_count; ++i ) {
|
||||
symbol_tags.Add(new SymbolTagData{
|
||||
Tag = reader.ReadUInt16(),
|
||||
Name = reader.ReadString()});
|
||||
}
|
||||
return new SymbolClassTag{
|
||||
SymbolTags = symbol_tags};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc9919be0498b49659aa77f6da045eb9
|
||||
timeCreated: 1472654295
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,29 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class UnknownTag : SwfTagBase {
|
||||
public int _tagId;
|
||||
|
||||
public int TagId {
|
||||
get { return _tagId; }
|
||||
}
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return SwfTagType.Unknown; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"UnknownTag. " +
|
||||
"TagId: {0}",
|
||||
TagId);
|
||||
}
|
||||
|
||||
public static UnknownTag Create(int tag_id) {
|
||||
return new UnknownTag{
|
||||
_tagId = tag_id};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15edc6d79a7fc4bbcb127dd779a0bc13
|
||||
timeCreated: 1457806224
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,24 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTags {
|
||||
public class UnsupportedTag : SwfTagBase {
|
||||
SwfTagType _tagType;
|
||||
|
||||
public override SwfTagType TagType {
|
||||
get { return _tagType; }
|
||||
}
|
||||
|
||||
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
|
||||
return visitor.Visit(this, arg);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"{0}. Unsupported tag!",
|
||||
TagType);
|
||||
}
|
||||
|
||||
public static UnsupportedTag Create(SwfTagType tag_type) {
|
||||
return new UnsupportedTag{
|
||||
_tagType = tag_type};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd477bfe9657d4fdfad37644ef25c1c6
|
||||
timeCreated: 1471528636
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,9 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6e637f9f090c4acbb2fecefe412c91c
|
||||
folderAsset: yes
|
||||
timeCreated: 1457881315
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,97 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfBlendMode {
|
||||
public enum Mode {
|
||||
Normal, // +
|
||||
Layer, // +
|
||||
Multiply, // +
|
||||
Screen, // +
|
||||
Lighten, // +
|
||||
Darken, // +
|
||||
Difference, // +
|
||||
Add, // +
|
||||
Subtract, // +
|
||||
Invert, // +
|
||||
Alpha, // -
|
||||
Erase, // -
|
||||
Overlay, // +
|
||||
Hardlight // +
|
||||
}
|
||||
public Mode Value;
|
||||
|
||||
public static SwfBlendMode identity {
|
||||
get {
|
||||
return new SwfBlendMode{
|
||||
Value = Mode.Normal};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfBlendMode Read(SwfStreamReader reader) {
|
||||
var mode_id = reader.ReadByte();
|
||||
return new SwfBlendMode{
|
||||
Value = ModeFromByte(mode_id)};
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfBlendMode. Mode: {0}",
|
||||
Value);
|
||||
}
|
||||
|
||||
public SwfBlendModeData ToBlendModeData() {
|
||||
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:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Screen);
|
||||
case Mode.Lighten:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Lighten);
|
||||
case Mode.Darken:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Darken);
|
||||
case Mode.Difference:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Difference);
|
||||
case Mode.Add:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Add);
|
||||
case Mode.Subtract:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Subtract);
|
||||
case Mode.Invert:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Invert);
|
||||
case Mode.Hardlight:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Hardlight);
|
||||
default:
|
||||
Debug.LogWarningFormat(
|
||||
"<b>[FlashTools]</b> SwfBlendMode. Unsupported blend mode '{0}'",
|
||||
Value);
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
|
||||
}
|
||||
}
|
||||
|
||||
static Mode ModeFromByte(byte mode_id) {
|
||||
switch ( mode_id ) {
|
||||
case 0: // Mode.Normal too
|
||||
case 1: return Mode.Normal;
|
||||
case 2: return Mode.Layer;
|
||||
case 3: return Mode.Multiply;
|
||||
case 4: return Mode.Screen;
|
||||
case 5: return Mode.Lighten;
|
||||
case 6: return Mode.Darken;
|
||||
case 7: return Mode.Difference;
|
||||
case 8: return Mode.Add;
|
||||
case 9: return Mode.Subtract;
|
||||
case 10: return Mode.Invert;
|
||||
case 11: return Mode.Alpha;
|
||||
case 12: return Mode.Erase;
|
||||
case 13: return Mode.Overlay;
|
||||
case 14: return Mode.Hardlight;
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"Incorrect blend mode id: {0}", mode_id));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f87ec74e6af540748af80d4a1cc1b49
|
||||
timeCreated: 1457882212
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,19 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfClipActions {
|
||||
public static SwfClipActions identity {
|
||||
get {
|
||||
return new SwfClipActions();
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfClipActions Read(SwfStreamReader reader) {
|
||||
throw new UnityException("Clip actions is unsupported");
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return "SwfClipActions.";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1daabaaa9d07a4d9184fe8dd1928803f
|
||||
timeCreated: 1457881505
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,38 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfColor {
|
||||
public byte R;
|
||||
public byte G;
|
||||
public byte B;
|
||||
public byte A;
|
||||
|
||||
public static SwfColor identity {
|
||||
get {
|
||||
return new SwfColor {
|
||||
R = byte.MaxValue,
|
||||
G = byte.MaxValue,
|
||||
B = byte.MaxValue,
|
||||
A = byte.MaxValue};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfColor Read(SwfStreamReader reader, bool with_alpha) {
|
||||
var r = reader.ReadByte();
|
||||
var g = reader.ReadByte();
|
||||
var b = reader.ReadByte();
|
||||
var a = with_alpha ? reader.ReadByte() : byte.MaxValue;
|
||||
return new SwfColor{
|
||||
R = r,
|
||||
G = g,
|
||||
B = b,
|
||||
A = a};
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfColor. R: {0}, G: {1}, B: {2}, A: {3}",
|
||||
R, G, B, A);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3bdf80e6c1ea34969a12400fa1a4a03b
|
||||
timeCreated: 1457881354
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,81 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfColorTransform {
|
||||
public short RMul;
|
||||
public short GMul;
|
||||
public short BMul;
|
||||
public short AMul;
|
||||
public bool HasMul;
|
||||
public short RAdd;
|
||||
public short GAdd;
|
||||
public short BAdd;
|
||||
public short AAdd;
|
||||
public bool HasAdd;
|
||||
|
||||
public static SwfColorTransform identity {
|
||||
get {
|
||||
return new SwfColorTransform {
|
||||
RMul = byte.MaxValue,
|
||||
GMul = byte.MaxValue,
|
||||
BMul = byte.MaxValue,
|
||||
AMul = byte.MaxValue,
|
||||
HasMul = false,
|
||||
RAdd = 0,
|
||||
GAdd = 0,
|
||||
BAdd = 0,
|
||||
AAdd = 0,
|
||||
HasAdd = false};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfColorTransform Read(SwfStreamReader reader, bool with_alpha) {
|
||||
var transform = SwfColorTransform.identity;
|
||||
transform.HasAdd = reader.ReadBit();
|
||||
transform.HasMul = reader.ReadBit();
|
||||
var bits = reader.ReadUnsignedBits(4);
|
||||
if ( transform.HasMul ) {
|
||||
transform.RMul = (short)reader.ReadSignedBits(bits);
|
||||
transform.GMul = (short)reader.ReadSignedBits(bits);
|
||||
transform.BMul = (short)reader.ReadSignedBits(bits);
|
||||
transform.AMul = with_alpha ? (short)reader.ReadSignedBits(bits) : byte.MaxValue;
|
||||
}
|
||||
if ( transform.HasAdd ) {
|
||||
transform.RAdd = (short)reader.ReadSignedBits(bits);
|
||||
transform.GAdd = (short)reader.ReadSignedBits(bits);
|
||||
transform.BAdd = (short)reader.ReadSignedBits(bits);
|
||||
transform.AAdd = with_alpha ? (short)reader.ReadSignedBits(bits) : (short)0;
|
||||
}
|
||||
reader.AlignToByte();
|
||||
return transform;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfColorTransform. " +
|
||||
"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);
|
||||
}
|
||||
|
||||
public SwfColorTransData ToColorTransData() {
|
||||
var trans = SwfColorTransData.identity;
|
||||
if ( HasAdd ) {
|
||||
trans.addColor = new SwfVec4Data(
|
||||
RAdd / 256.0f,
|
||||
GAdd / 256.0f,
|
||||
BAdd / 256.0f,
|
||||
AAdd / 256.0f);
|
||||
}
|
||||
if ( HasMul ) {
|
||||
trans.mulColor = new SwfVec4Data(
|
||||
RMul / 256.0f,
|
||||
GMul / 256.0f,
|
||||
BMul / 256.0f,
|
||||
AMul / 256.0f);
|
||||
}
|
||||
return trans;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f85807ea0dc87404983006ba9b04ebb7
|
||||
timeCreated: 1457881474
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,33 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using FlashTools.Internal.SwfTools.SwfTags;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfControlTags {
|
||||
public List<SwfTagBase> Tags;
|
||||
|
||||
public static SwfControlTags identity {
|
||||
get {
|
||||
return new SwfControlTags {
|
||||
Tags = new List<SwfTagBase>()};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfControlTags Read(SwfStreamReader reader) {
|
||||
var control_tags = SwfControlTags.identity;
|
||||
while ( true ) {
|
||||
var tag = SwfTagBase.Read(reader);
|
||||
if ( tag.TagType == SwfTagType.End ) {
|
||||
break;
|
||||
}
|
||||
control_tags.Tags.Add(tag);
|
||||
}
|
||||
return control_tags;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfControlTags. Tags: {0}",
|
||||
Tags.Count);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 904b18edf65b7485fb93fdeec65e93d3
|
||||
timeCreated: 1457881525
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,73 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfFillStyleType {
|
||||
public enum Type {
|
||||
SolidColor,
|
||||
LinearGradient,
|
||||
RadialGradient,
|
||||
FocalGradient,
|
||||
RepeatingBitmap,
|
||||
ClippedBitmap,
|
||||
NonSmoothedRepeatingBitmap,
|
||||
NonSmoothedClippedBitmap
|
||||
}
|
||||
public Type Value;
|
||||
|
||||
public static SwfFillStyleType identity {
|
||||
get {
|
||||
return new SwfFillStyleType{
|
||||
Value = Type.SolidColor};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfFillStyleType Read(SwfStreamReader reader) {
|
||||
var type_id = reader.ReadByte();
|
||||
return new SwfFillStyleType{
|
||||
Value = TypeFromByte(type_id)};
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfFillStyleType. Type: {0}",
|
||||
Value);
|
||||
}
|
||||
|
||||
public bool IsSolidType {
|
||||
get { return Value == Type.SolidColor; }
|
||||
}
|
||||
|
||||
public bool IsBitmapType {
|
||||
get { return
|
||||
Value == Type.RepeatingBitmap ||
|
||||
Value == Type.ClippedBitmap ||
|
||||
Value == Type.NonSmoothedRepeatingBitmap ||
|
||||
Value == Type.NonSmoothedClippedBitmap;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsGradientType {
|
||||
get { return
|
||||
Value == Type.LinearGradient ||
|
||||
Value == Type.RadialGradient ||
|
||||
Value == Type.FocalGradient;
|
||||
}
|
||||
}
|
||||
|
||||
static Type TypeFromByte(byte type_id) {
|
||||
switch ( type_id ) {
|
||||
case 0x00: return Type.SolidColor;
|
||||
case 0x10: return Type.LinearGradient;
|
||||
case 0x12: return Type.RadialGradient;
|
||||
case 0x13: return Type.FocalGradient;
|
||||
case 0x40: return Type.RepeatingBitmap;
|
||||
case 0x41: return Type.ClippedBitmap;
|
||||
case 0x42: return Type.NonSmoothedRepeatingBitmap;
|
||||
case 0x43: return Type.NonSmoothedClippedBitmap;
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"Incorrect fill stype type id: {0}", type_id));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 392129356a8e143989e89d24bb52060e
|
||||
timeCreated: 1457976003
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,26 +0,0 @@
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfLongHeader {
|
||||
public SwfShortHeader ShortHeader;
|
||||
public SwfRect FrameSize;
|
||||
public float FrameRate;
|
||||
public ushort FrameCount;
|
||||
|
||||
public static SwfLongHeader Read(SwfStreamReader reader) {
|
||||
var header = new SwfLongHeader();
|
||||
header.ShortHeader = SwfShortHeader.Read(reader);
|
||||
header.FrameSize = SwfRect.Read(reader);
|
||||
header.FrameRate = reader.ReadFixedPoint_8_8();
|
||||
header.FrameCount = reader.ReadUInt16();
|
||||
return header;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfLongHeader. " +
|
||||
"Format: {0}, Version: {1}, FileLength: {2}, " +
|
||||
"FrameSize: {3}, FrameRate: {4}, FrameCount: {5}",
|
||||
ShortHeader.Format, ShortHeader.Version, ShortHeader.FileLength,
|
||||
FrameSize, FrameRate, FrameCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b6ee0fe9207424e20a8f928a9d72df91
|
||||
timeCreated: 1457881396
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,73 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfMatrix {
|
||||
public float ScaleX;
|
||||
public float ScaleY;
|
||||
public float RotateSkew0;
|
||||
public float RotateSkew1;
|
||||
public float TranslateX;
|
||||
public float TranslateY;
|
||||
|
||||
public static SwfMatrix identity {
|
||||
get {
|
||||
return new SwfMatrix {
|
||||
ScaleX = 1,
|
||||
ScaleY = 1,
|
||||
RotateSkew0 = 0,
|
||||
RotateSkew1 = 0,
|
||||
TranslateX = 0,
|
||||
TranslateY = 0};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfMatrix Read(SwfStreamReader reader, bool fill_style) {
|
||||
var matrix = SwfMatrix.identity;
|
||||
var has_scale = reader.ReadBit();
|
||||
if ( has_scale ) {
|
||||
var bits = (byte)reader.ReadUnsignedBits(5);
|
||||
matrix.ScaleX = reader.ReadFixedPoint16(bits);
|
||||
matrix.ScaleY = reader.ReadFixedPoint16(bits);
|
||||
} else {
|
||||
matrix.ScaleX =
|
||||
matrix.ScaleY = 1.0f;
|
||||
}
|
||||
var has_rotate = reader.ReadBit();
|
||||
if ( has_rotate ) {
|
||||
var bits = (byte)reader.ReadUnsignedBits(5);
|
||||
matrix.RotateSkew0 = reader.ReadFixedPoint16(bits);
|
||||
matrix.RotateSkew1 = reader.ReadFixedPoint16(bits);
|
||||
} else {
|
||||
matrix.RotateSkew0 =
|
||||
matrix.RotateSkew1 = 0.0f;
|
||||
}
|
||||
var translate_bits = (byte)reader.ReadUnsignedBits(5);
|
||||
matrix.TranslateX = reader.ReadSignedBits(translate_bits) / 20.0f;
|
||||
matrix.TranslateY = reader.ReadSignedBits(translate_bits) / 20.0f;
|
||||
reader.AlignToByte();
|
||||
return matrix;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfMatrix. " +
|
||||
"ScaleX: {0}, ScaleY: {1}, " +
|
||||
"RotateSkew0: {2}, RotateSkew1: {3}, " +
|
||||
"TranslateX: {4}, TranslateY: {5}",
|
||||
ScaleX, ScaleY,
|
||||
RotateSkew0, RotateSkew1,
|
||||
TranslateX, TranslateY);
|
||||
}
|
||||
|
||||
public Matrix4x4 ToUMatrix() {
|
||||
var mat = Matrix4x4.identity;
|
||||
mat.m00 = ScaleX;
|
||||
mat.m10 = RotateSkew0;
|
||||
mat.m01 = RotateSkew1;
|
||||
mat.m11 = ScaleY;
|
||||
mat.m03 = TranslateX;
|
||||
mat.m13 = TranslateY;
|
||||
return mat;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0843850979784e0eb2ef2e2f7d3ef8c
|
||||
timeCreated: 1457881450
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,41 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfRect {
|
||||
public float XMin;
|
||||
public float XMax;
|
||||
public float YMin;
|
||||
public float YMax;
|
||||
|
||||
public static SwfRect identity {
|
||||
get {
|
||||
return new SwfRect{
|
||||
XMin = 0,
|
||||
XMax = 0,
|
||||
YMin = 0,
|
||||
YMax = 0};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfRect Read(SwfStreamReader reader) {
|
||||
var bits = reader.ReadUnsignedBits(5);
|
||||
var xmin = reader.ReadSignedBits(bits) / 20.0f;
|
||||
var xmax = reader.ReadSignedBits(bits) / 20.0f;
|
||||
var ymin = reader.ReadSignedBits(bits) / 20.0f;
|
||||
var ymax = reader.ReadSignedBits(bits) / 20.0f;
|
||||
reader.AlignToByte();
|
||||
return new SwfRect{
|
||||
XMin = xmin,
|
||||
XMax = xmax,
|
||||
YMin = ymin,
|
||||
YMax = ymax};
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfRect. " +
|
||||
"XMin: {0}, XMax: {1}, YMin: {2}, YMax: {3}",
|
||||
XMin, XMax, YMin, YMax);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce2e00762eae848eeab3f543b6ccd368
|
||||
timeCreated: 1457881342
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,296 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfShapesWithStyle {
|
||||
public enum ShapeStyleType {
|
||||
Shape,
|
||||
Shape2,
|
||||
Shape3,
|
||||
Shape4
|
||||
}
|
||||
|
||||
public struct FillStyle {
|
||||
public SwfFillStyleType Type;
|
||||
public ushort BitmapId;
|
||||
public SwfMatrix BitmapMatrix;
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"FillStyle. Type: {0}, BitmapId: {1}, BitmapMatrix: {2}",
|
||||
Type, BitmapId, BitmapMatrix);
|
||||
}
|
||||
}
|
||||
|
||||
public List<FillStyle> FillStyles;
|
||||
|
||||
public static SwfShapesWithStyle identity {
|
||||
get {
|
||||
return new SwfShapesWithStyle{
|
||||
FillStyles = new List<FillStyle>()};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfShapesWithStyle Read(SwfStreamReader reader, ShapeStyleType style_type) {
|
||||
var shapes = SwfShapesWithStyle.identity;
|
||||
switch ( style_type ) {
|
||||
case ShapeStyleType.Shape:
|
||||
shapes.FillStyles = ReadFillStyles(reader, false, false);
|
||||
SkipLineStyles(reader, false, false, false);
|
||||
ReadShapeRecords(reader, shapes.FillStyles, false, false, false);
|
||||
break;
|
||||
case ShapeStyleType.Shape2:
|
||||
shapes.FillStyles = ReadFillStyles(reader, true, false);
|
||||
SkipLineStyles(reader, true, false, false);
|
||||
ReadShapeRecords(reader, shapes.FillStyles, true, false, false);
|
||||
break;
|
||||
case ShapeStyleType.Shape3:
|
||||
shapes.FillStyles = ReadFillStyles(reader, true, true);
|
||||
SkipLineStyles(reader, true, true, false);
|
||||
ReadShapeRecords(reader, shapes.FillStyles, true, true, false);
|
||||
break;
|
||||
case ShapeStyleType.Shape4:
|
||||
shapes.FillStyles = ReadFillStyles(reader, true, true);
|
||||
SkipLineStyles(reader, true, true, true);
|
||||
ReadShapeRecords(reader, shapes.FillStyles, true, true, true);
|
||||
break;
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"Unsupported ShapeStyleType: {0}", style_type));
|
||||
}
|
||||
return shapes;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfShapesWithStyle. FillStyles: {0}",
|
||||
FillStyles.Count);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// FillStyles
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static List<FillStyle> ReadFillStyles(
|
||||
SwfStreamReader reader, bool allow_big_array, bool with_alpha)
|
||||
{
|
||||
ushort count = reader.ReadByte();
|
||||
if ( allow_big_array && count == 255 ) {
|
||||
count = reader.ReadUInt16();
|
||||
}
|
||||
var styles = new List<FillStyle>(count);
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
styles.Add(ReadFillStyle(reader, with_alpha));
|
||||
}
|
||||
return styles;
|
||||
}
|
||||
|
||||
// -----------------------------
|
||||
// FillStyle
|
||||
// -----------------------------
|
||||
|
||||
static FillStyle ReadFillStyle(SwfStreamReader reader, bool with_alpha) {
|
||||
var fill_style = new FillStyle();
|
||||
fill_style.Type = SwfFillStyleType.Read(reader);
|
||||
if ( fill_style.Type.IsSolidType ) {
|
||||
SwfColor.Read(reader, with_alpha);
|
||||
}
|
||||
if ( fill_style.Type.IsGradientType ) {
|
||||
SwfMatrix.Read(reader, true); // GradientMatrix
|
||||
switch ( fill_style.Type.Value ) {
|
||||
case SwfFillStyleType.Type.LinearGradient:
|
||||
case SwfFillStyleType.Type.RadialGradient:
|
||||
SkipGradient(reader, with_alpha); // Gradient
|
||||
break;
|
||||
case SwfFillStyleType.Type.FocalGradient:
|
||||
SkipFocalGradient(reader, with_alpha); // FocalGradient
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( fill_style.Type.IsBitmapType ) {
|
||||
fill_style.BitmapId = reader.ReadUInt16();
|
||||
fill_style.BitmapMatrix = SwfMatrix.Read(reader, true);
|
||||
} else {
|
||||
Debug.LogError(
|
||||
"<b>[FlashTools]</b> Imported .swf file contains vector graphics. " +
|
||||
"You should use Tools/FlashExport.jsfl script for prepare .fla file");
|
||||
}
|
||||
return fill_style;
|
||||
}
|
||||
|
||||
// -----------------------------
|
||||
// Gradient
|
||||
// -----------------------------
|
||||
|
||||
static void SkipGradient(SwfStreamReader reader, bool with_alpha) {
|
||||
reader.ReadUnsignedBits(2); // SpreadMode
|
||||
reader.ReadUnsignedBits(2); // InterpolationMode
|
||||
var count = reader.ReadUnsignedBits(4);
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
reader.ReadByte(); // Ratio
|
||||
SwfColor.Read(reader, with_alpha);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------
|
||||
// FocalGradient
|
||||
// -----------------------------
|
||||
|
||||
static void SkipFocalGradient(SwfStreamReader reader, bool with_alpha) {
|
||||
reader.ReadUnsignedBits(2); // SpreadMode
|
||||
reader.ReadUnsignedBits(2); // InterpolationMode
|
||||
var count = reader.ReadUnsignedBits(4);
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
reader.ReadByte(); // Ratio
|
||||
SwfColor.Read(reader, with_alpha);
|
||||
}
|
||||
reader.ReadFixedPoint_8_8(); // FocalPoint
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// LineStyles
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static void SkipLineStyles(
|
||||
SwfStreamReader reader, bool allow_big_array, bool with_alpha, bool line2_type)
|
||||
{
|
||||
ushort count = reader.ReadByte();
|
||||
if ( allow_big_array && count == 255 ) {
|
||||
count = reader.ReadUInt16();
|
||||
}
|
||||
for ( var i = 0; i < count; ++i ) {
|
||||
if ( line2_type ) {
|
||||
SkipLine2Style(reader);
|
||||
} else {
|
||||
SkipLineStyle(reader, with_alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------
|
||||
// LineStyles
|
||||
// -----------------------------
|
||||
|
||||
static void SkipLineStyle(SwfStreamReader reader, bool with_alpha) {
|
||||
reader.ReadUInt16(); // Width
|
||||
SwfColor.Read(reader, with_alpha);
|
||||
}
|
||||
|
||||
static void SkipLine2Style(SwfStreamReader reader) {
|
||||
reader.ReadUInt16(); // Width
|
||||
reader.ReadUnsignedBits(2); // StartCapStyle
|
||||
var join_style = reader.ReadUnsignedBits(2);
|
||||
var has_fill_flag = reader.ReadBit();
|
||||
reader.ReadBit(); // NoHScaleFlag
|
||||
reader.ReadBit(); // NoVScaleFlag
|
||||
reader.ReadBit(); // PixelHintingFlag
|
||||
reader.ReadUnsignedBits(5); // Reserved
|
||||
reader.ReadBit(); // NoClose
|
||||
reader.ReadUnsignedBits(2); // EndCapStyle
|
||||
if ( join_style == 2 ) {
|
||||
reader.ReadFixedPoint_8_8(); // MiterLimitFactor
|
||||
}
|
||||
if ( has_fill_flag ) {
|
||||
ReadFillStyle(reader, true); // FillStyle
|
||||
} else {
|
||||
SwfColor.Read(reader, true);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// ShapeRecords
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static void ReadShapeRecords(
|
||||
SwfStreamReader reader, List<FillStyle> fill_styles,
|
||||
bool allow_big_array, bool with_alpha, bool line2_type)
|
||||
{
|
||||
var fill_style_bits = reader.ReadUnsignedBits(4);
|
||||
var line_style_bits = reader.ReadUnsignedBits(4);
|
||||
while ( !ReadShapeRecord(
|
||||
reader, fill_styles, ref fill_style_bits, ref line_style_bits,
|
||||
allow_big_array, with_alpha, line2_type) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
static bool ReadShapeRecord(
|
||||
SwfStreamReader reader, List<FillStyle> fill_styles,
|
||||
ref uint fill_style_bits, ref uint line_style_bits,
|
||||
bool allow_big_array, bool with_alpha, bool line2_type)
|
||||
{
|
||||
var is_edge = reader.ReadBit();
|
||||
if ( is_edge ) {
|
||||
var straight = reader.ReadBit();
|
||||
if ( straight ) {
|
||||
SkipStraigtEdgeShapeRecord(reader);
|
||||
} else {
|
||||
SkipCurvedEdgeShapeRecord(reader);
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
var state_new_styles = reader.ReadBit();
|
||||
var state_line_style = reader.ReadBit();
|
||||
var state_fill_style1 = reader.ReadBit();
|
||||
var state_fill_style0 = reader.ReadBit();
|
||||
var state_move_to = reader.ReadBit();
|
||||
var is_end_shape_record =
|
||||
!state_new_styles && !state_line_style &&
|
||||
!state_fill_style0 && !state_fill_style1 && !state_move_to;
|
||||
if ( is_end_shape_record ) {
|
||||
return true;
|
||||
} else {
|
||||
if ( state_move_to ) {
|
||||
var move_bits = reader.ReadUnsignedBits(5);
|
||||
reader.ReadSignedBits(move_bits); // move_delta_x
|
||||
reader.ReadSignedBits(move_bits); // move_delta_y
|
||||
}
|
||||
if ( state_fill_style0 ) {
|
||||
reader.ReadUnsignedBits(fill_style_bits); // fill_style_0
|
||||
}
|
||||
if ( state_fill_style1 ) {
|
||||
reader.ReadUnsignedBits(fill_style_bits); // fill_style_1
|
||||
}
|
||||
if ( state_line_style ) {
|
||||
reader.ReadUnsignedBits(line_style_bits); // line_style
|
||||
}
|
||||
if ( state_new_styles ) {
|
||||
reader.AlignToByte();
|
||||
fill_styles.AddRange(ReadFillStyles(reader, allow_big_array, with_alpha));
|
||||
SkipLineStyles(reader, allow_big_array, with_alpha, line2_type);
|
||||
fill_style_bits = reader.ReadUnsignedBits(4);
|
||||
line_style_bits = reader.ReadUnsignedBits(4);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SkipStraigtEdgeShapeRecord(SwfStreamReader reader) {
|
||||
var num_bits = reader.ReadUnsignedBits(4) + 2;
|
||||
var general_line_flag = reader.ReadBit();
|
||||
var vert_line_flag = general_line_flag ? false : reader.ReadBit();
|
||||
if ( general_line_flag || !vert_line_flag ) {
|
||||
reader.ReadSignedBits(num_bits); // delta_x
|
||||
}
|
||||
if ( general_line_flag || vert_line_flag ) {
|
||||
reader.ReadSignedBits(num_bits); // delta_y
|
||||
}
|
||||
}
|
||||
|
||||
static void SkipCurvedEdgeShapeRecord(SwfStreamReader reader) {
|
||||
var num_bits = reader.ReadUnsignedBits(4) + 2;
|
||||
reader.ReadSignedBits(num_bits); // control_delta_x
|
||||
reader.ReadSignedBits(num_bits); // control_delta_y
|
||||
reader.ReadSignedBits(num_bits); // anchor_delta_x
|
||||
reader.ReadSignedBits(num_bits); // anchor_delta_y
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ad135e326c424eb2a9bb593525c4192
|
||||
timeCreated: 1457881438
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,41 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.IO;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfShortHeader {
|
||||
public string Format;
|
||||
public byte Version;
|
||||
public uint FileLength;
|
||||
|
||||
public static SwfShortHeader Read(SwfStreamReader reader) {
|
||||
var header = new SwfShortHeader();
|
||||
header.Format = new string(reader.ReadChars(3));
|
||||
header.Version = reader.ReadByte();
|
||||
header.FileLength = reader.ReadUInt32();
|
||||
return header;
|
||||
}
|
||||
|
||||
public void Write(Stream stream) {
|
||||
if ( Format == null || Format.Length != 3 ) {
|
||||
throw new UnityException(string.Format(
|
||||
"Incorrect SwfShortHeader Format: {0}",
|
||||
Format));
|
||||
}
|
||||
stream.WriteByte((byte)Format[0]);
|
||||
stream.WriteByte((byte)Format[1]);
|
||||
stream.WriteByte((byte)Format[2]);
|
||||
stream.WriteByte(Version);
|
||||
stream.WriteByte((byte)((FileLength >> 0) & 0xFF));
|
||||
stream.WriteByte((byte)((FileLength >> 8) & 0xFF));
|
||||
stream.WriteByte((byte)((FileLength >> 16) & 0xFF));
|
||||
stream.WriteByte((byte)((FileLength >> 24) & 0xFF));
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfShortHeader. " +
|
||||
"Format: {0}, Version: {1}, FileLength: {2}",
|
||||
Format, Version, FileLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 669a2dd77726b497aab3e816c280e023
|
||||
timeCreated: 1457881385
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,306 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
public struct SwfSurfaceFilters {
|
||||
public abstract class Filter {
|
||||
public enum Types {
|
||||
DropShadow,
|
||||
Blur,
|
||||
Glow,
|
||||
Bevel,
|
||||
GradientGlow,
|
||||
Convolution,
|
||||
ColorMatrix,
|
||||
GradientBevel
|
||||
}
|
||||
public abstract Types Type { get; }
|
||||
}
|
||||
|
||||
public class DropShadowFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.DropShadow; }
|
||||
}
|
||||
public SwfColor DropShadowColor;
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public float Angle;
|
||||
public float Distance;
|
||||
public float Strength;
|
||||
public bool InnerShadow;
|
||||
public bool Knockout;
|
||||
public bool CompositeSource;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public class BlurFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.Blur; }
|
||||
}
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public class GlowFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.Glow; }
|
||||
}
|
||||
public SwfColor GlowColor;
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public float Strength;
|
||||
public bool InnerGlow;
|
||||
public bool Knockout;
|
||||
public bool CompositeSource;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public class BevelFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.Bevel; }
|
||||
}
|
||||
public SwfColor ShadowColor;
|
||||
public SwfColor HighlightColor;
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public float Angle;
|
||||
public float Distance;
|
||||
public float Strength;
|
||||
public bool InnerShadow;
|
||||
public bool Knockout;
|
||||
public bool CompositeSource;
|
||||
public bool OnTop;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public class GradientGlowFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.GradientGlow; }
|
||||
}
|
||||
public SwfColor[] GradientColors;
|
||||
public byte[] GradientRatio;
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public float Angle;
|
||||
public float Distance;
|
||||
public float Strength;
|
||||
public bool InnerShadow;
|
||||
public bool Knockout;
|
||||
public bool CompositeSource;
|
||||
public bool OnTop;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public class ConvolutionFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.Convolution; }
|
||||
}
|
||||
public byte MatrixX;
|
||||
public byte MatrixY;
|
||||
public float Divisor;
|
||||
public float Bias;
|
||||
public float[] Matrix;
|
||||
public SwfColor DefaultColor;
|
||||
public bool Clamp;
|
||||
public bool PreserveAlpha;
|
||||
}
|
||||
|
||||
public class ColorMatrixFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.ColorMatrix; }
|
||||
}
|
||||
public float[] Matrix;
|
||||
}
|
||||
|
||||
public class GradientBevelFilter : Filter {
|
||||
public override Types Type {
|
||||
get { return Types.GradientBevel; }
|
||||
}
|
||||
public SwfColor[] GradientColors;
|
||||
public byte[] GradientRatio;
|
||||
public float BlurX;
|
||||
public float BlurY;
|
||||
public float Angle;
|
||||
public float Distance;
|
||||
public float Strength;
|
||||
public bool InnerShadow;
|
||||
public bool Knockout;
|
||||
public bool CompositeSource;
|
||||
public bool OnTop;
|
||||
public uint Passes;
|
||||
}
|
||||
|
||||
public List<Filter> Filters;
|
||||
|
||||
public static SwfSurfaceFilters identity {
|
||||
get {
|
||||
return new SwfSurfaceFilters{
|
||||
Filters = new List<Filter>()};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfSurfaceFilters Read(SwfStreamReader reader) {
|
||||
var filter_count = reader.ReadByte();
|
||||
var filters = new List<Filter>((int)filter_count);
|
||||
for ( var i = 0; i < filter_count; ++i ) {
|
||||
filters.Add(ReadFilter(reader));
|
||||
}
|
||||
return new SwfSurfaceFilters{
|
||||
Filters = filters};
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return string.Format(
|
||||
"SwfSurfaceFilters. Filters: {0}",
|
||||
Filters.Count);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
//
|
||||
// ReadFilters
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static Filter ReadFilter(SwfStreamReader reader) {
|
||||
var type_id = reader.ReadByte();
|
||||
return CreateFilterFromTypeId(type_id, reader);
|
||||
}
|
||||
|
||||
static Filter CreateFilterFromTypeId(byte type_id, SwfStreamReader reader) {
|
||||
switch ( type_id ) {
|
||||
case 0: return ReadConcreteFilter(new DropShadowFilter (), reader);
|
||||
case 1: return ReadConcreteFilter(new BlurFilter (), reader);
|
||||
case 2: return ReadConcreteFilter(new GlowFilter (), reader);
|
||||
case 3: return ReadConcreteFilter(new BevelFilter (), reader);
|
||||
case 4: return ReadConcreteFilter(new GradientGlowFilter (), reader);
|
||||
case 5: return ReadConcreteFilter(new ConvolutionFilter (), reader);
|
||||
case 6: return ReadConcreteFilter(new ColorMatrixFilter (), reader);
|
||||
case 7: return ReadConcreteFilter(new GradientBevelFilter(), reader);
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"Incorrect surface filter type id: {0}", type_id));
|
||||
}
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(DropShadowFilter filter, SwfStreamReader reader) {
|
||||
filter.DropShadowColor = SwfColor.Read(reader, true);
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Angle = reader.ReadFixedPoint_16_16();
|
||||
filter.Distance = reader.ReadFixedPoint_16_16();
|
||||
filter.Strength = reader.ReadFixedPoint_8_8();
|
||||
filter.InnerShadow = reader.ReadBit();
|
||||
filter.Knockout = reader.ReadBit();
|
||||
filter.CompositeSource = reader.ReadBit();
|
||||
filter.Passes = reader.ReadUnsignedBits(5);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(BlurFilter filter, SwfStreamReader reader) {
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Passes = reader.ReadUnsignedBits(5);
|
||||
reader.ReadUnsignedBits(3); // reserved
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(GlowFilter filter, SwfStreamReader reader) {
|
||||
filter.GlowColor = SwfColor.Read(reader, true);
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Strength = reader.ReadFixedPoint_8_8();
|
||||
filter.InnerGlow = reader.ReadBit();
|
||||
filter.Knockout = reader.ReadBit();
|
||||
filter.CompositeSource = reader.ReadBit();
|
||||
filter.Passes = reader.ReadUnsignedBits(5);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(BevelFilter filter, SwfStreamReader reader) {
|
||||
filter.ShadowColor = SwfColor.Read(reader, true);
|
||||
filter.HighlightColor = SwfColor.Read(reader, true);
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Angle = reader.ReadFixedPoint_16_16();
|
||||
filter.Distance = reader.ReadFixedPoint_16_16();
|
||||
filter.Strength = reader.ReadFixedPoint_8_8();
|
||||
filter.InnerShadow = reader.ReadBit();
|
||||
filter.Knockout = reader.ReadBit();
|
||||
filter.CompositeSource = reader.ReadBit();
|
||||
filter.OnTop = reader.ReadBit();
|
||||
filter.Passes = reader.ReadUnsignedBits(4);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(GradientGlowFilter filter, SwfStreamReader reader) {
|
||||
var num_colors = reader.ReadByte();
|
||||
filter.GradientColors = new SwfColor[num_colors];
|
||||
for ( var i = 0; i < num_colors; ++i ) {
|
||||
filter.GradientColors[i] = SwfColor.Read(reader, true);
|
||||
}
|
||||
filter.GradientRatio = new byte[num_colors];
|
||||
for ( var i = 0; i < num_colors; ++i ) {
|
||||
filter.GradientRatio[i] = reader.ReadByte();
|
||||
}
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Angle = reader.ReadFixedPoint_16_16();
|
||||
filter.Distance = reader.ReadFixedPoint_16_16();
|
||||
filter.Strength = reader.ReadFixedPoint_8_8();
|
||||
filter.InnerShadow = reader.ReadBit();
|
||||
filter.Knockout = reader.ReadBit();
|
||||
filter.CompositeSource = reader.ReadBit();
|
||||
filter.OnTop = reader.ReadBit();
|
||||
filter.Passes = reader.ReadUnsignedBits(4);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(ConvolutionFilter filter, SwfStreamReader reader) {
|
||||
filter.MatrixX = reader.ReadByte();
|
||||
filter.MatrixY = reader.ReadByte();
|
||||
filter.Divisor = reader.ReadFloat32();
|
||||
filter.Bias = reader.ReadFloat32();
|
||||
filter.Matrix = new float[filter.MatrixX * filter.MatrixY];
|
||||
for ( var i = 0; i < filter.Matrix.Length; ++i ) {
|
||||
filter.Matrix[i] = reader.ReadFloat32();
|
||||
}
|
||||
filter.DefaultColor = SwfColor.Read(reader, true);
|
||||
reader.ReadUnsignedBits(6); // reserved
|
||||
filter.Clamp = reader.ReadBit();
|
||||
filter.PreserveAlpha = reader.ReadBit();
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(ColorMatrixFilter filter, SwfStreamReader reader) {
|
||||
filter.Matrix = new float[20];
|
||||
for ( var i = 0; i < filter.Matrix.Length; ++i ) {
|
||||
filter.Matrix[i] = reader.ReadFloat32();
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
|
||||
static Filter ReadConcreteFilter(GradientBevelFilter filter, SwfStreamReader reader) {
|
||||
var num_colors = reader.ReadByte();
|
||||
filter.GradientColors = new SwfColor[num_colors];
|
||||
for ( var i = 0; i < num_colors; ++i ) {
|
||||
filter.GradientColors[i] = SwfColor.Read(reader, true);
|
||||
}
|
||||
filter.GradientRatio = new byte[num_colors];
|
||||
for ( var i = 0; i < num_colors; ++i ) {
|
||||
filter.GradientRatio[i] = reader.ReadByte();
|
||||
}
|
||||
filter.BlurX = reader.ReadFixedPoint_16_16();
|
||||
filter.BlurY = reader.ReadFixedPoint_16_16();
|
||||
filter.Angle = reader.ReadFixedPoint_16_16();
|
||||
filter.Distance = reader.ReadFixedPoint_16_16();
|
||||
filter.Strength = reader.ReadFixedPoint_8_8();
|
||||
filter.InnerShadow = reader.ReadBit();
|
||||
filter.Knockout = reader.ReadBit();
|
||||
filter.CompositeSource = reader.ReadBit();
|
||||
filter.OnTop = reader.ReadBit();
|
||||
filter.Passes = reader.ReadUnsignedBits(4);
|
||||
return filter;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9160ac10286e843ccb7fae733e9de5d8
|
||||
timeCreated: 1457881516
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user