From f6f7e92ceae7e88238e3ee44a7042dd5e4e1e15a Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Fri, 11 Apr 2025 13:05:50 +0200 Subject: [PATCH] Added name to AnimationResource. --- src/AnimGraph/AnimGraphData.h | 22 ++++++++++++++++++++-- src/AnimGraph/AnimGraphNodes.cc | 5 ++++- src/SkinnedMeshResource.cc | 2 -- tests/AnimGraphEvalTests.cc | 2 ++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/AnimGraph/AnimGraphData.h b/src/AnimGraph/AnimGraphData.h index d5bd19a..6a82d87 100644 --- a/src/AnimGraph/AnimGraphData.h +++ b/src/AnimGraph/AnimGraphData.h @@ -32,11 +32,29 @@ struct AnimDataRef { Pose* ptr = nullptr; }; -struct AnimationFileResource { +struct AnimationResource { + std::string m_name; ozz::animation::Animation* m_animation; SyncTrack m_sync_track; }; +inline void to_json( + nlohmann::json& j, + const AnimationResource& animation_resource) { + j["type"] = "AnimationResource"; + j["synctrack"] = animation_resource.m_sync_track; + j["name"] = animation_resource.m_name; +} + +inline void from_json( + const nlohmann::json& j, + AnimationResource& animation_resource) { + assert(j["type"] == "AnimationResource"); + + animation_resource.m_sync_track = j["synctrack"]; + animation_resource.m_name = j["name"]; +} + struct AnimDataAllocator { struct PoseList { Pose* m_anim_data = nullptr; @@ -108,7 +126,7 @@ struct AnimGraphContext { AnimGraph* m_graph = nullptr; ozz::animation::Skeleton* m_skeleton = nullptr; - typedef std::map AnimationFileMap; + typedef std::map AnimationFileMap; AnimationFileMap m_animation_map; void freeAnimations() { diff --git a/src/AnimGraph/AnimGraphNodes.cc b/src/AnimGraph/AnimGraphNodes.cc index e12b0c5..e9672ba 100644 --- a/src/AnimGraph/AnimGraphNodes.cc +++ b/src/AnimGraph/AnimGraphNodes.cc @@ -151,7 +151,10 @@ bool AnimSamplerNode::Init(AnimGraphContext& context) { archive >> *m_animation; - context.m_animation_map[m_filename] = {m_animation, SyncTrack()}; + context.m_animation_map[m_filename] = { + m_filename, + m_animation, + SyncTrack()}; } assert(context.m_skeleton != nullptr); diff --git a/src/SkinnedMeshResource.cc b/src/SkinnedMeshResource.cc index d447e20..8c733c3 100644 --- a/src/SkinnedMeshResource.cc +++ b/src/SkinnedMeshResource.cc @@ -109,5 +109,3 @@ void SkinnedMeshResource::createInstance(SkinnedMesh& skinnedMesh) const { skinnedMesh.m_animation_sync_track.back() = m_sync_tracks[i]; } } - - diff --git a/tests/AnimGraphEvalTests.cc b/tests/AnimGraphEvalTests.cc index 9ab16b2..1c8383b 100644 --- a/tests/AnimGraphEvalTests.cc +++ b/tests/AnimGraphEvalTests.cc @@ -199,9 +199,11 @@ TEST_CASE_METHOD( AnimGraphContext graph_context; graph_context.m_skeleton = skeleton.get(); graph_context.m_animation_map["trans_x"] = { + "trans_x", animation_translate_x.get(), animation_translate_x_sync_track}; graph_context.m_animation_map["trans_y"] = { + "trans_y", animation_translate_y.get(), animation_translate_y_sync_track};