CommonLibSSE NG
Loading...
Searching...
No Matches
hkpBroadPhase.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/H/hkArray.h"
6#include "RE/H/hkVector4.h"
7
8namespace RE
9{
10 class hkAabb;
11 class hkCriticalSection;
12 class hkpBroadPhaseCastCollector;
13 class hkpBroadPhaseHandle;
14 class hkpBroadPhaseHandlePair;
15 class hkpCollidable;
16 struct hkAabbUint32;
17
19
21 {
22 public:
23 inline static constexpr auto RTTI = RTTI_hkpBroadPhase;
24 inline static constexpr auto VTABLE = VTABLE_hkpBroadPhase;
25
26 enum class BroadPhaseType
27 {
28 k16Bit,
29 k32Bit,
31 };
32
33 enum class Capabilities
34 {
35 kNone = 0,
36 kRayCast = 1 << 0,
37 kLinearCast = 1 << 1,
38 kAABBQuery = 1 << 2,
39 kClosestPoints = 1 << 3,
40 kCharProxyInt = 1 << 4,
41 kISASweepAndPrune = 1 << 12
42 };
43
45 {
46 public:
47 // members
49 std::int32_t numCasts; // 10
50 std::uint32_t pad14; // 14
51 const hkVector4* toBase; // 18
52 std::int32_t toStriding; // 20
53 std::uint32_t pad24; // 24
55 };
56 static_assert(sizeof(hkpCastRayInput) == 0x30);
57
59 {
60 public:
61 // members
66 std::uint64_t pad38; // 38
67 };
68 static_assert(sizeof(hkpCastAabbInput) == 0x40);
69
70 ~hkpBroadPhase() override; // 00
71
72 // add
73 virtual BroadPhaseType GetType() const = 0; // 03
74 virtual const hkpBroadPhase* GetCapabilityDelegate(Capabilities a_cap) const; // 04 - { return caps & a_cap ? this : 0; }
75 virtual void AddObject1(hkpBroadPhaseHandle* a_object, const hkAabbUint32& a_aabb, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut) = 0; // 05
76 virtual void AddObject2(hkpBroadPhaseHandle* a_object, const hkAabb& a_aabb, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut) = 0; // 06
77 virtual void AddObjectBatch(const hkArrayBase<hkpBroadPhaseHandle*>& a_addObjectList, const hkArrayBase<hkAabb>& a_addAabbList, hkArray<hkpBroadPhaseHandlePair>& a_newPairs) = 0; // 07
78 virtual void RemoveObject(hkpBroadPhaseHandle* a_object, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut) = 0; // 08
79 virtual void RemoveObjectBatch(const hkArrayBase<hkpBroadPhaseHandle*>& a_removeObjectList, hkArray<hkpBroadPhaseHandlePair>& a_delPairsOut) = 0; // 09
80 virtual std::int32_t GetNumObjects() const = 0; // 0A
81 virtual void UpdateAabbs(hkpBroadPhaseHandle* a_objects[], const hkAabb* a_aabbs, std::int32_t a_numObjects, hkArray<hkpBroadPhaseHandlePair>& a_addedPairs, hkArray<hkpBroadPhaseHandlePair>& a_removedPairs) = 0; // 0B
82 virtual void UpdateAabbsUInt32(hkpBroadPhaseHandle* a_objects[], const hkAabbUint32* a_aabbs, std::int32_t a_numObjects, hkArray<hkpBroadPhaseHandlePair>& a_addedPairs, hkArray<hkpBroadPhaseHandlePair>& a_removedPairs) = 0; // 0C
83 virtual void Defragment() = 0; // 0D
84 virtual void CheckDeterminism(); // 0E - { return; }
85 virtual void GetAllAabbs(hkArray<hkAabb>& a_allAabbs) const = 0; // 0F
86 virtual void GetAabb(const hkpBroadPhaseHandle* a_object, hkAabb& a_aabb) const = 0; // 10
87 virtual void GetExtents(hkVector4& a_worldMinOut, hkVector4& a_worldMaxOut) const = 0; // 11
88 virtual void QuerySingleAabb(const hkAabb& a_aabb, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut) const = 0; // 12
89 virtual void ReQuerySingleObject(const hkpBroadPhaseHandle* a_object, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut) const = 0; // 13
90 virtual void QuerySingleAabbWithCollector(const hkAabb& a_aabb, hkpBroadPhaseCastCollector* a_collector) const = 0; // 14
91 virtual bool AreAabbsOverlapping(const hkpBroadPhaseHandle* a_bhA, const hkpBroadPhaseHandle* a_bhB) const = 0; // 15
92 virtual void ShiftAllObjects(const hkVector4& a_shiftDistance, hkVector4& a_effectiveShiftDistanceOut, hkArray<hkpBroadPhaseHandlePair>& a_newCollisionPairs) = 0; // 16
93 virtual void ShiftBroadPhase(const hkVector4& a_shiftDistance, hkVector4& a_effectiveShiftDistanceOut, hkArray<hkpBroadPhaseHandlePair>& a_newCollisionPairs) = 0; // 17
94 virtual void GetOffsetLowHigh32bit(hkVector4& a_offsetLow32bit, hkVector4& a_offsetHigh32bit) const = 0; // 18
95 virtual void CastRay(const hkpCastRayInput& a_input, hkpBroadPhaseCastCollector* a_collectorBase, std::int32_t a_collectorStriding) const = 0; // 19
96 virtual std::int32_t GetAabbCacheSize() const = 0; // 1A
97 virtual void CalcAabbCache1(const hkAabb& a_aabb, hkpBroadPhaseAabbCache* a_aabbCacheOut) const = 0; // 1B
98 virtual void CalcAabbCache2(const hkArrayBase<hkpCollidable*>& a_overlappingCollidables, hkpBroadPhaseAabbCache* a_aabbCacheOut) const = 0; // 1C
99 virtual void CastAabb(const hkpCastAabbInput& a_input, hkpBroadPhaseCastCollector& a_collector) const = 0; // 1D
100 virtual void Set32BitOffsetAndScale(const hkVector4& a_offsetLow, const hkVector4& a_offsetHigh, const hkVector4& a_scale) = 0; // 1E
101
102 void AddObject(hkpBroadPhaseHandle* a_object, const hkAabbUint32& a_aabb, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut);
103 void AddObject(hkpBroadPhaseHandle* a_object, const hkAabb& a_aabb, hkArray<hkpBroadPhaseHandlePair>& a_pairsOut);
104 void CalcAabbCache(const hkAabb& a_aabb, hkpBroadPhaseAabbCache* a_aabbCacheOut) const;
105 void CalcAabbCache(const hkArrayBase<hkpCollidable*>& a_overlappingCollidables, hkpBroadPhaseAabbCache* a_aabbCacheOut) const;
106
107 // members
109 const std::uint16_t size{ 0 }; // 12
112 std::uint32_t pad24; // 24
113 hkCriticalSection* criticalSection; // 28
114 };
115 static_assert(sizeof(hkpBroadPhase) == 0x30);
116}
Definition hkAabb.h:8
Definition hkArray.h:9
Definition hkArray.h:189
Definition hkMultiThreadCheck.h:6
Definition hkReferencedObject.h:11
Definition hkVector4.h:9
Definition hkpBroadPhaseCastCollector.h:8
Definition hkpBroadPhaseHandle.h:6
Definition hkpBroadPhase.h:21
static constexpr auto VTABLE
Definition hkpBroadPhase.h:24
virtual void GetOffsetLowHigh32bit(hkVector4 &a_offsetLow32bit, hkVector4 &a_offsetHigh32bit) const =0
virtual void GetAllAabbs(hkArray< hkAabb > &a_allAabbs) const =0
std::uint32_t pad24
Definition hkpBroadPhase.h:112
virtual void QuerySingleAabbWithCollector(const hkAabb &a_aabb, hkpBroadPhaseCastCollector *a_collector) const =0
virtual void Defragment()=0
BroadPhaseType
Definition hkpBroadPhase.h:27
const stl::enumeration< Capabilities, std::uint32_t > caps
Definition hkpBroadPhase.h:110
virtual void AddObject1(hkpBroadPhaseHandle *a_object, const hkAabbUint32 &a_aabb, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut)=0
void CalcAabbCache(const hkArrayBase< hkpCollidable * > &a_overlappingCollidables, hkpBroadPhaseAabbCache *a_aabbCacheOut) const
virtual const hkpBroadPhase * GetCapabilityDelegate(Capabilities a_cap) const
hkCriticalSection * criticalSection
Definition hkpBroadPhase.h:113
virtual void UpdateAabbs(hkpBroadPhaseHandle *a_objects[], const hkAabb *a_aabbs, std::int32_t a_numObjects, hkArray< hkpBroadPhaseHandlePair > &a_addedPairs, hkArray< hkpBroadPhaseHandlePair > &a_removedPairs)=0
const stl::enumeration< BroadPhaseType, std::uint16_t > type
Definition hkpBroadPhase.h:108
virtual std::int32_t GetAabbCacheSize() const =0
virtual std::int32_t GetNumObjects() const =0
void CalcAabbCache(const hkAabb &a_aabb, hkpBroadPhaseAabbCache *a_aabbCacheOut) const
static constexpr auto RTTI
Definition hkpBroadPhase.h:23
void AddObject(hkpBroadPhaseHandle *a_object, const hkAabbUint32 &a_aabb, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut)
Capabilities
Definition hkpBroadPhase.h:34
void AddObject(hkpBroadPhaseHandle *a_object, const hkAabb &a_aabb, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut)
virtual void QuerySingleAabb(const hkAabb &a_aabb, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut) const =0
virtual void RemoveObjectBatch(const hkArrayBase< hkpBroadPhaseHandle * > &a_removeObjectList, hkArray< hkpBroadPhaseHandlePair > &a_delPairsOut)=0
virtual void ReQuerySingleObject(const hkpBroadPhaseHandle *a_object, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut) const =0
~hkpBroadPhase() override
virtual void RemoveObject(hkpBroadPhaseHandle *a_object, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut)=0
const std::uint16_t size
Definition hkpBroadPhase.h:109
virtual void ShiftAllObjects(const hkVector4 &a_shiftDistance, hkVector4 &a_effectiveShiftDistanceOut, hkArray< hkpBroadPhaseHandlePair > &a_newCollisionPairs)=0
virtual void CastAabb(const hkpCastAabbInput &a_input, hkpBroadPhaseCastCollector &a_collector) const =0
hkMultiThreadCheck multiThreadCheck
Definition hkpBroadPhase.h:111
virtual void ShiftBroadPhase(const hkVector4 &a_shiftDistance, hkVector4 &a_effectiveShiftDistanceOut, hkArray< hkpBroadPhaseHandlePair > &a_newCollisionPairs)=0
virtual void CalcAabbCache2(const hkArrayBase< hkpCollidable * > &a_overlappingCollidables, hkpBroadPhaseAabbCache *a_aabbCacheOut) const =0
virtual bool AreAabbsOverlapping(const hkpBroadPhaseHandle *a_bhA, const hkpBroadPhaseHandle *a_bhB) const =0
virtual void Set32BitOffsetAndScale(const hkVector4 &a_offsetLow, const hkVector4 &a_offsetHigh, const hkVector4 &a_scale)=0
virtual void GetAabb(const hkpBroadPhaseHandle *a_object, hkAabb &a_aabb) const =0
virtual void CheckDeterminism()
virtual void UpdateAabbsUInt32(hkpBroadPhaseHandle *a_objects[], const hkAabbUint32 *a_aabbs, std::int32_t a_numObjects, hkArray< hkpBroadPhaseHandlePair > &a_addedPairs, hkArray< hkpBroadPhaseHandlePair > &a_removedPairs)=0
virtual void AddObject2(hkpBroadPhaseHandle *a_object, const hkAabb &a_aabb, hkArray< hkpBroadPhaseHandlePair > &a_pairsOut)=0
virtual BroadPhaseType GetType() const =0
virtual void GetExtents(hkVector4 &a_worldMinOut, hkVector4 &a_worldMaxOut) const =0
virtual void CastRay(const hkpCastRayInput &a_input, hkpBroadPhaseCastCollector *a_collectorBase, std::int32_t a_collectorStriding) const =0
virtual void CalcAabbCache1(const hkAabb &a_aabb, hkpBroadPhaseAabbCache *a_aabbCacheOut) const =0
virtual void AddObjectBatch(const hkArrayBase< hkpBroadPhaseHandle * > &a_addObjectList, const hkArrayBase< hkAabb > &a_addAabbList, hkArray< hkpBroadPhaseHandlePair > &a_newPairs)=0
Definition PCH.h:223
Definition AbsorbEffect.h:6
constexpr std::array< REL::VariantID, 1 > VTABLE_hkpBroadPhase
Definition Offsets_VTABLE.h:5217
constexpr REL::VariantID RTTI_hkpBroadPhase(690079, 397934, 0x1f5cac0)
char hkpBroadPhaseAabbCache
Definition hkpBroadPhase.h:18
Definition hkpBroadPhase.h:59
hkVector4 halfExtents
Definition hkpBroadPhase.h:64
hkVector4 from
Definition hkpBroadPhase.h:62
std::uint64_t pad38
Definition hkpBroadPhase.h:66
hkVector4 to
Definition hkpBroadPhase.h:63
const hkpBroadPhaseAabbCache * aabbCacheInfo
Definition hkpBroadPhase.h:65
Definition hkpBroadPhase.h:45
std::uint32_t pad24
Definition hkpBroadPhase.h:53
const hkVector4 * toBase
Definition hkpBroadPhase.h:51
std::int32_t numCasts
Definition hkpBroadPhase.h:49
const hkpBroadPhaseAabbCache * aabbCacheInfo
Definition hkpBroadPhase.h:54
std::uint32_t pad14
Definition hkpBroadPhase.h:50
hkVector4 from
Definition hkpBroadPhase.h:48
std::int32_t toStriding
Definition hkpBroadPhase.h:52