#pragma once #include "CDrawableModel.h" #include "CAnimation.h" class CDrawableAnimatable : public CDrawableModel { public: class CJoint { public: CJoint(const std::string& name = "", CJoint* parent = nullptr); std::string Name; CJoint* Parent = nullptr; glm::mat4x4 BindPose; CTransform Transform; glm::mat4x4 GetMatrix(); glm::mat4x4 GlobalBind; }; //TODO priority (+CPrioritiesManager class) //TODO splines (like animgraph?) struct CAnimationInstance { float AnimationWeight = 1.0f; std::shared_ptr Animation; float PlaybackTime = 0.0f; float PlaybackRate = 1.0f; bool OldInterp = false; InterpolationType InterpType = InterpolationType::Linear; }; void AddAnimation(std::shared_ptr _anim, float rate = 1.0f, float weight = 1.0f, float startTime = 0.0f); std::vector Animations; std::vector Joints; CDrawableAnimatable(); DEFINE_SOL_USERTYPE(); };