diff --git a/Assets/FlashTools/Examples/Animations/Tests/0_keyframes.fla b/Assets/FlashTools/Examples/Animations/Tests/0_keyframes.fla index c8a3ea3..bffa38b 100644 Binary files a/Assets/FlashTools/Examples/Animations/Tests/0_keyframes.fla and b/Assets/FlashTools/Examples/Animations/Tests/0_keyframes.fla differ diff --git a/Assets/FlashTools/Scripts/FlashAnim.cs b/Assets/FlashTools/Scripts/FlashAnim.cs index 18aaab4..ab9249e 100644 --- a/Assets/FlashTools/Scripts/FlashAnim.cs +++ b/Assets/FlashTools/Scripts/FlashAnim.cs @@ -183,14 +183,16 @@ namespace FlashTools { } void Update() { - _frame_timer += 25.0f * Time.deltaTime; - while ( _frame_timer > 1.0f ) { - _frame_timer -= 1.0f; - ++_current_frame; - if ( _current_frame > frameCount - 1 ) { - _current_frame = 0; + if ( Asset ) { + _frame_timer += Asset.Data.FrameRate * Time.deltaTime; + while ( _frame_timer > 1.0f ) { + _frame_timer -= 1.0f; + ++_current_frame; + if ( _current_frame > frameCount - 1 ) { + _current_frame = 0; + } + //Debug.LogFormat("Cur frame: {0}", _current_frame); } - //Debug.LogFormat("Cur frame: {0}", _current_frame); } } @@ -207,31 +209,6 @@ namespace FlashTools { 1.0f / Asset.PixelsPerUnit, -1.0f / Asset.PixelsPerUnit, 1.0f / Asset.PixelsPerUnit))); - - /* - if ( _vertices_arr.Length < _vertices.Count ) { - _vertices_arr = _vertices.ToArray(); - } else { - _vertices.CopyTo(_vertices_arr); - } - if ( _triangles_arr.Length < _triangles.Count ) { - _triangles_arr = _triangles.ToArray(); - } else { - _triangles.CopyTo(_triangles_arr); - } - if ( _uvs_arr.Length < _uvs.Count ) { - _uvs_arr = _uvs.ToArray(); - } else { - _uvs.CopyTo(_uvs_arr); - } - - var mesh = new Mesh(); - mesh.vertices = _vertices_arr; - mesh.triangles = _triangles_arr; - mesh.uv = _uvs_arr; - mesh.RecalculateNormals(); - GetComponent().mesh = mesh;*/ - var mesh_filter = GetComponent(); if ( mesh_filter ) { var mesh = mesh_filter.sharedMesh diff --git a/Assets/FlashTools/Scripts/FlashAnimAsset.cs b/Assets/FlashTools/Scripts/FlashAnimAsset.cs index c24f1ea..baa0144 100644 --- a/Assets/FlashTools/Scripts/FlashAnimAsset.cs +++ b/Assets/FlashTools/Scripts/FlashAnimAsset.cs @@ -96,9 +96,10 @@ namespace FlashTools { [System.Serializable] public class FlashAnimData { - public FlashAnimSymbolData Stage = new FlashAnimSymbolData(); - public FlashAnimLibraryData Library = new FlashAnimLibraryData(); - public List Strings = new List(); + public FlashAnimSymbolData Stage = new FlashAnimSymbolData(); + public FlashAnimLibraryData Library = new FlashAnimLibraryData(); + public List Strings = new List(); + public int FrameRate = 24; } public class FlashAnimAsset : ScriptableObject { diff --git a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimFtaPostprocessor.cs b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimFtaPostprocessor.cs index d6460c4..afe7a80 100644 --- a/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimFtaPostprocessor.cs +++ b/Assets/FlashTools/Scripts/Internal/Editor/FlashAnimFtaPostprocessor.cs @@ -37,18 +37,27 @@ namespace FlashTools.Internal { static FlashAnimData LoadFlashAnimFromFtaFile(string fta_path) { try { - var fta_root_elem = XDocument.Load(fta_path).Document.Root; - var flash_anim_data = new FlashAnimData(); - LoadFlashAnimStageFromFtaRootElem (fta_root_elem, flash_anim_data); - LoadFlashAnimLibraryFromFtaRootElem(fta_root_elem, flash_anim_data); - LoadFlashAnimStringsFromFtaRootElem(fta_root_elem, flash_anim_data); - return flash_anim_data; + return LoadFlashAnimDocFromFtaRootElem( + XDocument.Load(fta_path).Document.Root, + new FlashAnimData()); } catch ( Exception e ) { Debug.LogErrorFormat("Parsing flash anim .fta file error: {0}", e.Message); return null; } } + // ----------------------------- + // Document + // ----------------------------- + + static FlashAnimData LoadFlashAnimDocFromFtaRootElem(XElement root_elem, FlashAnimData data) { + data.FrameRate = SafeLoadIntFromElemAttr(root_elem, "frame_rate", data.FrameRate); + LoadFlashAnimStageFromFtaRootElem (root_elem, data); + LoadFlashAnimLibraryFromFtaRootElem(root_elem, data); + LoadFlashAnimStringsFromFtaRootElem(root_elem, data); + return data; + } + // ----------------------------- // Stage // -----------------------------