96 virtual void Create()
override;
97 virtual void Destroy()
override;
100 virtual void Tick(
float deltaTime)
override;
101 virtual void EditorTick(
float deltaTime)
override;
109 void PlayAnimation(
const char* animName,
bool loop,
float speed = 1.0f,
float weight = 1.0f, int32_t priority = -1);
115 void PlayAnimationMasked(
const char* animName, int32_t slot,
BoneMaskAsset* mask,
116 bool loop,
float speed = 1.0f,
float weight = 1.0f);
121 void PlayAnimationAdditive(
const char* animName, int32_t slot,
BoneMaskAsset* mask,
122 bool loop,
float speed = 1.0f,
float weight = 1.0f);
127 void SetSlotWeight(int32_t slot,
float weight);
131 void FadeSlotWeight(int32_t slot,
float targetWeight,
float seconds);
132 void QueueAnimation(
const char* animName,
bool loop,
const char* targetAnim =
nullptr,
float speed = 1.0f,
float weight = 1.0f, int32_t priority = -1);
133 void StopAnimation(
const char* animName,
bool cancelQueued =
false);
134 void StopAllAnimations(
bool cancelQueued =
false);
135 void CancelQueuedAnimation(
const char* animName);
136 void CancelAllQueuedAnimations();
137 bool IsAnimationPlaying(
const char* animName);
138 void ResetAnimation();
139 float GetAnimationSpeed()
const;
140 void SetAnimationSpeed(
float speed);
142 void SetAnimationPaused(
bool paused);
143 bool IsAnimationPaused()
const;
145 void SetInheritPose(
bool inherit);
146 bool IsInheritPoseEnabled()
const;
148 void SetBoundsRadiusOverride(
float radius);
149 float GetBoundsRadiusOverride()
const;
151 bool HasAnimatedThisFrame()
const;
154 std::vector<ActiveAnimation>& GetActiveAnimations();
156 QueuedAnimation* FindQueuedAnimation(
const char* animName,
const char* dependName =
nullptr);
157 std::vector<QueuedAnimation>& GetQueuedAnimations();
159 glm::mat4 GetBoneTransform(
const std::string& name)
const;
160 glm::vec3 GetBonePosition(
const std::string& name)
const;
161 glm::quat GetBoneRotationQuat(
const std::string& name)
const;
162 glm::vec3 GetBoneRotationEuler(
const std::string& name)
const;
163 glm::vec3 GetBoneScale(
const std::string& name)
const;
165 glm::mat4 GetBoneTransform(int32_t index)
const;
166 glm::vec3 GetBonePosition(int32_t boneIndex)
const;
167 glm::quat GetBoneRotationQuat(int32_t boneIndex)
const;
168 glm::vec3 GetBoneRotationEuler(int32_t boneIndex)
const;
169 glm::vec3 GetBoneScale(int32_t boneIndex)
const;
171 void SetBoneTransform(int32_t boneIndex,
const glm::mat4& transform);
172 void SetBonePosition(int32_t boneIndex, glm::vec3 position);
173 void SetBoneRotation(int32_t boneIndex, glm::vec3 rotation);
174 void SetBoneScale(int32_t boneIndex, glm::vec2 scale);
176 uint32_t GetNumBones()
const;
182 Vertex* GetSkinnedVertices();
183 uint32_t GetNumSkinnedVertices();
186 virtual void Render()
override;
195 uint32_t GetNumMaterialSlots()
const;
196 Material* GetMaterialSlot(uint32_t slot)
const;
197 void SetMaterialSlot(uint32_t slot,
Material* material);
198 int32_t FindMaterialSlot(
const std::string& sectionName)
const;
200 void UpdateAnimation(
float deltaTime,
bool updateBones);
204 int32_t FindBoneIndex(
const std::string& name)
const;
208 void SetScriptAnimEventHandler(
const ScriptFunc& func);
216 glm::vec3 InterpolateScale(
float time,
const Channel& channel);
217 glm::quat InterpolateRotation(
float time,
const Channel& channel);
218 glm::vec3 InterpolatePosition(
float time,
const Channel& channel);
219 void DetectTriggeredAnimEvents(
223 float animationSpeed,
224 std::vector<AnimEvent>& outEvents);
226 uint32_t FindScaleIndex(
float time,
const Channel& channel);
227 uint32_t FindRotationIndex(
float time,
const Channel& channel);
228 uint32_t FindPositionIndex(
float time,
const Channel& channel);
230 void UpdateAttachedChildren(
float deltaTime);
231 void CpuSkinVertices();
240 std::vector<SkeletalAnimationRef>& GetAnimationAssetsMutable();
244 const Animation* FindAnimation(
const char* animName);
245 void InvalidateAnimationBindings();
257 bool mAnimBindingsValid =
false;
261 float mAnimationSpeed = 1.0f;
264 float mBoundsRadiusOverride = 0.0f;
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
AnimationUpdateMode
Definition SkeletalMesh3d.h:21
@ AlwaysUpdateTimeAndBones
void(* AnimEventHandlerFP)(const AnimEvent &animEvent)
Definition SkeletalMesh3d.h:82
BoneInfluenceMode
Definition SkeletalMesh3d.h:14
AnimLayerMode
Definition SkeletalMesh3d.h:36
Definition BoneMaskAsset.h:19
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:588
virtual void EditorTick(float deltaTime)
Definition Node.cpp:578
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 SkeletalAnimationAsset.h:26
Definition SkeletalMesh3d.h:85
std::vector< ActiveAnimation > mActiveAnimations
Definition SkeletalMesh3d.h:262
bool mInheritPose
Definition SkeletalMesh3d.h:267
std::vector< Vertex > mSkinnedVertices
Definition SkeletalMesh3d.h:249
ScriptableFP< AnimEventHandlerFP > mAnimEventHandler
Definition SkeletalMesh3d.h:259
std::vector< glm::mat4 > mBoneMatrices
Definition SkeletalMesh3d.h:248
BoneInfluenceMode mBoneInfluenceMode
Definition SkeletalMesh3d.h:270
std::vector< Animation > mBoundExternalAnims
Definition SkeletalMesh3d.h:256
std::string mDefaultAnimation
Definition SkeletalMesh3d.h:260
bool mHasAnimatedThisFrame
Definition SkeletalMesh3d.h:268
bool mRevertToBindPose
Definition SkeletalMesh3d.h:266
std::vector< QueuedAnimation > mQueuedAnimations
Definition SkeletalMesh3d.h:263
SkeletalMeshCompResource mResource
Definition SkeletalMesh3d.h:274
std::vector< SkeletalAnimationRef > mAnimationAssets
Definition SkeletalMesh3d.h:251
AnimationUpdateMode mAnimationUpdateMode
Definition SkeletalMesh3d.h:271
SkeletalMeshRef mSkeletalMesh
Definition SkeletalMesh3d.h:247
std::vector< MaterialRef > mSectionMaterialOverrides
Definition SkeletalMesh3d.h:250
const std::vector< SkeletalAnimationRef > & GetAnimationAssets() const
Definition SkeletalMesh3d.h:239
DECLARE_NODE(SkeletalMesh3D, Mesh3D)
bool mAnimationPaused
Definition SkeletalMesh3d.h:265
Definition SkeletalMesh.h:99
Definition SkeletalMesh3d.h:49
AssetRef mBoneMask
Definition SkeletalMesh3d.h:60
bool mLoop
Definition SkeletalMesh3d.h:55
float mWeightFadeRate
Definition SkeletalMesh3d.h:66
float mSpeed
Definition SkeletalMesh3d.h:52
int32_t mSlot
Definition SkeletalMesh3d.h:54
std::string mName
Definition SkeletalMesh3d.h:50
float mWeightTarget
Definition SkeletalMesh3d.h:65
float mTime
Definition SkeletalMesh3d.h:51
float mWeight
Definition SkeletalMesh3d.h:53
AnimLayerMode mLayerMode
Definition SkeletalMesh3d.h:68
Definition SkeletalMesh.h:60
Definition SkeletalMesh.h:77
Definition EngineTypes.h:200
Definition SkeletalMesh.h:69
Definition SkeletalMesh3d.h:72
bool mLoop
Definition SkeletalMesh3d.h:78
float mTime
Definition SkeletalMesh3d.h:75
std::string mName
Definition SkeletalMesh3d.h:73
std::string mDependentAnim
Definition SkeletalMesh3d.h:74
float mWeight
Definition SkeletalMesh3d.h:77
float mSpeed
Definition SkeletalMesh3d.h:76
int32_t mSlot
Definition SkeletalMesh3d.h:79
Definition ScriptFunc.h:43
Definition GraphicsTypes.h:238