diff --git a/Assets/FlashTools/Docs/CHANGELOG.md b/Assets/FlashTools/Docs/CHANGELOG.md
index 650230d..7b6620e 100644
--- a/Assets/FlashTools/Docs/CHANGELOG.md
+++ b/Assets/FlashTools/Docs/CHANGELOG.md
@@ -1,5 +1,6 @@
###### Version 1.3.10
* Fix (conversion error: 'Error: scaleSelection: Argument number 1 is invalid.')
+* More readable conversion warnings
###### Version 1.3.9
* Not save generated meshes in scene
diff --git a/Assets/FlashTools/Scripts/Editor/FTEditor/Postprocessors/SwfPostprocessor.cs b/Assets/FlashTools/Scripts/Editor/FTEditor/Postprocessors/SwfPostprocessor.cs
index 18992e8..decd8c0 100644
--- a/Assets/FlashTools/Scripts/Editor/FTEditor/Postprocessors/SwfPostprocessor.cs
+++ b/Assets/FlashTools/Scripts/Editor/FTEditor/Postprocessors/SwfPostprocessor.cs
@@ -75,7 +75,7 @@ namespace FTEditor.Postprocessors {
} catch ( Exception e ) {
Debug.LogErrorFormat(
AssetDatabase.LoadMainAssetAtPath(swf_path),
- "[FlashTools] Parsing swf error: {0}\nPath: {1}",
+ "[FlashTools] Parsing swf error: {0}\nSwf path: {1}",
e.Message, swf_path);
return false;
} finally {
@@ -90,7 +90,7 @@ namespace FTEditor.Postprocessors {
});
return new SwfAssetData{
FrameRate = decoder.UncompressedHeader.FrameRate,
- Symbols = LoadSymbols(library, decoder),
+ Symbols = LoadSymbols(swf_path, library, decoder),
Bitmaps = LoadBitmaps(library)};
}
@@ -101,10 +101,10 @@ namespace FTEditor.Postprocessors {
// ---------------------------------------------------------------------
static List LoadSymbols(
- SwfLibrary library, SwfDecoder decoder)
+ string swf_path, SwfLibrary library, SwfDecoder decoder)
{
var symbols = new List();
- symbols.Add(LoadSymbol("_Stage_", library, decoder.Tags));
+ symbols.Add(LoadSymbol(swf_path, "_Stage_", library, decoder.Tags));
var sprite_defs = library.Defines.Values
.OfType()
.Where(p => !string.IsNullOrEmpty(p.ExportName))
@@ -113,24 +113,33 @@ namespace FTEditor.Postprocessors {
var def = sprite_defs[i];
var name = def.ExportName;
var tags = def.ControlTags.Tags;
- symbols.Add(LoadSymbol(name, library, tags));
+ symbols.Add(LoadSymbol(swf_path, name, library, tags));
}
return symbols;
}
static SwfSymbolData LoadSymbol(
- string symbol_name, SwfLibrary library, List tags)
+ string swf_path, string symbol_name, SwfLibrary library, List tags)
{
+ var warnings = new HashSet();
var disp_lst = new SwfDisplayList();
var executer = new SwfContextExecuter(library, 0, warning_msg => {
- Debug.LogWarningFormat("[FlashTools] {0}", warning_msg);
+ warnings.Add(warning_msg);
});
var symbol_frames = new List();
while ( executer.NextFrame(tags, disp_lst) ) {
_progressBar.UpdateProgress(
string.Format("swf symbols loading ({0})", symbol_name),
(float)(executer.CurrentTag + 1) / tags.Count);
- symbol_frames.Add(LoadSymbolFrameData(library, disp_lst));
+ symbol_frames.Add(LoadSymbolFrameData(library, disp_lst, warning_msg => {
+ warnings.Add(warning_msg);
+ }));
+ }
+ foreach ( var warning in warnings ) {
+ Debug.LogWarningFormat(
+ AssetDatabase.LoadMainAssetAtPath(swf_path),
+ "[FlashTools] {0}\nSwf path: {1}",
+ warning, swf_path);
}
return new SwfSymbolData{
Name = symbol_name,
@@ -138,7 +147,7 @@ namespace FTEditor.Postprocessors {
}
static SwfFrameData LoadSymbolFrameData(
- SwfLibrary library, SwfDisplayList display_list)
+ SwfLibrary library, SwfDisplayList display_list, System.Action warning_log)
{
var frame = new SwfFrameData{
Anchor = display_list.FrameAnchors.Count > 0
@@ -154,7 +163,8 @@ namespace FTEditor.Postprocessors {
0,
0,
null,
- frame);
+ frame,
+ warning_log);
}
static SwfFrameData AddDisplayListToFrame(
@@ -166,23 +176,26 @@ namespace FTEditor.Postprocessors {
ushort parent_masked,
ushort parent_mask,
List parent_masks,
- SwfFrameData frame)
+ SwfFrameData frame,
+ System.Action warning_log)
{
- var inst_filter_types = display_list.Instances.Values
- .Where(p => p.Visible && p.FilterList.Filters.Count > 0)
- .SelectMany(p => p.FilterList.Filters)
- .Select(p => p.Type)
- .Distinct();
- foreach ( var filter_type in inst_filter_types ) {
- Debug.LogWarningFormat(
- "[FlashTools] SwfSurfaceFilters. Unsupported filter type '{0}'",
- filter_type);
+ if ( warning_log != null ) {
+ var inst_filter_types = display_list.Instances.Values
+ .Where(p => p.Visible && p.FilterList.Filters.Count > 0)
+ .SelectMany(p => p.FilterList.Filters)
+ .Select(p => p.Type)
+ .Distinct();
+ foreach ( var filter_type in inst_filter_types ) {
+ warning_log(string.Format(
+ "Unsupported filter type '{0}'",
+ filter_type));
+ }
}
var self_masks = new List();
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_blend_mode = parent_blend_mode * inst.BlendMode .ToBlendModeData();
+ var child_blend_mode = parent_blend_mode * inst.BlendMode .ToBlendModeData(warning_log);
var child_color_transform = parent_color_transform * inst.ColorTransform.ToColorTransData();
switch ( inst.Type ) {
case SwfDisplayInstanceType.Shape:
@@ -209,7 +222,8 @@ namespace FTEditor.Postprocessors {
parent_mask,
parent_masks,
self_masks,
- frame);
+ frame,
+ warning_log);
break;
default:
throw new UnityException(string.Format(
@@ -278,7 +292,8 @@ namespace FTEditor.Postprocessors {
ushort parent_mask,
List parent_masks,
List self_masks,
- SwfFrameData frame)
+ SwfFrameData frame,
+ System.Action warning_log)
{
var sprite_def = library.FindDefine(inst.Id);
if ( sprite_def != null ) {
@@ -299,7 +314,8 @@ namespace FTEditor.Postprocessors {
: (inst.ClipDepth > 0
? self_masks
: null),
- frame);
+ frame,
+ warning_log);
}
}
@@ -360,7 +376,9 @@ namespace FTEditor.Postprocessors {
return mat;
}
- public static SwfBlendModeData ToBlendModeData(this SwfBlendMode self) {
+ public static SwfBlendModeData ToBlendModeData(
+ this SwfBlendMode self, System.Action warning_log)
+ {
switch ( self.Value ) {
case SwfBlendMode.Mode.Normal:
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
@@ -387,9 +405,11 @@ namespace FTEditor.Postprocessors {
case SwfBlendMode.Mode.Hardlight:
return new SwfBlendModeData(SwfBlendModeData.Types.Hardlight);
default:
- Debug.LogWarningFormat(
- "[FlashTools] SwfBlendMode. Unsupported blend mode '{0}'",
- self.Value);
+ if ( warning_log != null ) {
+ warning_log(string.Format(
+ "Unsupported blend mode '{0}'",
+ self.Value));
+ }
return new SwfBlendModeData(SwfBlendModeData.Types.Normal);
}
}
diff --git a/Assets/FlashTools/Scripts/Editor/FTSwfTools/SwfContextExecuter.cs b/Assets/FlashTools/Scripts/Editor/FTSwfTools/SwfContextExecuter.cs
index 80c8cd7..ee4fd15 100644
--- a/Assets/FlashTools/Scripts/Editor/FTSwfTools/SwfContextExecuter.cs
+++ b/Assets/FlashTools/Scripts/Editor/FTSwfTools/SwfContextExecuter.cs
@@ -305,7 +305,7 @@ namespace FTSwfTools {
void TagToWarningLog(SwfTagBase tag) {
if ( WarningLog != null ) {
- WarningLog(string.Format("SwfContextExecuter: {0}", tag));
+ WarningLog(string.Format("{0}", tag));
}
}
diff --git a/ProjectStuff/FlashTools.org b/ProjectStuff/FlashTools.org
index b90a07b..879fd01 100644
--- a/ProjectStuff/FlashTools.org
+++ b/ProjectStuff/FlashTools.org
@@ -54,7 +54,7 @@ https://gist.github.com/talecrafter/111ea3345911bd238f4998b4d5a04bf3
*** Улучшения
**** TODO Сделать возможность задавать локальные настройки для папки, а не только глобальные
**** TODO Note на ассет когда текстура сжата до максимального размера
-**** TODO У ворнингов конверта нет контекста
+**** DONE У ворнингов конверта нет контекста
**** TODO Поддержка юнити-атласов
**** TODO Поддержка задавать теги и сплит текстур на альфу для etc
*** Баги