#pragma once #include "RE/H/hkAabb.h" #include "RE/H/hkBool.h" #include "RE/H/hkEnum.h" #include "RE/H/hkRefPtr.h" #include "RE/H/hkVector4.h" #include "RE/H/hknpContactSolverType.h" namespace RE { class hkBlockStreamAllocator; class hknpBody; class hknpBodyQualityLibrary; class hknpBroadPhaseConfig; class hknpCollisionFilter; class hknpConstraint; class hknpMaterialLibrary; class hknpMotion; class hknpMotionPropertiesLibrary; class hknpShapeTagCodec; class hknpWorldCinfo { public: enum class LeavingBroadPhaseBehavior { kDoNothing = 0x0, kRemoveBody = 0x1, kFreezeBody = 0x2 }; enum class SimulationType { kSingleThreaded = 0x0, kMultiThreaded = 0x2 }; // members std::int32_t m_bodyBufferCapacity; // 00 hknpBody* m_userBodyBuffer; // 08 std::int32_t m_motionBufferCapacity; // 10 hknpMotion* m_userMotionBuffer; // 18 std::int32_t m_constraintBufferCapacity; // 20 hknpConstraint* m_userConstraintBuffer; // 28 hkBlockStreamAllocator* m_persistentStreamAllocator; // 30 hkRefPtr m_materialLibrary; // 38 hkRefPtr m_motionPropertiesLibrary; // 40 hkRefPtr m_qualityLibrary; // 48 hkEnum m_simulationType; // 50 std::int32_t m_numSplitterCells; // 54 hkVector4f m_gravity; // 60 hkBool m_enableContactCaching; // 70 hkBool m_mergeEventsBeforeDispatch; // 71 hkEnum m_leavingBroadPhaseBehavior; // 72 hkAabb m_broadPhaseAabb; // 80 hkRefPtr m_broadPhaseConfig; // A0 hkRefPtr m_collisionFilter; // A8 hkRefPtr m_shapeTagCodec; // B0 float m_collisionTolerance; // B8 float m_relativeCollisionAccuracy; // BC hkBool m_enableWeldingForDefaultObjects; // C0 hkBool m_enableWeldingForCriticalObjects; // C1 float m_solverTau; // C4 float m_solverDamp; // C8 std::int32_t m_solverIterations; // CC std::int32_t m_solverMicrosteps; // D0 float m_defaultSolverTimestep; // D4 float m_maxApproachSpeedForHighQualitySolver; // D8 hkBool m_enableDeactivation; // DC hkBool m_deleteCachesOnDeactivation; // DD std::int32_t m_largeIslandSize; // E0 hkBool m_enableSolverDynamicScheduling; // E4 hknpContactSolverType::Enum m_contactSolverType; // E8 float m_unitScale; // EC hkBool m_applyUnitScaleToStaticConstants; // F0 }; static_assert(sizeof(hknpWorldCinfo) == 0x100); }