63 virtual void Create()
override;
64 virtual void Destroy()
override;
67 virtual void Tick(
float deltaTime)
override;
68 virtual void EditorTick(
float deltaTime)
override;
76 void PlayAnimation(
const char* animName,
bool loop,
float speed = 1.0f,
float weight = 1.0f, int32_t priority = -1);
77 void QueueAnimation(
const char* animName,
bool loop,
const char* targetAnim =
nullptr,
float speed = 1.0f,
float weight = 1.0f, int32_t priority = -1);
78 void StopAnimation(
const char* animName,
bool cancelQueued =
false);
79 void StopAllAnimations(
bool cancelQueued =
false);
80 void CancelQueuedAnimation(
const char* animName);
81 void CancelAllQueuedAnimations();
82 bool IsAnimationPlaying(
const char* animName);
83 void ResetAnimation();
84 float GetAnimationSpeed()
const;
85 void SetAnimationSpeed(
float speed);
87 void SetAnimationPaused(
bool paused);
88 bool IsAnimationPaused()
const;
90 void SetInheritPose(
bool inherit);
91 bool IsInheritPoseEnabled()
const;
93 void SetBoundsRadiusOverride(
float radius);
94 float GetBoundsRadiusOverride()
const;
96 bool HasAnimatedThisFrame()
const;
99 std::vector<ActiveAnimation>& GetActiveAnimations();
101 QueuedAnimation* FindQueuedAnimation(
const char* animName,
const char* dependName =
nullptr);
102 std::vector<QueuedAnimation>& GetQueuedAnimations();
104 glm::mat4 GetBoneTransform(
const std::string& name)
const;
105 glm::vec3 GetBonePosition(
const std::string& name)
const;
106 glm::quat GetBoneRotationQuat(
const std::string& name)
const;
107 glm::vec3 GetBoneRotationEuler(
const std::string& name)
const;
108 glm::vec3 GetBoneScale(
const std::string& name)
const;
110 glm::mat4 GetBoneTransform(int32_t index)
const;
111 glm::vec3 GetBonePosition(int32_t boneIndex)
const;
112 glm::quat GetBoneRotationQuat(int32_t boneIndex)
const;
113 glm::vec3 GetBoneRotationEuler(int32_t boneIndex)
const;
114 glm::vec3 GetBoneScale(int32_t boneIndex)
const;
116 void SetBoneTransform(int32_t boneIndex,
const glm::mat4& transform);
117 void SetBonePosition(int32_t boneIndex, glm::vec3 position);
118 void SetBoneRotation(int32_t boneIndex, glm::vec3 rotation);
119 void SetBoneScale(int32_t boneIndex, glm::vec2 scale);
121 uint32_t GetNumBones()
const;
127 Vertex* GetSkinnedVertices();
128 uint32_t GetNumSkinnedVertices();
131 virtual void Render()
override;
133 void UpdateAnimation(
float deltaTime,
bool updateBones);
137 int32_t FindBoneIndex(
const std::string& name)
const;
141 void SetScriptAnimEventHandler(
const ScriptFunc& func);
149 glm::vec3 InterpolateScale(
float time,
const Channel& channel);
150 glm::quat InterpolateRotation(
float time,
const Channel& channel);
151 glm::vec3 InterpolatePosition(
float time,
const Channel& channel);
152 void DetectTriggeredAnimEvents(
156 float animationSpeed,
157 std::vector<AnimEvent>& outEvents);
159 uint32_t FindScaleIndex(
float time,
const Channel& channel);
160 uint32_t FindRotationIndex(
float time,
const Channel& channel);
161 uint32_t FindPositionIndex(
float time,
const Channel& channel);
163 void UpdateAttachedChildren(
float deltaTime);
164 void CpuSkinVertices();
172 float mAnimationSpeed = 1.0f;
175 float mBoundsRadiusOverride = 0.0f;
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
AnimationUpdateMode
Definition SkeletalMesh3d.h:15
@ AlwaysUpdateTimeAndBones
void(* AnimEventHandlerFP)(const AnimEvent &animEvent)
Definition SkeletalMesh3d.h:49
BoneInfluenceMode
Definition SkeletalMesh3d.h:8
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Mesh3d.cpp:12
virtual bool IsSkeletalMesh3D() const
Definition Mesh3d.cpp:132
virtual const char * GetTypeName() const override
Definition Mesh3d.cpp:39
virtual Material * GetMaterial()=0
virtual bool IsStaticMesh3D() const
Definition Mesh3d.cpp:127
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Mesh3d.cpp:44
void TickCommon(float deltaTime)
Definition Node.cpp:573
virtual void EditorTick(float deltaTime)
Definition Node.cpp:563
virtual void Destroy() override
Definition Primitive3d.cpp:129
virtual Bounds GetLocalBounds() const
Definition Primitive3d.cpp:829
virtual void Tick(float deltaTime) override
Definition Primitive3d.cpp:163
virtual void Render() override
Definition Primitive3d.cpp:259
virtual void Create() override
Definition Primitive3d.cpp:117
Definition ScriptFunc.h:10
Definition SkeletalMesh3d.h:52
std::vector< ActiveAnimation > mActiveAnimations
Definition SkeletalMesh3d.h:173
bool mInheritPose
Definition SkeletalMesh3d.h:178
std::vector< Vertex > mSkinnedVertices
Definition SkeletalMesh3d.h:168
ScriptableFP< AnimEventHandlerFP > mAnimEventHandler
Definition SkeletalMesh3d.h:170
std::vector< glm::mat4 > mBoneMatrices
Definition SkeletalMesh3d.h:167
BoneInfluenceMode mBoneInfluenceMode
Definition SkeletalMesh3d.h:181
std::string mDefaultAnimation
Definition SkeletalMesh3d.h:171
bool mHasAnimatedThisFrame
Definition SkeletalMesh3d.h:179
bool mRevertToBindPose
Definition SkeletalMesh3d.h:177
std::vector< QueuedAnimation > mQueuedAnimations
Definition SkeletalMesh3d.h:174
SkeletalMeshCompResource mResource
Definition SkeletalMesh3d.h:185
AnimationUpdateMode mAnimationUpdateMode
Definition SkeletalMesh3d.h:182
SkeletalMeshRef mSkeletalMesh
Definition SkeletalMesh3d.h:166
DECLARE_NODE(SkeletalMesh3D, Mesh3D)
bool mAnimationPaused
Definition SkeletalMesh3d.h:176
Definition SkeletalMesh.h:86
Definition SkeletalMesh3d.h:29
bool mLoop
Definition SkeletalMesh3d.h:35
float mSpeed
Definition SkeletalMesh3d.h:32
int32_t mSlot
Definition SkeletalMesh3d.h:34
std::string mName
Definition SkeletalMesh3d.h:30
float mTime
Definition SkeletalMesh3d.h:31
float mWeight
Definition SkeletalMesh3d.h:33
Definition SkeletalMesh.h:60
Definition SkeletalMesh.h:77
Definition EngineTypes.h:193
Definition SkeletalMesh.h:69
Definition SkeletalMesh3d.h:39
bool mLoop
Definition SkeletalMesh3d.h:45
float mTime
Definition SkeletalMesh3d.h:42
std::string mName
Definition SkeletalMesh3d.h:40
std::string mDependentAnim
Definition SkeletalMesh3d.h:41
float mWeight
Definition SkeletalMesh3d.h:44
float mSpeed
Definition SkeletalMesh3d.h:43
int32_t mSlot
Definition SkeletalMesh3d.h:46
Definition ScriptFunc.h:43
Definition GraphicsTypes.h:208