More readable conversion warnings

This commit is contained in:
2017-08-14 21:57:12 +07:00
parent cd69f3dcd3
commit bcd6905e27
4 changed files with 51 additions and 30 deletions

View File

@@ -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

View File

@@ -75,7 +75,7 @@ namespace FTEditor.Postprocessors {
} catch ( Exception e ) {
Debug.LogErrorFormat(
AssetDatabase.LoadMainAssetAtPath(swf_path),
"<b>[FlashTools]</b> Parsing swf error: {0}\nPath: {1}",
"<b>[FlashTools]</b> 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<SwfSymbolData> LoadSymbols(
SwfLibrary library, SwfDecoder decoder)
string swf_path, SwfLibrary library, SwfDecoder decoder)
{
var symbols = new List<SwfSymbolData>();
symbols.Add(LoadSymbol("_Stage_", library, decoder.Tags));
symbols.Add(LoadSymbol(swf_path, "_Stage_", library, decoder.Tags));
var sprite_defs = library.Defines.Values
.OfType<SwfLibrarySpriteDefine>()
.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<SwfTagBase> tags)
string swf_path, string symbol_name, SwfLibrary library, List<SwfTagBase> tags)
{
var warnings = new HashSet<string>();
var disp_lst = new SwfDisplayList();
var executer = new SwfContextExecuter(library, 0, warning_msg => {
Debug.LogWarningFormat("<b>[FlashTools]</b> {0}", warning_msg);
warnings.Add(warning_msg);
});
var symbol_frames = new List<SwfFrameData>();
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),
"<b>[FlashTools]</b> {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<string> 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<SwfInstanceData> parent_masks,
SwfFrameData frame)
SwfFrameData frame,
System.Action<string> warning_log)
{
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 ) {
Debug.LogWarningFormat(
"<b>[FlashTools]</b> SwfSurfaceFilters. Unsupported filter type '{0}'",
filter_type);
warning_log(string.Format(
"Unsupported filter type '{0}'",
filter_type));
}
}
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_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<SwfInstanceData> parent_masks,
List<SwfInstanceData> self_masks,
SwfFrameData frame)
SwfFrameData frame,
System.Action<string> warning_log)
{
var sprite_def = library.FindDefine<SwfLibrarySpriteDefine>(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<string> 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(
"<b>[FlashTools]</b> 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);
}
}

View File

@@ -305,7 +305,7 @@ namespace FTSwfTools {
void TagToWarningLog(SwfTagBase tag) {
if ( WarningLog != null ) {
WarningLog(string.Format("SwfContextExecuter: {0}", tag));
WarningLog(string.Format("{0}", tag));
}
}

View File

@@ -54,7 +54,7 @@ https://gist.github.com/talecrafter/111ea3345911bd238f4998b4d5a04bf3
*** Улучшения
**** TODO Сделать возможность задавать локальные настройки для папки, а не только глобальные
**** TODO Note на ассет когда текстура сжата до максимального размера
**** TODO У ворнингов конверта нет контекста
**** DONE У ворнингов конверта нет контекста
**** TODO Поддержка юнити-атласов
**** TODO Поддержка задавать теги и сплит текстур на альфу для etc
*** Баги