Added AnimationFileResource that combine animations with sync tracks.

This commit is contained in:
Martin Felis
2025-03-20 16:16:16 +01:00
parent 86ea476881
commit 887131af37
3 changed files with 21 additions and 6 deletions
+7 -2
View File
@@ -33,6 +33,11 @@ struct AnimDataRef {
Pose* ptr = nullptr;
};
struct AnimationFileResource {
ozz::animation::Animation* m_animation;
SyncTrack m_sync_track;
};
struct AnimDataAllocator {
struct PoseList {
Pose* m_anim_data = nullptr;
@@ -102,14 +107,14 @@ struct AnimGraphContext {
AnimGraph* m_graph = nullptr;
ozz::animation::Skeleton* m_skeleton = nullptr;
typedef std::map<std::string, ozz::animation::Animation*> AnimationFileMap;
typedef std::map<std::string, AnimationFileResource> AnimationFileMap;
AnimationFileMap m_animation_map;
void freeAnimations() {
AnimationFileMap::iterator animation_map_iter = m_animation_map.begin();
while (animation_map_iter != m_animation_map.end()) {
delete animation_map_iter->second;
delete animation_map_iter->second.m_animation;
animation_map_iter++;
}
}
+3 -2
View File
@@ -132,7 +132,8 @@ bool AnimSamplerNode::Init(AnimGraphContext& context) {
AnimGraphContext::AnimationFileMap::const_iterator animation_map_iter;
animation_map_iter = context.m_animation_map.find(m_filename);
if (animation_map_iter != context.m_animation_map.end()) {
m_animation = animation_map_iter->second;
m_animation = animation_map_iter->second.m_animation;
m_sync_track = animation_map_iter->second.m_sync_track;
} else {
m_animation = new ozz::animation::Animation();
ozz::io::File file(m_filename.c_str(), "rb");
@@ -150,7 +151,7 @@ bool AnimSamplerNode::Init(AnimGraphContext& context) {
archive >> *m_animation;
context.m_animation_map[m_filename] = m_animation;
context.m_animation_map[m_filename] = {m_animation, SyncTrack()};
}
assert(context.m_skeleton != nullptr);