CommonLibSSE NG
hkpWorld.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/H/hkArray.h"
6 #include "RE/H/hkStepInfo.h"
7 #include "RE/H/hkpSolverInfo.h"
8 #include "RE/H/hkpWorldCinfo.h"
9 
10 namespace RE
11 {
12  class hkCriticalSection;
13  class hkdWorld;
14  class hknpWorld;
15  class hkpActionListener;
16  class hkpBroadPhase;
17  class hkpBroadPhaseBorder;
18  class hkpBroadPhaseBorderListener;
19  class hkpCollisionDispatcher;
20  class hkpCollisionFilter;
21  class hkpConstraintListener;
22  class hkpContactImpulseLimitBreachedListener;
23  class hkpContactListener;
24  class hkpConvexListFilter;
25  class hkpEntityEntityBroadPhaseListener;
26  class hkpEntityListener;
27  class hkpIslandActivationListener;
28  class hkpIslandPostCollideListener;
29  class hkpIslandPostIntegrateListener;
30  class hkpPhantom;
31  class hkpPhantomBroadPhaseListener;
32  class hkpPhantomListener;
33  class hkpSimulation;
34  class hkpSimulationIsland;
35  class hkpTreeWorldManager;
36  class hkpTypedBroadPhaseDispatcher;
37  class hkpWorldDeletionListener;
38  class hkpWorldExtension;
39  class hkpWorldMaintenanceMgr;
40  class hkpWorldOperationQueue;
41  class hkpWorldPostCollideListener;
42  class hkpWorldPostIntegrateListener;
43  class hkpWorldPostSimulationListener;
44  class hkWorldMemoryAvailableWatchDog;
45  struct hkpDebugInfoOnPendingOperationQueues;
46  struct hkpMtThreadStructure;
47  struct hkpProcessCollisionInput;
48  struct hkpViolatedConstraintArray;
49  struct hkpWorldRayCastInput;
50  struct hkpWorldRayCastOutput;
51 
53  {
54  public:
55  // members
58  };
59  static_assert(sizeof(hkpWorldDynamicsStepInfo) == 0x140);
60 
62  {
63  public:
64  inline static constexpr auto RTTI = RTTI_hkpWorld;
65  inline static constexpr auto VTABLE = VTABLE_hkpWorld;
66 
67  ~hkpWorld() override; // 00
68 
69  // override (hkReferencedObject)
70  void CalcContentStatistics(hkStatisticsCollector* a_collector, const hkClass* a_class) const override; // 02
71 
72  inline hkpPhantom* AddPhantom(hkpPhantom* a_phantom)
73  {
74  using func_t = decltype(&hkpWorld::AddPhantom);
75  REL::Relocation<func_t> func{ RELOCATION_ID(60502, 61314) };
76  return func(this, a_phantom);
77  }
78 
79  inline void RemovePhantom(hkpPhantom* a_phantom)
80  {
81  using func_t = decltype(&hkpWorld::RemovePhantom);
82  REL::Relocation<func_t> func{ RELOCATION_ID(60504, 61316) };
83  return func(this, a_phantom);
84  }
85 
86  inline void CastRay(const hkpWorldRayCastInput& a_input, hkpWorldRayCastOutput& a_output) const
87  {
88  using func_t = decltype(&hkpWorld::CastRay);
89  REL::Relocation<func_t> func{ RELOCATION_ID(60551, 61399) };
90  return func(this, a_input, a_output);
91  }
92 
93  // members
94  hkpSimulation* simulation; // 010
95  std::uint64_t pad018; // 018
102  hkpWorldMaintenanceMgr* maintenanceMgr; // 070
105  std::uint8_t pad081; // 081
106  std::uint16_t pad082; // 082
107  std::uint32_t pad084; // 084
109  hkpTreeWorldManager* kdTreeManager; // 090
110  bool autoUpdateTree; // 098
111  std::uint8_t pad099; // 099
112  std::uint16_t pad09A; // 09A
113  std::uint32_t pad09C; // 09C
114  hkpTypedBroadPhaseDispatcher* broadPhaseDispatcher; // 0A0
115  hkpPhantomBroadPhaseListener* phantomBroadPhaseListener; // 0A8
116  hkpEntityEntityBroadPhaseListener* entityEntityBroadPhaseListener; // 0B0
117  hkpBroadPhaseBorderListener* broadPhaseBorderListener; // 0B8
118  hkpMtThreadStructure* multithreadedSimulationJobData; // 0C0
119  hkpProcessCollisionInput* collisionInput; // 0C8
121  hkpCollisionDispatcher* collisionDispatcher; // 0D8
123  hkpWorldOperationQueue* pendingOperations; // 0E8
124  std::int32_t pendingOperationsCount; // 0F0
125  std::int32_t pendingBodyOperationsCount; // 0F4
126  std::int32_t criticalOperationsLockCount; // 0F8
130  std::uint16_t pad102; // 102
131  std::uint32_t pad104; // 104
132  hkpDebugInfoOnPendingOperationQueues* pendingOperationQueues; // 108
133  std::int32_t pendingOperationQueueCount; // 110
137  std::uint16_t pad122; // 122
138  std::uint32_t minDesiredIslandSize; // 124
139  hkCriticalSection* modifyConstraintCriticalSection; // 128
140  std::int32_t isLocked; // 130
141  std::uint32_t pad134; // 134
142  hkCriticalSection* islandDirtyListCriticalSection; // 138
143  hkCriticalSection* propertyMasterLock; // 140
145  bool useHybridBroadphase; // 149
146  std::uint16_t pad14A; // 14A
150  bool wantDeactivation; // 155
152  std::uint8_t pad153; // 157
155  std::int32_t maxSectorsPerMidphaseCollideTask; // 160
158  std::uint8_t pad169; // 169
159  std::uint16_t pad16A; // 16A
164  std::uint8_t pad179; // 179
165  std::uint16_t pad17A; // 17A
170  std::uint32_t lastEntityUID; // 18C
171  std::uint32_t lastIslandUID; // 190
172  std::uint32_t lastConstraintUID; // 194
188  hkpViolatedConstraintArray* violatedConstraintArray; // 288
189  hkpBroadPhaseBorder* broadPhaseBorder; // 290
190  hkdWorld* destructionWorld; // 298
191  hknpWorld* npWorld; // 2A0
192  std::uint64_t pad2A8; // 2A8
195  std::int32_t broadPhaseNumMarkers; // 410
196  std::int32_t sizeOfToiEventQueue; // 414
197  std::int32_t broadPhaseQuerySize; // 418
198  std::int32_t broadPhaseUpdateSize; // 41C
200  std::uint8_t pad421; // 421
201  std::uint16_t pad422; // 422
202  std::uint32_t pad424; // 424
203  std::uint64_t pad428; // 428
204  };
205  static_assert(sizeof(hkpWorld) == 0x430);
206 }
#define RELOCATION_ID(a_se, a_ae)
Definition: PCH.h:724
Definition: Relocation.h:204
Definition: hkArray.h:190
Definition: hkMultiThreadCheck.h:6
Definition: hkReferencedObject.h:11
Definition: hkStepInfo.h:8
Definition: hkVector4.h:9
Definition: hkpBroadPhase.h:21
Definition: hkpCollisionFilter.h:20
Definition: hkpConvexListFilter.h:12
Definition: hkpPhantom.h:15
Definition: hkpRigidBody.h:8
Definition: hkpSimulationIsland.h:16
Definition: hkpWorld.h:62
std::int32_t maxEntriesPerToiNarrowphaseCollideTask
Definition: hkpWorld.h:161
std::int32_t sizeOfToiEventQueue
Definition: hkpWorld.h:196
std::uint32_t pad09C
Definition: hkpWorld.h:113
bool enableToiWeldRejection
Definition: hkpWorld.h:149
bool wantDeactivation
Definition: hkpWorld.h:150
std::int32_t criticalOperationsLockCount
Definition: hkpWorld.h:126
hkArray< hkpContactListener * > contactListeners
Definition: hkpWorld.h:185
std::int32_t pendingOperationsCount
Definition: hkpWorld.h:124
std::uint16_t pad082
Definition: hkpWorld.h:106
std::uint32_t pad084
Definition: hkpWorld.h:107
std::int32_t maxSectorsPerMidphaseCollideTask
Definition: hkpWorld.h:155
bool allowIntegrationOfIslandsWithoutConstraintsInASeparateJob
Definition: hkpWorld.h:136
hkpPhantomBroadPhaseListener * phantomBroadPhaseListener
Definition: hkpWorld.h:115
std::uint16_t pad122
Definition: hkpWorld.h:137
stl::enumeration< hkpWorldCinfo::ContactPointGeneration, std::uint8_t > contactPointGeneration
Definition: hkpWorld.h:199
std::uint8_t pad099
Definition: hkpWorld.h:111
hkpCollisionDispatcher * collisionDispatcher
Definition: hkpWorld.h:121
hkVector4 broadPhaseExtents[2]
Definition: hkpWorld.h:194
float numToisTillAllowedPenetrationToiHigher
Definition: hkpWorld.h:168
std::uint8_t pad169
Definition: hkpWorld.h:158
std::uint8_t pad421
Definition: hkpWorld.h:200
std::uint32_t lastEntityUID
Definition: hkpWorld.h:170
hkArray< hkpWorldExtension * > worldExtensions
Definition: hkpWorld.h:187
hkpWorldMaintenanceMgr * maintenanceMgr
Definition: hkpWorld.h:102
std::int32_t pendingOperationQueueCount
Definition: hkpWorld.h:133
hkpBroadPhase * broadPhase
Definition: hkpWorld.h:108
float snapCollisionToConvexEdgeThreshold
Definition: hkpWorld.h:147
hkArray< hkpWorldPostIntegrateListener * > worldPostIntegrateListeners
Definition: hkpWorld.h:181
hkCriticalSection * modifyConstraintCriticalSection
Definition: hkpWorld.h:139
float deactivationReferenceDistance
Definition: hkpWorld.h:153
hkArray< hkpConstraintListener * > constraintListeners
Definition: hkpWorld.h:177
float numToisTillAllowedPenetrationToi
Definition: hkpWorld.h:167
hkpTreeWorldManager * kdTreeManager
Definition: hkpWorld.h:109
std::int32_t maxNumToiCollisionPairsSinglethreaded
Definition: hkpWorld.h:162
hkArray< hkpSimulationIsland * > activeSimulationIslands
Definition: hkpWorld.h:99
hkArray< hkpWorldDeletionListener * > worldDeletionListeners
Definition: hkpWorld.h:178
std::uint8_t pad081
Definition: hkpWorld.h:105
bool criticalOperationsAllowed
Definition: hkpWorld.h:129
std::uint8_t pad153
Definition: hkpWorld.h:152
hkpEntityEntityBroadPhaseListener * entityEntityBroadPhaseListener
Definition: hkpWorld.h:116
std::uint8_t pad179
Definition: hkpWorld.h:164
std::uint32_t pad424
Definition: hkpWorld.h:202
bool assertOnRunningOutOfSolverMemory
Definition: hkpWorld.h:104
std::int32_t broadPhaseQuerySize
Definition: hkpWorld.h:197
hkArray< hkpPhantomListener * > phantomListeners
Definition: hkpWorld.h:176
std::uint32_t lastIslandUID
Definition: hkpWorld.h:171
hkpBroadPhaseBorder * broadPhaseBorder
Definition: hkpWorld.h:189
std::uint16_t pad09A
Definition: hkpWorld.h:112
bool useHybridBroadphase
Definition: hkpWorld.h:145
bool blockExecutingPendingOperations
Definition: hkpWorld.h:128
std::int32_t isLocked
Definition: hkpWorld.h:140
std::uint32_t lastConstraintUID
Definition: hkpWorld.h:172
std::uint16_t pad102
Definition: hkpWorld.h:130
hkCriticalSection * islandDirtyListCriticalSection
Definition: hkpWorld.h:142
float numToisTillAllowedPenetrationSimplifiedToi
Definition: hkpWorld.h:166
static constexpr auto VTABLE
Definition: hkpWorld.h:65
std::int32_t maxSectorsPerNarrowphaseCollideTask
Definition: hkpWorld.h:156
std::uint64_t pad018
Definition: hkpWorld.h:95
hkArray< hkpIslandPostCollideListener * > islandPostCollideListeners
Definition: hkpWorld.h:184
hkArray< hkpSimulationIsland * > dirtySimulationIslands
Definition: hkpWorld.h:101
hkVector4 gravity
Definition: hkpWorld.h:96
hkpPhantom * AddPhantom(hkpPhantom *a_phantom)
Definition: hkpWorld.h:72
std::int32_t criticalOperationsLockCountForPhantoms
Definition: hkpWorld.h:127
hkpViolatedConstraintArray * violatedConstraintArray
Definition: hkpWorld.h:188
std::int32_t broadPhaseUpdateSize
Definition: hkpWorld.h:198
stl::enumeration< hkpWorldCinfo::SimulationType, std::uint8_t > simulationType
Definition: hkpWorld.h:163
bool wantSimulationIslands
Definition: hkpWorld.h:144
hkArray< hkpPhantom * > phantoms
Definition: hkpWorld.h:173
~hkpWorld() override
hkpCollisionFilter * collisionFilter
Definition: hkpWorld.h:120
hkArray< hkpContactImpulseLimitBreachedListener * > contactImpulseLimitBreachedListeners
Definition: hkpWorld.h:186
float toiCollisionResponseRotateNormal
Definition: hkpWorld.h:154
std::uint64_t pad2A8
Definition: hkpWorld.h:192
std::uint32_t pad104
Definition: hkpWorld.h:131
bool autoUpdateTree
Definition: hkpWorld.h:110
hkArray< hkpActionListener * > actionListeners
Definition: hkpWorld.h:174
std::uint32_t pad134
Definition: hkpWorld.h:141
hkArray< hkpIslandPostIntegrateListener * > islandPostIntegrateListeners
Definition: hkpWorld.h:183
hkpConvexListFilter * convexListFilter
Definition: hkpWorld.h:122
std::uint16_t pad16A
Definition: hkpWorld.h:159
hkArray< hkpSimulationIsland * > inactiveSimulationIslands
Definition: hkpWorld.h:100
float numToisTillAllowedPenetrationToiForced
Definition: hkpWorld.h:169
void CalcContentStatistics(hkStatisticsCollector *a_collector, const hkClass *a_class) const override
hkpBroadPhaseBorderListener * broadPhaseBorderListener
Definition: hkpWorld.h:117
static constexpr auto RTTI
Definition: hkpWorld.h:64
hkRefPtr< hkWorldMemoryAvailableWatchDog > memoryWatchDog
Definition: hkpWorld.h:103
std::uint16_t pad17A
Definition: hkpWorld.h:165
hkpDebugInfoOnPendingOperationQueues * pendingOperationQueues
Definition: hkpWorld.h:132
void RemovePhantom(hkpPhantom *a_phantom)
Definition: hkpWorld.h:79
std::uint16_t pad14A
Definition: hkpWorld.h:146
hkpSimulation * simulation
Definition: hkpWorld.h:94
std::int32_t pendingBodyOperationsCount
Definition: hkpWorld.h:125
hkArray< hkpWorldPostSimulationListener * > worldPostSimulationListeners
Definition: hkpWorld.h:180
bool shouldActivateOnRigidBodyTransformChange
Definition: hkpWorld.h:151
hkArray< hkpWorldPostCollideListener * > worldPostCollideListeners
Definition: hkpWorld.h:182
hknpWorld * npWorld
Definition: hkpWorld.h:191
hkpMtThreadStructure * multithreadedSimulationJobData
Definition: hkpWorld.h:118
std::uint32_t minDesiredIslandSize
Definition: hkpWorld.h:138
bool processToisMultithreaded
Definition: hkpWorld.h:157
hkdWorld * destructionWorld
Definition: hkpWorld.h:190
hkpSimulationIsland * fixedIsland
Definition: hkpWorld.h:97
float snapCollisionToConcaveEdgeThreshold
Definition: hkpWorld.h:148
hkpWorldDynamicsStepInfo dynamicsStepInfo
Definition: hkpWorld.h:193
hkpTypedBroadPhaseDispatcher * broadPhaseDispatcher
Definition: hkpWorld.h:114
hkpRigidBody * fixedRigidBody
Definition: hkpWorld.h:98
hkpProcessCollisionInput * collisionInput
Definition: hkpWorld.h:119
std::uint16_t pad422
Definition: hkpWorld.h:201
std::int32_t broadPhaseNumMarkers
Definition: hkpWorld.h:195
void CastRay(const hkpWorldRayCastInput &a_input, hkpWorldRayCastOutput &a_output) const
Definition: hkpWorld.h:86
hkArray< hkpEntityListener * > entityListeners
Definition: hkpWorld.h:175
hkCriticalSection * propertyMasterLock
Definition: hkpWorld.h:143
bool processActionsInSingleThread
Definition: hkpWorld.h:135
hkpWorldOperationQueue * pendingOperations
Definition: hkpWorld.h:123
hkArray< hkpIslandActivationListener * > islandActivationListeners
Definition: hkpWorld.h:179
std::int32_t maxEntriesPerToiMidphaseCollideTask
Definition: hkpWorld.h:160
std::uint64_t pad428
Definition: hkpWorld.h:203
hkMultiThreadCheck multiThreadCheck
Definition: hkpWorld.h:134
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_hkpWorld(689895, 397750, 0x1f59c90)
constexpr std::array< REL::VariantID, 1 > VTABLE_hkpWorld
Definition: Offsets_VTABLE.h:5057
Definition: hkpSolverInfo.h:9
Definition: hkpWorld.h:53
hkStepInfo stepInfo
Definition: hkpWorld.h:56
hkpSolverInfo solverInfo
Definition: hkpWorld.h:57
Definition: hkpWorldRayCastInput.h:8
Definition: hkpWorldRayCastOutput.h:10