fix bug with big multiple reimport

This commit is contained in:
2017-06-16 00:12:41 +07:00
parent 8b165ba45f
commit 47973918ad
5 changed files with 44 additions and 29 deletions

View File

@@ -42,7 +42,11 @@ namespace FTEditor.Editors {
} }
static void ReconvertAsset(SwfAsset asset) { static void ReconvertAsset(SwfAsset asset) {
asset.Atlas = null; if ( asset.Atlas ) {
AssetDatabase.DeleteAsset(
AssetDatabase.GetAssetPath(asset.Atlas));
asset.Atlas = null;
}
EditorUtility.SetDirty(asset); EditorUtility.SetDirty(asset);
AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(asset)); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(asset));
} }

View File

@@ -18,15 +18,15 @@ namespace FTEditor.Postprocessors {
string[] moved_assets, string[] moved_assets,
string[] moved_from_asset_paths) string[] moved_from_asset_paths)
{ {
var asset_paths = imported_assets var assets = imported_assets
.Where(p => Path.GetExtension(p).ToLower().Equals(".asset")); .Where(p => Path.GetExtension(p).ToLower().Equals(".asset"))
var assets = asset_paths
.Select(p => AssetDatabase.LoadAssetAtPath<SwfAsset>(p)) .Select(p => AssetDatabase.LoadAssetAtPath<SwfAsset>(p))
.Where(p => !!p); .Where(p => p && !p.Atlas);
foreach ( var asset in assets ) { if ( assets.Any() ) {
var asset_copy = asset;
EditorApplication.delayCall += () => { EditorApplication.delayCall += () => {
SwfAssetProcess(asset_copy); foreach ( var asset in assets ) {
SwfAssetProcess(asset);
}
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
}; };
} }
@@ -34,18 +34,19 @@ namespace FTEditor.Postprocessors {
static void SwfAssetProcess(SwfAsset asset) { static void SwfAssetProcess(SwfAsset asset) {
try { try {
if ( !asset.Atlas ) { EditorUtility.SetDirty(asset);
asset.Atlas = LoadAssetAtlas(asset);
if ( asset.Atlas ) {
ConfigureAtlas(asset);
ConfigureClips(
asset,
SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data));
} else {
_progressBar.UpdateTitle(asset.name); _progressBar.UpdateTitle(asset.name);
var new_data = ConfigureBitmaps( var new_data = ConfigureBitmaps(
asset, asset,
SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data)); SwfEditorUtils.DecompressAsset<SwfAssetData>(asset.Data));
asset.Data = SwfEditorUtils.CompressAsset(new_data); asset.Data = SwfEditorUtils.CompressAsset(new_data);
asset.Atlas = LoadAssetAtlas(asset);
if ( asset.Atlas ) {
ConfigureAtlas(asset);
ConfigureClips(asset, new_data);
}
EditorUtility.SetDirty(asset);
} }
} catch ( Exception e ) { } catch ( Exception e ) {
Debug.LogErrorFormat( Debug.LogErrorFormat(

View File

@@ -24,17 +24,18 @@ namespace FTEditor.Postprocessors {
{ {
var swf_paths = imported_assets var swf_paths = imported_assets
.Where(p => Path.GetExtension(p).ToLower().Equals(".swf")); .Where(p => Path.GetExtension(p).ToLower().Equals(".swf"));
if ( swf_paths.Any() && SwfEditorUtils.IsDemoEnded ) { if ( swf_paths.Any() ) {
var title = "Demo version"; if ( SwfEditorUtils.IsDemoEnded ) {
var message = var title = "Demo version";
"This demo is for evaluation purpose only. " + var message =
"It means that you can't have more than 5 animation assets in the project."; "This demo is for evaluation purpose only. " +
EditorUtility.DisplayDialog(title, message, "Ok"); "It means that you can't have more than 5 animation assets in the project.";
} else { EditorUtility.DisplayDialog(title, message, "Ok");
foreach ( var swf_path in swf_paths ) { } else {
var swf_path_copy = swf_path;
EditorApplication.delayCall += () => { EditorApplication.delayCall += () => {
SwfFileProcess(swf_path_copy); foreach ( var swf_path in swf_paths ) {
SwfFileProcess(swf_path);
}
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
}; };
} }
@@ -62,7 +63,11 @@ namespace FTEditor.Postprocessors {
var new_data = LoadSwfAssetData(swf_path); var new_data = LoadSwfAssetData(swf_path);
swf_asset.Data = SwfEditorUtils.CompressAsset(new_data); swf_asset.Data = SwfEditorUtils.CompressAsset(new_data);
swf_asset.Hash = swf_hash; swf_asset.Hash = swf_hash;
swf_asset.Atlas = null; if ( swf_asset.Atlas ) {
AssetDatabase.DeleteAsset(
AssetDatabase.GetAssetPath(swf_asset.Atlas));
swf_asset.Atlas = null;
}
EditorUtility.SetDirty(swf_asset); EditorUtility.SetDirty(swf_asset);
return true; return true;
} catch ( Exception e ) { } catch ( Exception e ) {

View File

@@ -318,7 +318,11 @@ namespace FTEditor {
Tools_FlashTools_ReimportAllSwfFiles(); Tools_FlashTools_ReimportAllSwfFiles();
var swf_assets = GetAllSwfAssets(); var swf_assets = GetAllSwfAssets();
foreach ( var swf_asset in swf_assets ) { foreach ( var swf_asset in swf_assets ) {
swf_asset.Atlas = null; if ( swf_asset.Atlas ) {
AssetDatabase.DeleteAsset(
AssetDatabase.GetAssetPath(swf_asset.Atlas));
swf_asset.Atlas = null;
}
EditorUtility.SetDirty(swf_asset); EditorUtility.SetDirty(swf_asset);
AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(swf_asset)); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(swf_asset));
} }

View File

@@ -78,6 +78,7 @@ dipyalov: фишка в том, что swf обновился, но и собр
Таки стоит, но с рекурсивным выносом в отдельные символы и последующей их обработкой Таки стоит, но с рекурсивным выносом в отдельные символы и последующей их обработкой
**** DONE В ошибках конвертации писать, что нужно прогнать через скрипт экспорта **** DONE В ошибках конвертации писать, что нужно прогнать через скрипт экспорта
А еще лучше как-то метить прогнанную анимацию и нет А еще лучше как-то метить прогнанную анимацию и нет
**** TODO Добавить прогресс на LoadSymbol
*** Баги *** Баги
**** DONE При больших (>= 4000 пикселей) выделениях не работает convertSelectionToBitmap **** DONE При больших (>= 4000 пикселей) выделениях не работает convertSelectionToBitmap
**** DONE В ошибках конвертации не пишется путь до swf **** DONE В ошибках конвертации не пишется путь до swf
@@ -89,7 +90,7 @@ https://fogbugz.unity3d.com/default.asp?910858_0diqjnj67814hj3i
http://ru.esotericsoftware.com/forum/Submeshes-render-in-random-order-with-orthographic-camera-8528 http://ru.esotericsoftware.com/forum/Submeshes-render-in-random-order-with-orthographic-camera-8528
**** DONE При автоплее с пустым клипом контроллер накапливает _tickTimer **** DONE При автоплее с пустым клипом контроллер накапливает _tickTimer
**** DONE Шейпы в классических твинах (да, это ошибка, но флеш её пропускает) не растеризуются **** DONE Шейпы в классических твинах (да, это ошибка, но флеш её пропускает) не растеризуются
**** TODO При множественном импорте ошибка в импорте по поводу удаление из-под носа ассета воспроизводится 100% **** DONE При множественном импорте ошибка в импорте по поводу удаление из-под носа ассета воспроизводится 100%
**** DONE Некорректно кончающиеся твинны плохо дружат с оптимизацией и растеризацией **** DONE Некорректно кончающиеся твинны плохо дружат с оптимизацией и растеризацией
**** TODO Скейл фильтров не заходит в группы **** TODO Скейл фильтров не заходит в группы
** DONE Версия 1.3.7 ** DONE Версия 1.3.7