mirror of
https://github.com/BlackMATov/unity-flash-tools.git
synced 2025-12-16 22:19:31 +07:00
+ Normal, Add, Multiply blend modes
This commit is contained in:
@@ -130,11 +130,22 @@ namespace FlashTools.Internal {
|
||||
|
||||
void HideMaterials() {
|
||||
var settings_holder = SwfSettings.GetHolder();
|
||||
settings_holder.SimpleMaterial .hideFlags = HideFlags.HideInInspector;
|
||||
settings_holder.IncrMaskMaterial.hideFlags = HideFlags.HideInInspector;
|
||||
settings_holder.DecrMaskMaterial.hideFlags = HideFlags.HideInInspector;
|
||||
foreach ( var masked_material in settings_holder.MaskedMaterials ) {
|
||||
masked_material.hideFlags = HideFlags.HideInInspector;
|
||||
|
||||
settings_holder.IncrMaskMat .hideFlags = HideFlags.HideInInspector;
|
||||
settings_holder.DecrMaskMat .hideFlags = HideFlags.HideInInspector;
|
||||
|
||||
settings_holder.SimpleMat_Add .hideFlags = HideFlags.HideInInspector;
|
||||
settings_holder.SimpleMat_Normal .hideFlags = HideFlags.HideInInspector;
|
||||
settings_holder.SimpleMat_Multiply.hideFlags = HideFlags.HideInInspector;
|
||||
|
||||
foreach ( var material in settings_holder.MaskedMats_Add ) {
|
||||
material.hideFlags = HideFlags.HideInInspector;
|
||||
}
|
||||
foreach ( var material in settings_holder.MaskedMats_Normal ) {
|
||||
material.hideFlags = HideFlags.HideInInspector;
|
||||
}
|
||||
foreach ( var material in settings_holder.MaskedMats_Multiply ) {
|
||||
material.hideFlags = HideFlags.HideInInspector;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -313,11 +313,12 @@ namespace FlashTools.Internal {
|
||||
}
|
||||
|
||||
class BakedGroup {
|
||||
public SwfInstanceData.Types Type;
|
||||
public int ClipDepth;
|
||||
public int StartVertex;
|
||||
public int TriangleCount;
|
||||
public Material Material;
|
||||
public SwfInstanceData.Types Type;
|
||||
public SwfBlendModeData.Types BlendType;
|
||||
public int ClipDepth;
|
||||
public int StartVertex;
|
||||
public int TriangleCount;
|
||||
public Material Material;
|
||||
}
|
||||
|
||||
static SwfClipAsset.Frame BakeClipFrame(
|
||||
@@ -373,11 +374,13 @@ namespace FlashTools.Internal {
|
||||
baked_addcolors.Add(add_pack1);
|
||||
|
||||
if ( baked_groups.Count == 0 ||
|
||||
baked_groups[baked_groups.Count - 1].Type != inst.Type ||
|
||||
baked_groups[baked_groups.Count - 1].Type != inst.Type ||
|
||||
baked_groups[baked_groups.Count - 1].BlendType != inst.BlendMode.type ||
|
||||
baked_groups[baked_groups.Count - 1].ClipDepth != inst.ClipDepth )
|
||||
{
|
||||
baked_groups.Add(new BakedGroup{
|
||||
Type = inst.Type,
|
||||
BlendType = inst.BlendMode.type,
|
||||
ClipDepth = inst.ClipDepth,
|
||||
StartVertex = baked_vertices.Count - 4,
|
||||
TriangleCount = 0,
|
||||
@@ -397,10 +400,10 @@ namespace FlashTools.Internal {
|
||||
group.Material = settings_holder.GetIncrMaskMaterial();
|
||||
break;
|
||||
case SwfInstanceData.Types.Group:
|
||||
group.Material = settings_holder.GetSimpleMaterial();
|
||||
group.Material = FindGroupMaterial(settings_holder, group.BlendType);
|
||||
break;
|
||||
case SwfInstanceData.Types.Masked:
|
||||
group.Material = settings_holder.GetMaskedMaterial(group.ClipDepth);
|
||||
group.Material = FindMaskedMaterial(settings_holder, group.BlendType, group.ClipDepth);
|
||||
break;
|
||||
case SwfInstanceData.Types.MaskReset:
|
||||
group.Material = settings_holder.GetDecrMaskMaterial();
|
||||
@@ -445,6 +448,40 @@ namespace FlashTools.Internal {
|
||||
return null;
|
||||
}
|
||||
|
||||
static Material FindGroupMaterial(
|
||||
SwfSettings settings_holder, SwfBlendModeData.Types blend_type)
|
||||
{
|
||||
switch ( blend_type ) {
|
||||
case SwfBlendModeData.Types.Add:
|
||||
return settings_holder.GetSimpleAddMaterial();
|
||||
case SwfBlendModeData.Types.Normal:
|
||||
return settings_holder.GetSimpleNormalMaterial();
|
||||
case SwfBlendModeData.Types.Multiply:
|
||||
return settings_holder.GetSimpleMultiplyMaterial();
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"SwfAssetPostprocessor. Incorrect blend type: {0}",
|
||||
blend_type));
|
||||
}
|
||||
}
|
||||
|
||||
static Material FindMaskedMaterial(
|
||||
SwfSettings settings_holder, SwfBlendModeData.Types blend_type, int stencil_id)
|
||||
{
|
||||
switch ( blend_type ) {
|
||||
case SwfBlendModeData.Types.Add:
|
||||
return settings_holder.GetMaskedAddMaterial(stencil_id);
|
||||
case SwfBlendModeData.Types.Normal:
|
||||
return settings_holder.GetMaskedNormalMaterial(stencil_id);
|
||||
case SwfBlendModeData.Types.Multiply:
|
||||
return settings_holder.GetMaskedMultiplyMaterial(stencil_id);
|
||||
default:
|
||||
throw new UnityException(string.Format(
|
||||
"SwfAssetPostprocessor. Incorrect blend type: {0}",
|
||||
blend_type));
|
||||
}
|
||||
}
|
||||
|
||||
static bool IsVisibleInstance(SwfInstanceData inst) {
|
||||
var result_color = inst.ColorTrans.ApplyToColor(Color.white);
|
||||
return result_color.a >= 0.01f;
|
||||
@@ -457,7 +494,7 @@ namespace FlashTools.Internal {
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
static void UpdateAssetClips(SwfAsset asset) {
|
||||
var clips = Resources.FindObjectsOfTypeAll<SwfClip>();
|
||||
var clips = GameObject.FindObjectsOfType<SwfClip>();
|
||||
foreach ( var clip in clips ) {
|
||||
if ( clip && clip.clip && asset.Clips.Contains(clip.clip) ) {
|
||||
clip.UpdateAllProperties();
|
||||
|
||||
@@ -100,6 +100,7 @@ namespace FlashTools.Internal {
|
||||
0,
|
||||
null,
|
||||
Matrix4x4.identity,
|
||||
SwfBlendModeData.identity,
|
||||
SwfColorTransData.identity,
|
||||
frame);
|
||||
}
|
||||
@@ -111,13 +112,15 @@ namespace FlashTools.Internal {
|
||||
ushort parent_mask,
|
||||
List<SwfInstanceData> parent_masks,
|
||||
Matrix4x4 parent_matrix,
|
||||
SwfBlendModeData parent_blend_mode,
|
||||
SwfColorTransData parent_color_transform,
|
||||
SwfFrameData frame)
|
||||
{
|
||||
var self_masks = new List<SwfInstanceData>();
|
||||
foreach ( var inst in display_list.Instances.Values.Where(p => p.Visible) ) {
|
||||
CheckSelfMasks(self_masks, inst.Depth, frame);
|
||||
var child_matrix = parent_matrix * inst.Matrix.ToUMatrix();
|
||||
var child_matrix = parent_matrix * inst.Matrix .ToUMatrix();
|
||||
var child_blend_mode = parent_blend_mode * inst.BlendMode .ToBlendModeData();
|
||||
var child_color_transform = parent_color_transform * inst.ColorTransform.ToColorTransData();
|
||||
switch ( inst.Type ) {
|
||||
case SwfDisplayInstanceType.Shape:
|
||||
@@ -145,6 +148,7 @@ namespace FlashTools.Internal {
|
||||
ClipDepth = (ushort)frame_inst_clip_depth,
|
||||
Bitmap = bitmap_id,
|
||||
Matrix = SwfMatrixData.FromUMatrix(child_matrix * bitmap_matrix.ToUMatrix()),
|
||||
BlendMode = child_blend_mode,
|
||||
ColorTrans = child_color_transform});
|
||||
if ( parent_mask > 0 ) {
|
||||
parent_masks.Add(frame.Instances[frame.Instances.Count - 1]);
|
||||
@@ -166,6 +170,7 @@ namespace FlashTools.Internal {
|
||||
(ushort)(parent_mask > 0 ? parent_mask : (inst.ClipDepth > 0 ? inst.ClipDepth : (ushort)0)),
|
||||
parent_mask > 0 ? parent_masks : (inst.ClipDepth > 0 ? self_masks : null),
|
||||
child_matrix,
|
||||
child_blend_mode,
|
||||
child_color_transform,
|
||||
frame);
|
||||
}
|
||||
@@ -189,6 +194,7 @@ namespace FlashTools.Internal {
|
||||
ClipDepth = 0,
|
||||
Bitmap = mask.Bitmap,
|
||||
Matrix = mask.Matrix,
|
||||
BlendMode = mask.BlendMode,
|
||||
ColorTrans = mask.ColorTrans});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace FlashTools.Internal {
|
||||
}
|
||||
|
||||
public static void DoWithEnabledGUI(bool enabled, System.Action act) {
|
||||
EditorGUI.BeginDisabledGroup(true);
|
||||
EditorGUI.BeginDisabledGroup(!enabled);
|
||||
try {
|
||||
act();
|
||||
} finally {
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace FlashTools.Internal.SwfTools {
|
||||
public ushort ClipDepth;
|
||||
public bool Visible;
|
||||
public SwfMatrix Matrix;
|
||||
public SwfBlendMode BlendMode;
|
||||
public SwfColorTransform ColorTransform;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace FlashTools.Internal.SwfTools {
|
||||
new_inst.ClipDepth = 0;
|
||||
new_inst.Visible = true;
|
||||
new_inst.Matrix = tag.Matrix;
|
||||
new_inst.BlendMode = SwfBlendMode.identity;
|
||||
new_inst.ColorTransform = tag.ColorTransform;
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
@@ -77,6 +78,7 @@ namespace FlashTools.Internal.SwfTools {
|
||||
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.ColorTransform = tag.HasColorTransform ? tag.ColorTransform : (old_inst != null ? old_inst.ColorTransform : SwfColorTransform.identity);
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
@@ -124,6 +126,7 @@ namespace FlashTools.Internal.SwfTools {
|
||||
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.ColorTransform = tag.HasColorTransform ? tag.ColorTransform : (old_inst != null ? old_inst.ColorTransform : SwfColorTransform.identity);
|
||||
dl.Instances.Add(new_inst.Depth, new_inst);
|
||||
}
|
||||
@@ -139,6 +142,9 @@ namespace FlashTools.Internal.SwfTools {
|
||||
if ( tag.HasMatrix ) {
|
||||
inst.Matrix = tag.Matrix;
|
||||
}
|
||||
if ( tag.HasBlendMode ) {
|
||||
inst.BlendMode = tag.BlendMode;
|
||||
}
|
||||
if ( tag.HasColorTransform ) {
|
||||
inst.ColorTransform = tag.ColorTransform;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,22 @@ namespace FlashTools.Internal.SwfTools.SwfTypes {
|
||||
Value);
|
||||
}
|
||||
|
||||
public SwfBlendModeData ToBlendModeData() {
|
||||
switch ( Value ) {
|
||||
case Mode.Normal:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
|
||||
case Mode.Add:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Add);
|
||||
case Mode.Multiply:
|
||||
return new SwfBlendModeData(SwfBlendModeData.Types.Multiply);
|
||||
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
|
||||
|
||||
@@ -64,10 +64,16 @@ namespace FlashTools.Internal {
|
||||
|
||||
public SwfSettingsData Settings;
|
||||
|
||||
[HideInInspector] public Material SimpleMaterial;
|
||||
[HideInInspector] public Material IncrMaskMaterial;
|
||||
[HideInInspector] public Material DecrMaskMaterial;
|
||||
[HideInInspector] public List<Material> MaskedMaterials;
|
||||
[HideInInspector] public Material IncrMaskMat;
|
||||
[HideInInspector] public Material DecrMaskMat;
|
||||
|
||||
[HideInInspector] public Material SimpleMat_Add;
|
||||
[HideInInspector] public Material SimpleMat_Normal;
|
||||
[HideInInspector] public Material SimpleMat_Multiply;
|
||||
|
||||
[HideInInspector] public List<Material> MaskedMats_Add;
|
||||
[HideInInspector] public List<Material> MaskedMats_Normal;
|
||||
[HideInInspector] public List<Material> MaskedMats_Multiply;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
|
||||
@@ -77,29 +83,73 @@ namespace FlashTools.Internal {
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
const string SwfSimpleMatName = "SwfSimpleMat";
|
||||
const string SwfIncrMaskMatName = "SwfIncrMaskMat";
|
||||
const string SwfDecrMaskMatName = "SwfDecrMaskMat";
|
||||
const string SwfMaskedMatNameFmt = "SwfMaskedMat_{0}";
|
||||
const string SwfIncrMaskMatName = "SwfIncrMaskMat";
|
||||
const string SwfDecrMaskMatName = "SwfDecrMaskMat";
|
||||
|
||||
const string SwfSimpleMatAddName = "SwfSimpleMat_Add";
|
||||
const string SwfSimpleMatNormalName = "SwfSimpleMat_Normal";
|
||||
const string SwfSimpleMatMultiplyName = "SwfSimpleMat_Multiply";
|
||||
|
||||
const string SwfMaskedMatAddNameFmt = "SwfMaskedMat_Add_{0}";
|
||||
const string SwfMaskedMatNormalNameFmt = "SwfMaskedMat_Normal_{0}";
|
||||
const string SwfMaskedMatMultiplyNameFmt = "SwfMaskedMat_Multiply_{0}";
|
||||
|
||||
void FillMaterialsCache() {
|
||||
SimpleMaterial = SafeLoadMaterial(SwfSimpleMatName, true);
|
||||
IncrMaskMaterial = SafeLoadMaterial(SwfIncrMaskMatName, true);
|
||||
DecrMaskMaterial = SafeLoadMaterial(SwfDecrMaskMatName, true);
|
||||
MaskedMaterials = new List<Material>();
|
||||
for ( var i = 0; i < int.MaxValue; ++i ) {
|
||||
var mat = SafeLoadMaterial(string.Format(SwfMaskedMatNameFmt, i), false);
|
||||
if ( mat ) {
|
||||
MaskedMaterials.Add(mat);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
IncrMaskMat = SafeLoadMaterial(SwfIncrMaskMatName, true);
|
||||
DecrMaskMat = SafeLoadMaterial(SwfDecrMaskMatName, true);
|
||||
|
||||
SimpleMat_Add = SafeLoadMaterial(SwfSimpleMatAddName, true);
|
||||
SimpleMat_Normal = SafeLoadMaterial(SwfSimpleMatNormalName, true);
|
||||
SimpleMat_Multiply = SafeLoadMaterial(SwfSimpleMatMultiplyName, true);
|
||||
|
||||
MaskedMats_Add = SafeLoadMaterials(SwfMaskedMatAddNameFmt);
|
||||
MaskedMats_Normal = SafeLoadMaterials(SwfMaskedMatNormalNameFmt);
|
||||
MaskedMats_Multiply = SafeLoadMaterials(SwfMaskedMatMultiplyNameFmt);
|
||||
|
||||
EditorUtility.SetDirty(this);
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
|
||||
Material SafeLoadMaterial(string name, bool exception) {
|
||||
public Material CheckAndGetMaterial(Material material) {
|
||||
if ( !material ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
return CheckExistsMaterial(material);
|
||||
}
|
||||
|
||||
Material GetMaskedMaterial(List<Material> materials, int stencil_id) {
|
||||
if ( materials == null || stencil_id >= materials.Count ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
if ( stencil_id < 0 || stencil_id >= materials.Count ) {
|
||||
throw new UnityException(string.Format(
|
||||
"SwfSettings. Unsupported stencil id: {0}",
|
||||
stencil_id));
|
||||
}
|
||||
return CheckExistsMaterial(materials[stencil_id]);
|
||||
}
|
||||
|
||||
static Material CheckExistsMaterial(Material material) {
|
||||
if ( !material ) {
|
||||
throw new UnityException("SwfSettings. Material not found");
|
||||
}
|
||||
return material;
|
||||
}
|
||||
|
||||
static List<Material> SafeLoadMaterials(string name_fmt) {
|
||||
var result = new List<Material>();
|
||||
for ( var i = 0; i < int.MaxValue; ++i ) {
|
||||
var mat = SafeLoadMaterial(string.Format(name_fmt, i), false);
|
||||
if ( mat ) {
|
||||
result.Add(mat);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static Material SafeLoadMaterial(string name, bool exception) {
|
||||
var filter = string.Format("t:Material {0}", name);
|
||||
var material = LoadFirstAssetByFilter<Material>(filter);
|
||||
if ( !material && exception ) {
|
||||
@@ -110,13 +160,6 @@ namespace FlashTools.Internal {
|
||||
return material;
|
||||
}
|
||||
|
||||
Material CheckExistsMaterial(Material material) {
|
||||
if ( !material ) {
|
||||
throw new UnityException("SwfSettings. Material not found");
|
||||
}
|
||||
return material;
|
||||
}
|
||||
|
||||
static T LoadFirstAssetByFilter<T>(string filter) where T : UnityEngine.Object {
|
||||
var guids = AssetDatabase.FindAssets(filter);
|
||||
foreach ( var guid in guids ) {
|
||||
@@ -135,37 +178,36 @@ namespace FlashTools.Internal {
|
||||
//
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
public Material GetMaskedMaterial(int stencil_id) {
|
||||
if ( MaskedMaterials == null || stencil_id >= MaskedMaterials.Count ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
if ( stencil_id < 0 || stencil_id >= MaskedMaterials.Count ) {
|
||||
throw new UnityException(string.Format(
|
||||
"SwfSettings. Unsupported stencil id: {0}",
|
||||
stencil_id));
|
||||
}
|
||||
return CheckExistsMaterial(MaskedMaterials[stencil_id]);
|
||||
}
|
||||
|
||||
public Material GetSimpleMaterial() {
|
||||
if ( !SimpleMaterial ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
return CheckExistsMaterial(SimpleMaterial);
|
||||
}
|
||||
|
||||
public Material GetIncrMaskMaterial() {
|
||||
if ( !IncrMaskMaterial ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
return CheckExistsMaterial(IncrMaskMaterial);
|
||||
return CheckAndGetMaterial(IncrMaskMat);
|
||||
}
|
||||
|
||||
public Material GetDecrMaskMaterial() {
|
||||
if ( !DecrMaskMaterial ) {
|
||||
FillMaterialsCache();
|
||||
}
|
||||
return CheckExistsMaterial(DecrMaskMaterial);
|
||||
return CheckAndGetMaterial(DecrMaskMat);
|
||||
}
|
||||
|
||||
public Material GetSimpleAddMaterial() {
|
||||
return CheckAndGetMaterial(SimpleMat_Add);
|
||||
}
|
||||
|
||||
public Material GetSimpleNormalMaterial() {
|
||||
return CheckAndGetMaterial(SimpleMat_Normal);
|
||||
}
|
||||
|
||||
public Material GetSimpleMultiplyMaterial() {
|
||||
return CheckAndGetMaterial(SimpleMat_Multiply);
|
||||
}
|
||||
|
||||
public Material GetMaskedAddMaterial(int stencil_id) {
|
||||
return GetMaskedMaterial(MaskedMats_Add, stencil_id);
|
||||
}
|
||||
|
||||
public Material GetMaskedNormalMaterial(int stencil_id) {
|
||||
return GetMaskedMaterial(MaskedMats_Normal, stencil_id);
|
||||
}
|
||||
|
||||
public Material GetMaskedMultiplyMaterial(int stencil_id) {
|
||||
return GetMaskedMaterial(MaskedMats_Multiply, stencil_id);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
@@ -105,6 +105,34 @@ namespace FlashTools {
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public struct SwfBlendModeData {
|
||||
public enum Types {
|
||||
Normal,
|
||||
Add,
|
||||
Multiply
|
||||
}
|
||||
public Types type;
|
||||
|
||||
public SwfBlendModeData(Types type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public static SwfBlendModeData identity {
|
||||
get {
|
||||
return new SwfBlendModeData{
|
||||
type = Types.Normal};
|
||||
}
|
||||
}
|
||||
|
||||
public static SwfBlendModeData operator*(
|
||||
SwfBlendModeData a, SwfBlendModeData b)
|
||||
{
|
||||
return new SwfBlendModeData{
|
||||
type = (a.type == Types.Normal ? b.type : a.type)};
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public struct SwfColorTransData {
|
||||
public SwfVec4Data mulColor;
|
||||
@@ -155,6 +183,7 @@ namespace FlashTools {
|
||||
public ushort ClipDepth = 0;
|
||||
public ushort Bitmap = 0;
|
||||
public SwfMatrixData Matrix = SwfMatrixData.identity;
|
||||
public SwfBlendModeData BlendMode = SwfBlendModeData.identity;
|
||||
public SwfColorTransData ColorTrans = SwfColorTransData.identity;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user