3#include <Core/ResourceManager/ResourceHandle.h>
4#include <Foundation/Containers/ArrayMap.h>
5#include <Foundation/Types/UniquePtr.h>
6#include <RendererCore/RendererCoreDLL.h>
8#include <ozz/animation/runtime/sampling_job.h>
9#include <ozz/base/maths/soa_float.h>
10#include <ozz/base/maths/soa_transform.h>
12PL_DEFINE_AS_POD_TYPE(ozz::math::SoaTransform);
20using plAnimPoseGeneratorLocalPoseID = plUInt32;
21using plAnimPoseGeneratorModelPoseID = plUInt32;
22using plAnimPoseGeneratorCommandID = plUInt32;
25enum class plAnimPoseGeneratorCommandType
37enum class plAnimPoseEventTrackSampleMode : plUInt8
60 plAnimPoseGeneratorCommandID GetCommandID()
const {
return m_CommandID; }
61 plAnimPoseGeneratorCommandType GetType()
const {
return m_Type; }
66 bool m_bExecuted =
false;
67 plAnimPoseGeneratorCommandID m_CommandID = plInvalidIndex;
68 plAnimPoseGeneratorCommandType m_Type = plAnimPoseGeneratorCommandType::Invalid;
81 plAnimPoseGeneratorLocalPoseID m_LocalPoseOutput = plInvalidIndex;
96 float m_fNormalizedSamplePos;
97 float m_fPreviousNormalizedSamplePos;
99 plAnimPoseEventTrackSampleMode m_EventSampling = plAnimPoseEventTrackSampleMode::None;
104 bool m_bAdditive =
false;
105 plUInt32 m_uiUniqueID = 0;
106 plAnimPoseGeneratorLocalPoseID m_LocalPoseOutput = plInvalidIndex;
126 plAnimPoseGeneratorLocalPoseID m_LocalPoseOutput = plInvalidIndex;
139 float m_fNormalizedSamplePos;
140 float m_fPreviousNormalizedSamplePos;
142 plAnimPoseEventTrackSampleMode m_EventSampling = plAnimPoseEventTrackSampleMode::None;
147 plUInt32 m_uiUniqueID = 0;
155 plAnimPoseGeneratorModelPoseID m_ModelPoseOutput = plInvalidIndex;
156 plAnimPoseGeneratorLocalPoseID m_LocalPoseOutput = plInvalidIndex;
174 float m_fWeight = 1.0f;
188 float m_fWeight = 1.0f;
189 float m_fSoften = 1.0f;
214 void SetFinalCommand(plAnimPoseGeneratorCommandID cmdId) { m_FinalCommand = cmdId; }
215 plAnimPoseGeneratorCommandID GetFinalCommand()
const {
return m_FinalCommand; }
222 void Validate()
const;
232 void SampleEventTrack(
const plAnimationClipResource* pResource, plAnimPoseEventTrackSampleMode mode,
const plGameObject* pSendAnimationEventsTo,
float fPrevPos,
float fCurPos);
241 plAnimPoseGeneratorLocalPoseID m_LocalPoseCounter = 0;
242 plAnimPoseGeneratorModelPoseID m_ModelPoseCounter = 0;
244 plAnimPoseGeneratorCommandID m_FinalCommand = 0;
Float wrapper struct for a safe usage and conversions of angles.
Definition Angle.h:10
Definition AnimPoseGenerator.h:194
Definition AnimationClipResource.h:100
See plArrayMapBase for details.
Definition ArrayMap.h:149
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
This class represents an object inside the world.
Definition GameObject.h:32
@ None
Only sets the local transform, does not update.
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition SkeletonResource.h:47
A class to use together with plHashedString for quick comparisons with temporary strings that need no...
Definition HashedString.h:151
static plVec3Template< float > MakeAxisX()
Definition Vec3.h:41
static plVec3Template< float > MakeAxisY()
Definition Vec3.h:44
static plVec3Template< float > MakeAxisZ()
Definition Vec3.h:47
Definition AnimPoseGenerator.h:171
Combines all the local space poses that are given as input into one local pose.
Definition AnimPoseGenerator.h:119
Base class for all pose generator commands.
Definition AnimPoseGenerator.h:57
Accepts a single input in local space and converts it to model space.
Definition AnimPoseGenerator.h:166
Definition AnimPoseGenerator.h:151
Returns the rest pose (also often called 'bind pose').
Definition AnimPoseGenerator.h:77
Samples the event track of an animation clip but doesn't generate an animation pose.
Definition AnimPoseGenerator.h:137
Samples an animation clip at a given time and optionally also its event track.
Definition AnimPoseGenerator.h:94
Definition AnimPoseGenerator.h:181