Added AnimationFileResource that combine animations with sync tracks.
This commit is contained in:
@@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user