OROCHI
 
Loading...
Searching...
No Matches
GxModUnitIK.h
Go to the documentation of this file.
1//===========================================================================
11//===========================================================================
12#pragma once
13
14GX_MOTION_NAMESPACE_BEGIN()
16//===========================================================================
18//===========================================================================
20{
21 //-----------------------------------------------------------
23 //-----------------------------------------------------------
25public:
26 // RTTI宣言
27 GX_RTTI_CLASS(GxModUnitIK, GxModUnitBase)
28 // GxClassBase継承クラス用禁止宣言
30
31
32 class IKData : public GxClassBase
33 {
34 //-----------------------------------------------------------
36 //-----------------------------------------------------------
38 public:
39 GX_RTTI_CLASS(IKData, GxClassBase);
40
42 //-----------------------------------------------------------
44 //-----------------------------------------------------------
46
48 IKData(void);
50 ~IKData(void);
51
53 //-----------------------------------------------------------
55 //-----------------------------------------------------------
57
63
65 };
66
67 //-----------------------------------------------------------
69 //-----------------------------------------------------------
71public:
73 GxModUnitIK(void);
75 ~GxModUnitIK(void) override;
77 virtual void initialize(GxModUnitMotionBlend* pMotion, GxResMotionIK* pResIK);
78
80 //-----------------------------------------------------------
82 //-----------------------------------------------------------
84public:
86 void preAsyncUpdate(void) override;
87protected:
89 void computeNewMatrices(GxMotionJoint& joint, GxArray& jointsUpToDate);
91 virtual void updateTarget(void);
93 void calcMotionDataMatrices2BonesIK(const u32 chainEndJointNumber, GxVector3 const& ikTargetPosition);
95 void updateJointMatrices(GxMotionJoint* pJoint);
96private:
98 b32 findInArray(void const* pObject, GxArray const& array);
99
101 //-----------------------------------------------------------
103 //-----------------------------------------------------------
105public:
107 GX_FORCE_INLINE static const GxRtti& getOwnerDerivedRtti(void) { return GxUnitModelBase::GX_RTTI; }
108
110 constexpr GxModUnitMotionBlend* getModMotion(void) const { return _pMotion; }
112 constexpr GxResMotionIK* getResMotionIK(void) const { return _pResIK; }
114 constexpr IKData* getIKData(u32 index) const { return _ppIKObjectData[index]; }
116 GX_FORCE_INLINE b32 isEnableMotion(void) const { return _isEnableMotion; }
117protected:
119 void setTarget(IKData* pIKData, f32 const target);
121 b32 hasFloor(const GxVector3& position, GxVector3& collision, GxVector3& collisionNormal);
123 f32 getRate(f32 frameElapsed, INTERPOLATE curveType, f32 curveTargetFrameCount, f32 curvature);
125 virtual GxUnitModelBase::GxJoint* getModelJoint(GxMotionJoint* pMotionJoint, s32* pOutMotionJointIndex = nullptr);
127 u32 getModelJointChildrenCount(GxUnitModelBase::GxJoint* pJoint, b32 enumTopBrotherJoint = false);
128private:
130 s32 getMotionJointIndex(const GxMotionJoint* pJoint) const;
131
133 //-----------------------------------------------------------
135 //-----------------------------------------------------------
137protected:
145
147};
148
149GX_MOTION_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
INTERPOLATE
補間タイプ
Definition GxMotionDefine.h:17
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
ユニットモジュール基礎クラス
Definition GxModUnitBase.h:22
IK用データ
Definition GxModUnitIK.h:33
f32 _nowValue
現在の補正座標
Definition GxModUnitIK.h:60
f32 _elapsedFrame
目標に向かって経過した時間
Definition GxModUnitIK.h:61
GxVector3 _floorNormal
床の向き
Definition GxModUnitIK.h:62
f32 _targetValue
目標の補正座標
Definition GxModUnitIK.h:59
f32 _startValue
IK開始時の補正座標
Definition GxModUnitIK.h:58
IKモジュール
Definition GxModUnitIK.h:20
constexpr IKData * getIKData(u32 index) const
IK用データを取得
Definition GxModUnitIK.h:114
constexpr GxResMotionIK * getResMotionIK(void) const
IKリソースを取得
Definition GxModUnitIK.h:112
IKData * _pWaistObjectData
腰関節用IKデータ
Definition GxModUnitIK.h:144
GxResMotionIK * _pResIK
IKリソース
Definition GxModUnitIK.h:139
static GX_FORCE_INLINE const GxRtti & getOwnerDerivedRtti(void)
所持者に必要な継承RTTIを取得
Definition GxModUnitIK.h:107
s32 _hipJointId
腰関節Id
Definition GxModUnitIK.h:143
IKData ** _ppIKObjectData
IK終端関節用データ
Definition GxModUnitIK.h:142
f32 _waistJointMaxDrop
今の姿勢での最大の腰下げ量
Definition GxModUnitIK.h:141
constexpr GxModUnitMotionBlend * getModMotion(void) const
モーションモジュールを取得
Definition GxModUnitIK.h:110
GxModUnitMotionBlend * _pMotion
モーションモジュール
Definition GxModUnitIK.h:138
GX_FORCE_INLINE b32 isEnableMotion(void) const
現在再生されているモーションに対しIKが有効か判定
Definition GxModUnitIK.h:116
b32 _isEnableMotion
現在再生されているモーションに対しIKが有効かどうか
Definition GxModUnitIK.h:140
モーションブレンドシステムの機能を導入するモジュール
Definition GxModUnitMotionBlend.h:18
GxMotionが使う関節クラス
Definition GxMotionJoint.h:150
モーションIKリソースクラス
Definition GxResMotionIK.h:18
実行時型情報クラス
Definition GxRtti.h:154
関節構造体
Definition GxUnitModelBase.h:795
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173