Files
unity-flash-tools/Assets/FlashTools/Scripts/FlashAnimAsset.cs

149 lines
3.9 KiB
C#

using UnityEngine;
using System.Collections.Generic;
namespace FlashTools {
public enum FlashAnimBlendMode {
Normal,
Layer,
Multiply,
Screen,
Overlay,
Hardlight,
Lighten,
Darken,
Difference,
Add,
Subtract,
Invert,
Alpha,
Erase
}
public enum FlashAnimLoopingMode {
Loop,
PlayOnce,
SingleFrame
}
public enum FlashAnimLayerType {
Normal,
Guide,
Guided,
Mask,
Masked,
Folder
}
public enum FlashAnimInstType {
Bitmap,
Symbol
}
[System.Serializable]
public struct FlashAnimColorTransform {
public Vector4 Mul;
public Vector4 Add;
public FlashAnimColorTransform(Vector4 Mul, Vector4 Add) {
this.Mul = Mul;
this.Add = Add;
}
public static FlashAnimColorTransform identity {
get {
return new FlashAnimColorTransform(
new Vector4(1,1,1,1),
new Vector4(0,0,0,0));
}
}
public static FlashAnimColorTransform operator*(
FlashAnimColorTransform a, FlashAnimColorTransform b)
{
var res = new FlashAnimColorTransform();
res.Mul.x = a.Mul.x * b.Mul.x;
res.Mul.y = a.Mul.y * b.Mul.y;
res.Mul.z = a.Mul.z * b.Mul.z;
res.Mul.w = a.Mul.w * b.Mul.w;
res.Add.x = a.Add.x * b.Mul.x + b.Add.x;
res.Add.y = a.Add.y * b.Mul.y + b.Add.y;
res.Add.z = a.Add.z * b.Mul.z + b.Add.z;
res.Add.w = a.Add.w * b.Mul.w + b.Add.w;
return res;
}
}
[System.Serializable]
public class FlashAnimBitmapData {
public string Id = string.Empty;
public Vector2 RealSize = Vector2.zero;
public Rect SourceRect = new Rect();
public string ImageSource = string.Empty;
public void CopyDataFrom(FlashAnimBitmapData other) {
RealSize = other.RealSize;
SourceRect = other.SourceRect;
ImageSource = other.ImageSource;
}
}
[System.Serializable]
public class FlashAnimInstData {
public FlashAnimInstType Type = FlashAnimInstType.Bitmap;
public FlashAnimBlendMode BlendMode = FlashAnimBlendMode.Normal;
public string Asset = string.Empty;
public bool Visible = true;
public int FirstFrame = 0;
public FlashAnimLoopingMode LoopingMode = FlashAnimLoopingMode.SingleFrame;
public FlashAnimColorTransform ColorTransform = FlashAnimColorTransform.identity;
}
[System.Serializable]
public class FlashAnimElemData {
public string Id = string.Empty;
public Matrix4x4 Matrix = Matrix4x4.identity;
public FlashAnimInstData Instance = null;
}
[System.Serializable]
public class FlashAnimFrameData {
public string Id = string.Empty;
public List<FlashAnimElemData> Elems = new List<FlashAnimElemData>();
}
[System.Serializable]
public class FlashAnimLayerData {
public string Id = string.Empty;
public FlashAnimLayerType LayerType = FlashAnimLayerType.Normal;
public List<FlashAnimFrameData> Frames = new List<FlashAnimFrameData>();
}
[System.Serializable]
public class FlashAnimSymbolData {
public string Id = string.Empty;
public List<FlashAnimLayerData> Layers = new List<FlashAnimLayerData>();
}
[System.Serializable]
public class FlashAnimLibraryData {
public List<FlashAnimBitmapData> Bitmaps = new List<FlashAnimBitmapData>();
public List<FlashAnimSymbolData> Symbols = new List<FlashAnimSymbolData>();
}
[System.Serializable]
public class FlashAnimData {
public FlashAnimSymbolData Stage = new FlashAnimSymbolData();
public FlashAnimLibraryData Library = new FlashAnimLibraryData();
public List<string> Strings = new List<string>();
public int FrameRate = 24;
}
public class FlashAnimAsset : ScriptableObject {
[HideInInspector]
public FlashAnimData Data = new FlashAnimData();
public Texture2D Atlas = null;
public int MaxAtlasSize = 1024;
public int AtlasPadding = 1;
public int PixelsPerUnit = 100;
}
}