Plasma Engine  2.0
Loading...
Searching...
No Matches
SampleBlendSpace2DAnimNode.h
1#pragma once
2
3#include <Core/ResourceManager/ResourceHandle.h>
4#include <RendererCore/AnimationSystem/AnimGraph/AnimController.h>
5#include <RendererCore/AnimationSystem/AnimGraph/AnimGraphNode.h>
6#include <RendererCore/AnimationSystem/AnimationClipResource.h>
7
8struct PL_RENDERERCORE_DLL plAnimationClip2D
9{
10 plHashedString m_sClip;
11 plVec2 m_vPosition;
12
13 void SetAnimationFile(const char* szFile);
14 const char* GetAnimationFile() const;
15};
16
17PL_DECLARE_REFLECTABLE_TYPE(PL_RENDERERCORE_DLL, plAnimationClip2D);
18
19class PL_RENDERERCORE_DLL plSampleBlendSpace2DAnimNode : public plAnimGraphNode
20{
21 PL_ADD_DYNAMIC_REFLECTION(plSampleBlendSpace2DAnimNode, plAnimGraphNode);
22
24 // plAnimGraphNode
25
26protected:
27 virtual plResult SerializeNode(plStreamWriter& stream) const override;
28 virtual plResult DeserializeNode(plStreamReader& stream) override;
29
30 virtual void Step(plAnimController& ref_controller, plAnimGraphInstance& ref_graph, plTime tDiff, const plSkeletonResource* pSkeleton, plGameObject* pTarget) const override;
31 virtual bool GetInstanceDataDesc(plInstanceDataDesc& out_desc) const override;
32
34 // plSampleBlendSpace1DAnimNode
35
36public:
39
40 void SetCenterClipFile(const char* szFile);
41 const char* GetCenterClipFile() const;
42
43private:
44 plHashedString m_sCenterClip; // [ property ]
45 plHybridArray<plAnimationClip2D, 8> m_Clips; // [ property ]
46 plTime m_InputResponse = plTime::MakeFromMilliseconds(100); // [ property ]
47 bool m_bLoop = true; // [ property ]
48 bool m_bApplyRootMotion = false; // [ property ]
49 float m_fPlaybackSpeed = 1.0f; // [ property ]
50
51 plAnimGraphTriggerInputPin m_InStart; // [ property ]
52 plAnimGraphBoolInputPin m_InLoop; // [ property ]
53 plAnimGraphNumberInputPin m_InSpeed; // [ property ]
54 plAnimGraphNumberInputPin m_InCoordX; // [ property ]
55 plAnimGraphNumberInputPin m_InCoordY; // [ property ]
56 plAnimGraphLocalPoseOutputPin m_OutPose; // [ property ]
57 plAnimGraphTriggerOutputPin m_OutOnStarted; // [ property ]
58 plAnimGraphTriggerOutputPin m_OutOnFinished; // [ property ]
59
60 struct ClipToPlay
61 {
62 PL_DECLARE_POD_TYPE();
63
64 plUInt32 m_uiIndex;
65 float m_fWeight = 1.0f;
66 const plAnimController::AnimClipInfo* m_pClipInfo = nullptr;
67 };
68
69 struct InstanceState
70 {
71 bool m_bPlaying = false;
72 plTime m_CenterPlaybackTime;
73 float m_fOtherPlaybackPosNorm = 0.0f;
74 float m_fLastValueX = 0.0f;
75 float m_fLastValueY = 0.0f;
76 };
77
78 void UpdateCenterClipPlaybackTime(const plAnimController::AnimClipInfo& centerInfo, InstanceState* pState, plAnimGraphInstance& ref_graph, plTime tDiff, plAnimPoseEventTrackSampleMode& out_eventSamplingCenter) const;
79 void PlayClips(plAnimController& ref_controller, const plAnimController::AnimClipInfo& centerInfo, InstanceState* pState, plAnimGraphInstance& ref_graph, plTime tDiff, plArrayPtr<ClipToPlay> clips, plUInt32 uiMaxWeightClip) const;
80 void ComputeClipsAndWeights(plAnimController& ref_controller, const plAnimController::AnimClipInfo& centerInfo, const plVec2& p, plDynamicArray<ClipToPlay>& out_Clips, plUInt32& out_uiMaxWeightClip) const;
81};
Definition AnimController.h:52
Definition AnimGraphPins.h:130
Definition AnimGraphInstance.h:15
Definition AnimGraphPins.h:194
Base class for all nodes in an plAnimGraphInstance.
Definition AnimGraphNode.h:36
Definition AnimGraphPins.h:108
Definition AnimGraphPins.h:81
Definition AnimGraphPins.h:92
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
Definition DynamicArray.h:81
This class represents an object inside the world.
Definition GameObject.h:32
This class is optimized to take nearly no memory (sizeof(void*)) and to allow very fast checks whethe...
Definition HashedString.h:25
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition SampleBlendSpace2DAnimNode.h:20
Definition SkeletonResource.h:47
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
Definition AnimController.h:84
Definition SampleBlendSpace2DAnimNode.h:9
Structure to describe an instance data type.
Definition InstanceDataAllocator.h:17
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12
PL_ALWAYS_INLINE static constexpr plTime MakeFromMilliseconds(double fMilliseconds)
Creates an instance of plTime that was initialized from milliseconds.
Definition Time.h:26