Plasma Engine  2.0
Loading...
Searching...
No Matches
MotionMatchingComponent.h
1//#pragma once
2//
3//#include <GameEngine/GameEngineDLL.h>
4//#include <RendererCore/AnimationSystem/AnimationGraph/AnimationClipSampler.h>
5//#include <RendererCore/AnimationSystem/AnimationPose.h>
6//#include <RendererCore/Meshes/SkinnedMeshComponent.h>
7//
8//using plAnimationClipResourceHandle = plTypedResourceHandle<class plAnimationClipResource>;
9//using plSkeletonResourceHandle = plTypedResourceHandle<class plSkeletonResource>;
10//
11//using plMotionMatchingComponentManager = plComponentManagerSimple<class plMotionMatchingComponent, plComponentUpdateType::WhenSimulating> ;
12//
13//class PL_GAMEENGINE_DLL plMotionMatchingComponent : public plSkinnedMeshComponent
14//{
15// PL_DECLARE_COMPONENT_TYPE(plMotionMatchingComponent, plSkinnedMeshComponent, plMotionMatchingComponentManager);
16//
17// //////////////////////////////////////////////////////////////////////////
18// // plComponent
19//
20//public:
21// virtual void SerializeComponent(plWorldWriter& stream) const override;
22// virtual void DeserializeComponent(plWorldReader& stream) override;
23//
24//protected:
25// virtual void OnSimulationStarted() override;
26//
27//
28// //////////////////////////////////////////////////////////////////////////
29// // plMotionMatchingComponent
30//
31//public:
32// plMotionMatchingComponent();
33// ~plMotionMatchingComponent();
34//
35// void SetAnimation(plUInt32 uiIndex, const plAnimationClipResourceHandle& hResource);
36// plAnimationClipResourceHandle GetAnimation(plUInt32 uiIndex) const;
37//
38//protected:
39// void Update();
40//
41// plUInt32 Animations_GetCount() const; // [ property ]
42// const char* Animations_GetValue(plUInt32 uiIndex) const; // [ property ]
43// void Animations_SetValue(plUInt32 uiIndex, const char* value); // [ property ]
44// void Animations_Insert(plUInt32 uiIndex, const char* value); // [ property ]
45// void Animations_Remove(plUInt32 uiIndex); // [ property ]
46//
47// void ConfigureInput();
48// plVec3 GetInputDirection() const;
49// plQuat GetInputRotation() const;
50//
51// plAnimationPose m_AnimationPose;
52// plSkeletonResourceHandle m_hSkeleton;
53//
54// plDynamicArray<plAnimationClipResourceHandle> m_Animations;
55//
56// plVec3 m_vLeftFootPos;
57// plVec3 m_vRightFootPos;
58//
59// struct MotionData
60// {
61// plUInt16 m_uiAnimClipIndex;
62// plUInt16 m_uiKeyframeIndex;
63// plVec3 m_vLeftFootPosition;
64// plVec3 m_vLeftFootVelocity;
65// plVec3 m_vRightFootPosition;
66// plVec3 m_vRightFootVelocity;
67// plVec3 m_vRootVelocity;
68// };
69//
70// struct TargetKeyframe
71// {
72// plUInt16 m_uiAnimClip;
73// plUInt16 m_uiKeyframe;
74// };
75//
76// TargetKeyframe m_Keyframe0;
77// TargetKeyframe m_Keyframe1;
78// float m_fKeyframeLerp = 0.0f;
79//
80// TargetKeyframe FindNextKeyframe(const TargetKeyframe& current, const plVec3& vTargetDir) const;
81//
82// plDynamicArray<MotionData> m_MotionData;
83//
84// static void PrecomputeMotion(plDynamicArray<MotionData>& motionData, plTempHashedString jointName1, plTempHashedString jointName2,
85// const plAnimationClipResourceDescriptor& animClip, plUInt16 uiAnimClipIndex, const plSkeleton& skeleton);
86//
87// plUInt32 FindBestKeyframe(const TargetKeyframe& current, plVec3 vLeftFootPosition, plVec3 vRightFootPosition, plVec3 vTargetDir) const;
88//};