Plasma Engine  2.0
Loading...
Searching...
No Matches
AnimGraphInstance.h
1#pragma once
2
3#include <RendererCore/RendererCoreDLL.h>
4
5#include <Foundation/Containers/Blob.h>
6#include <Foundation/Containers/DynamicArray.h>
7#include <Foundation/Memory/InstanceDataAllocator.h>
8#include <RendererCore/AnimationSystem/AnimGraph/AnimGraphNode.h>
9
10class plGameObject;
11class plAnimGraph;
13
14class PL_RENDERERCORE_DLL plAnimGraphInstance
15{
16 PL_DISALLOW_COPY_AND_ASSIGN(plAnimGraphInstance);
17
18public:
21
22 void Configure(const plAnimGraph& animGraph);
23
24 void Update(plAnimController& ref_controller, plTime diff, plGameObject* pTarget, const plSkeletonResource* pSekeltonResource);
25
26 template <typename T>
27 T* GetAnimNodeInstanceData(const plAnimGraphNode& node)
28 {
29 return reinterpret_cast<T*>(plInstanceDataAllocator::GetInstanceData(m_InstanceData.GetByteBlobPtr(), node.m_uiInstanceDataOffset));
30 }
31
32
33private:
34 const plAnimGraph* m_pAnimGraph = nullptr;
35
36 plBlob m_InstanceData;
37
38 // EXTEND THIS if a new type is introduced
39 plInt8* m_pTriggerInputPinStates = nullptr;
40 double* m_pNumberInputPinStates = nullptr;
41 bool* m_pBoolInputPinStates = nullptr;
42 plUInt16* m_pBoneWeightInputPinStates = nullptr;
43 plDynamicArray<plHybridArray<plUInt16, 1>> m_LocalPoseInputPinStates;
44 plUInt16* m_pModelPoseInputPinStates = nullptr;
45
46private:
47 friend class plAnimGraphTriggerOutputPin;
48 friend class plAnimGraphTriggerInputPin;
56 friend class plAnimGraphNumberInputPin;
57 friend class plAnimGraphNumberOutputPin;
58 friend class plAnimGraphBoolInputPin;
59 friend class plAnimGraphBoolOutputPin;
60};
Definition AnimController.h:52
Definition AnimGraphPins.h:152
Definition AnimGraphPins.h:162
Definition AnimGraphPins.h:130
Definition AnimGraphPins.h:140
Definition AnimGraph.h:11
Definition AnimGraphInstance.h:15
Definition AnimGraphPins.h:174
Definition AnimGraphPins.h:184
Definition AnimGraphPins.h:194
Definition AnimGraphPins.h:206
Definition AnimGraphPins.h:216
Base class for all nodes in an plAnimGraphInstance.
Definition AnimGraphNode.h:36
Definition AnimGraphPins.h:108
Definition AnimGraphPins.h:118
Definition AnimGraphPins.h:81
Definition AnimGraphPins.h:92
plBlob allows to store simple binary data larger than 4GB. This storage class is used by plImage to a...
Definition Blob.h:319
Definition DynamicArray.h:81
This class represents an object inside the world.
Definition GameObject.h:32
static PL_ALWAYS_INLINE void * GetInstanceData(const plByteBlobPtr &blobPtr, plUInt32 uiOffset)
Retrieves a void pointer to the instance data within the given blob at the given offset,...
Definition InstanceDataAllocator.h:59
Definition SkeletonResource.h:47
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12