CommonLibSSE NG
bhkCharacterController.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSBound.h"
4 #include "RE/B/BSTEvent.h"
5 #include "RE/B/BSTHashMap.h"
6 #include "RE/H/hkRefPtr.h"
7 #include "RE/H/hkStepInfo.h"
8 #include "RE/H/hkVector4.h"
11 #include "RE/H/hkpCharacterState.h"
12 #include "RE/N/NiPoint3.h"
13 #include "RE/N/NiRefObject.h"
14 #include "RE/N/NiSmartPointer.h"
15 
16 namespace RE
17 {
18  class bhkCharacterMoveFinishEvent;
19  class bhkICharOrientationController;
20  class bhkShape;
21  class hkpRigidBody;
22  class hkTransform;
23  class hkVector4;
24 
25  enum class CHARACTER_FLAGS
26  {
27  kNone = 0,
28  kQuadruped = 1 << 0,
29  kNoGravityOnGround = 1 << 1,
30  kTryStep = 1 << 2,
31  kNoFriction = 1 << 3,
32  kAllowJumpNoContact = 1 << 4,
33  kStuckQuad = 1 << 5,
34  kAnimAngleMod = 1 << 6,
35  kHitDamage = 1 << 7,
36  kHitFlags = 1 << 7,
37  kSupport = 1 << 8,
39  kCanJump = 1 << 10,
40  kChaseBip = 1 << 11,
41  kFollowRagdoll = 1 << 12,
42  kJumping = 1 << 13,
43  kNotPushable = 1 << 14,
44  kFloatLand = 1 << 15,
45  kCheckSupport = 1 << 16,
46  kNoSim = 1 << 17,
47  kFarAway = 1 << 18,
48  kOnStilts = 1 << 19,
49  kQuickSimulate = 1 << 20,
50  kRecordHits = 1 << 21,
51  kComputeTiltPreIntegrate = 1 << 22,
52  kShouldersUnderWater = 1 << 23,
53  kOnStairs = 1 << 24,
54  kCanPitch = 1 << 25,
55  kCanRoll = 1 << 26,
56  kNoCharacterCollisions = 1 << 27,
57  kNotPushablePermanent = 1 << 28,
58  kPossiblePathObstacle = 1 << 29,
59  kShapeRequiresZRot = 1 << 30,
60  kSwimAtWaterSurface = 1 << 31,
61  };
62 
64  public NiRefObject, // 000
65  public BSTEventSource<bhkCharacterMoveFinishEvent> // 010
66  {
67  public:
68  inline static constexpr auto RTTI = RTTI_bhkCharacterController;
69 
70  ~bhkCharacterController() override; // 00
71 
72  // add
73  virtual void GetPositionImpl(hkVector4& a_pos, bool a_applyCenterOffset) const = 0; // 02
74  virtual void SetPositionImpl(const hkVector4& a_pos, bool a_applyCenterOffset, bool a_forceWarp) = 0; // 03
75  virtual void GetTransformImpl(hkTransform& a_tranform) const = 0; // 04
76  virtual void SetTransformImpl(const hkTransform& a_tranform) = 0; // 05
77  virtual void GetLinearVelocityImpl(hkVector4& a_velocity) const = 0; // 06
78  virtual void SetLinearVelocityImpl(const hkVector4& a_velocity) = 0; // 07
79  virtual void GetCollisionFilterInfo(std::uint32_t& a_collisionFilterInfo) const = 0; // 08
80  virtual void Unk_09(void) = 0; // 09
81  virtual void Unk_0A(void) = 0; // 0A
82  virtual void Unk_0B(void) = 0; // 0B
83  virtual void Unk_0C(void) = 0; // 0C
84  virtual void CheckSupportImpl() = 0; // 0D
85  virtual void Unk_0E(void) = 0; // 0E
86  virtual void Unk_0F(void) = 0; // 0F
87  virtual void Unk_10(void) = 0; // 10
88  virtual float GetVDBAlpha() const = 0; // 11
89  virtual void Unk_12(void) = 0; // 12
90  virtual void Unk_13(void) = 0; // 13
91 
92  inline void GetPosition(hkVector4& a_pos, bool a_applyCenterOffset) const { return GetPositionImpl(a_pos, a_applyCenterOffset); }
93 
94  // members
95  //std::uint64_t pad068; // 068
105  hkVector4 up; // 100
109  std::uint64_t unk180; // 180
110  std::uint64_t unk188; // 188
111  bhkICharOrientationController* orientationCtrl; // 190
112  std::uint64_t pad198; // 198
117  float velocityTime; // 220
118  float rotMod; // 224
119  float rotModTime; // 228
120  float calculatePitchTimer; // 22C
121  float acrobatics; // 230
122  float center; // 234
123  float waterHeight; // 238
124  float jumpHeight; // 23C
125  float fallStartHeight; // 240
126  float fallTime; // 244
127  float gravity; // 248
128  float pitchAngle; // 24C
129  float rollAngle; // 250
130  float pitchMult; // 254
131  float scale; // 258
132  float swimFloatHeight; // 25C
133  float actorHeight; // 260
134  float speedPct; // 264
135  std::uint32_t pushCount; // 268
136  std::uint32_t unk26C; // 26C
137  std::uint64_t unk270; // 270
138  std::uint64_t unk278; // 278
140  std::uint64_t unk290; // 290
141  std::uint32_t unk298; // 298
142  float lodDistance; // 29C
143  std::uint64_t unk2A0; // 2A0
144  std::uint64_t unk2A8; // 2A8
146  float bumpedForce; // 2B8
147  std::uint32_t pad2BC; // 2BC
151  std::uint64_t unk300; // 300
152  std::uint64_t unk308; // 308
153  std::uint64_t unk310; // 310
154  std::uint64_t unk318; // 318
155  std::uint64_t unk320; // 320
156  std::uint64_t unk328; // 328
157  };
158  static_assert(sizeof(bhkCharacterController) == 0x330);
159 }
Definition: BSBound.h:9
Definition: BSTEvent.h:19
Definition: BSTHashMap.h:21
Definition: NiSmartPointer.h:9
Definition: NiRefObject.h:8
Definition: bhkCharacterController.h:66
~bhkCharacterController() override
NiPointer< bhkShape > shapes[2]
Definition: bhkCharacterController.h:139
std::uint64_t unk270
Definition: bhkCharacterController.h:137
std::uint64_t unk188
Definition: bhkCharacterController.h:110
virtual void Unk_10(void)=0
std::uint64_t unk180
Definition: bhkCharacterController.h:109
hkpSurfaceInfo surfaceInfo
Definition: bhkCharacterController.h:113
virtual void Unk_12(void)=0
virtual void Unk_0E(void)=0
std::uint32_t pad2BC
Definition: bhkCharacterController.h:147
hkRefPtr< hkpRigidBody > supportBody
Definition: bhkCharacterController.h:145
std::uint64_t unk320
Definition: bhkCharacterController.h:155
hkVector4 supportNorm
Definition: bhkCharacterController.h:106
float bumpedForce
Definition: bhkCharacterController.h:146
hkVector4 fakeSupportStart
Definition: bhkCharacterController.h:104
virtual void CheckSupportImpl()=0
std::uint64_t unk308
Definition: bhkCharacterController.h:152
virtual void GetPositionImpl(hkVector4 &a_pos, bool a_applyCenterOffset) const =0
hkRefPtr< hkpRigidBody > bumpedBody
Definition: bhkCharacterController.h:148
float rotModTime
Definition: bhkCharacterController.h:119
hkVector4 pushDelta
Definition: bhkCharacterController.h:103
static constexpr auto RTTI
Definition: bhkCharacterController.h:68
float waterHeight
Definition: bhkCharacterController.h:123
hkVector4 direction
Definition: bhkCharacterController.h:101
std::uint64_t unk278
Definition: bhkCharacterController.h:138
virtual void SetTransformImpl(const hkTransform &a_tranform)=0
float swimFloatHeight
Definition: bhkCharacterController.h:132
virtual void Unk_0F(void)=0
float fallStartHeight
Definition: bhkCharacterController.h:125
hkVector4 forwardVec
Definition: bhkCharacterController.h:96
std::uint32_t pushCount
Definition: bhkCharacterController.h:135
BSTHashMap< UnkKey, UnkValue > unk2D0
Definition: bhkCharacterController.h:150
std::uint32_t unk26C
Definition: bhkCharacterController.h:136
float pitchAngle
Definition: bhkCharacterController.h:128
float rotMod
Definition: bhkCharacterController.h:118
virtual void Unk_0C(void)=0
virtual void Unk_0B(void)=0
virtual void SetPositionImpl(const hkVector4 &a_pos, bool a_applyCenterOffset, bool a_forceWarp)=0
hkVector4 up
Definition: bhkCharacterController.h:105
float actorHeight
Definition: bhkCharacterController.h:133
std::uint64_t pad198
Definition: bhkCharacterController.h:112
float jumpHeight
Definition: bhkCharacterController.h:124
BSBound collisionBound
Definition: bhkCharacterController.h:107
float scale
Definition: bhkCharacterController.h:131
float fallTime
Definition: bhkCharacterController.h:126
float acrobatics
Definition: bhkCharacterController.h:121
hkVector4 outVelocity
Definition: bhkCharacterController.h:98
float pitchMult
Definition: bhkCharacterController.h:130
std::uint64_t unk328
Definition: bhkCharacterController.h:156
std::uint64_t unk318
Definition: bhkCharacterController.h:154
bhkICharOrientationController * orientationCtrl
Definition: bhkCharacterController.h:111
std::uint64_t unk290
Definition: bhkCharacterController.h:140
virtual float GetVDBAlpha() const =0
BSBound bumperCollisionBound
Definition: bhkCharacterController.h:108
virtual void Unk_0A(void)=0
hkpCharacterStateType wantState
Definition: bhkCharacterController.h:116
std::uint64_t unk2A0
Definition: bhkCharacterController.h:143
float gravity
Definition: bhkCharacterController.h:127
float center
Definition: bhkCharacterController.h:122
std::uint64_t unk310
Definition: bhkCharacterController.h:153
float lodDistance
Definition: bhkCharacterController.h:142
virtual void GetLinearVelocityImpl(hkVector4 &a_velocity) const =0
std::uint64_t unk300
Definition: bhkCharacterController.h:151
hkVector4 initialVelocity
Definition: bhkCharacterController.h:99
std::uint64_t unk2A8
Definition: bhkCharacterController.h:144
virtual void SetLinearVelocityImpl(const hkVector4 &a_velocity)=0
float velocityTime
Definition: bhkCharacterController.h:117
virtual void Unk_09(void)=0
float rollAngle
Definition: bhkCharacterController.h:129
hkVector4 velocityMod
Definition: bhkCharacterController.h:100
virtual void Unk_13(void)=0
stl::enumeration< CHARACTER_FLAGS, std::uint32_t > flags
Definition: bhkCharacterController.h:115
void GetPosition(hkVector4 &a_pos, bool a_applyCenterOffset) const
Definition: bhkCharacterController.h:92
hkStepInfo stepInfo
Definition: bhkCharacterController.h:97
hkRefPtr< hkpRigidBody > bumpedCharCollisionObject
Definition: bhkCharacterController.h:149
virtual void GetCollisionFilterInfo(std::uint32_t &a_collisionFilterInfo) const =0
std::uint32_t unk298
Definition: bhkCharacterController.h:141
float calculatePitchTimer
Definition: bhkCharacterController.h:120
hkVector4 rotCenter
Definition: bhkCharacterController.h:102
float speedPct
Definition: bhkCharacterController.h:134
virtual void GetTransformImpl(hkTransform &a_tranform) const =0
hkpCharacterContext context
Definition: bhkCharacterController.h:114
Definition: hkRefPtr.h:7
Definition: hkStepInfo.h:8
Definition: hkTransform.h:9
Definition: hkVector4.h:9
Definition: hkpCharacterContext.h:41
Definition: AbsorbEffect.h:6
CHARACTER_FLAGS
Definition: bhkCharacterController.h:26
constexpr REL::VariantID RTTI_bhkCharacterController(690766, 398621, 0x1f66cc0)
hkpCharacterStateType
Definition: hkpCharacterState.h:14
Definition: hkpCharacterControl.h:8