CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
hkpShape.h
Go to the documentation of this file.
1#pragma once
2
6#include "RE/H/hkpShapeType.h"
7
8namespace RE
9{
10 class bhkShape;
11 class hkAabb;
12 class hkSphere;
13 class hkTransform;
14 class hkpCdBody;
15 class hkpCdVertex;
16 class hkpConvexShape;
17 class hkpRayHitCollector;
18 class hkpShapeContainer;
19 class hkpShapeRayBundleCastInput;
20 class hkpShapeRayBundleCastOutput;
21 class hkVector4;
22 struct hkpShapeRayCastInput;
23 struct hkpShapeRayCastOutput;
24
25 using hkpVertexID = std::uint16_t;
26 constexpr hkpVertexID HK_INVALID_VERTEX_ID = static_cast<hkpVertexID>(-1);
27
28 using hkpShapeKey = std::uint32_t;
29 constexpr hkpShapeKey HK_INVALID_SHAPE_KEY = static_cast<hkpShapeKey>(-1);
30
32 {
33 public:
34 inline static constexpr auto RTTI = RTTI_hkpShape;
35
36 using GetSupportingVertexFunc = void(const void* a_this, const hkVector4& a_direction, hkpCdVertex& a_supportVertex);
37 using ConvertVertexIdsToVerticesFunc = void(const void* a_this, const hkpVertexID* a_ids, std::int32_t a_numIDs, class hkpCdVertex* a_verticesOut);
38 using WeldContactPointFunc = std::int32_t(const void* a_this, hkpVertexID* a_featurePoints, std::uint8_t& a_numFeaturePoints, hkVector4& a_contactPointWs, const hkTransform* a_thisTransform, const hkpConvexShape* a_collidingShape, const hkTransform* a_collidingTransform, hkVector4& a_separatingNormalInOut);
39 using GetCentreFunc = void(const void* a_this, hkVector4& a_centreOut);
40 using GetNumCollisionSpheresFunc = std::int32_t(const void* a_this);
41 using GetCollisionSpheresFunc = const hkSphere*(const void* a_this, hkSphere* a_sphereBuffer);
42 using GetAabbFunc = void(const void* a_this, const hkTransform& a_localToWorld, float a_tolerance, hkAabb& a_out);
43 using CastRayFunc = bool(const void* a_this, const hkpShapeRayCastInput& a_input, hkpShapeRayCastOutput& a_output);
44 using CastRayWithCollectorFunc = void(const void* a_this, const hkpShapeRayCastInput& a_input, const hkpCdBody& a_cdBody, hkpRayHitCollector& a_collector);
45 using CastRayBundleFunc = hkVector4Comparison(const void* a_this, const hkpShapeRayBundleCastInput& a_input, hkpShapeRayBundleCastOutput& a_output, const hkVector4Comparison& a_mask);
46 using GetChildShapeFunc = const hkpShape*(const void* a_this, hkpShapeKey a_key, hkpShapeBuffer& a_buffer);
47 using GetCollisionFilterInfoFunc = std::uint32_t(const void* a_this, hkpShapeKey a_key);
48
50 {
51 public:
52 // members
56 };
57 static_assert(sizeof(CalcSizeForSpuInput) == 0x3);
58
60 {
61 public:
62 // members
75 };
76 static_assert(sizeof(ShapeFuncs) == 0x60);
77
79 {
80 public:
81 // members
94 std::uint64_t pad60; // 60
95 std::uint64_t pad68; // 68
96 std::uint64_t pad70; // 70
97 std::uint64_t pad78; // 78
98 };
99 static_assert(sizeof(ShapeFuncs2) == 0x80);
100
101 using RegsiterFunc = void(ShapeFuncs& a_sf);
102
103 ~hkpShape() override; // 00
104
105 // add
106 virtual float GetMaximumProjection(const hkVector4& a_direction) const; // 03
107 virtual const hkpShapeContainer* GetContainer() const; // 04 - { return 0; }
108 virtual bool IsConvex() const; // 05 - { return false; }
109 virtual std::int32_t CalcSizeForSpu(const CalcSizeForSpuInput& a_input, std::int32_t a_spuBufferSizeLeft) const; // 06 - { return -1; }
110 virtual void GetAabbImpl(const hkTransform& a_localToWorld, float a_tolerance, hkAabb& a_out) const = 0; // 07
111 virtual bool CastRayImpl(const hkpShapeRayCastInput& a_input, hkpShapeRayCastOutput& a_output) const = 0; // 08
112 virtual void CastRayWithCollectorImpl(const hkpShapeRayCastInput& a_input, const hkpCdBody& a_cdBody, hkpRayHitCollector& a_collector) const = 0; // 09
113 virtual hkVector4Comparison CastRayBundleImpl(const hkpShapeRayBundleCastInput& a_input, hkpShapeRayBundleCastOutput& a_output, const hkVector4Comparison& a_mask) const; // 0A
114
115 // members
118 std::uint32_t pad1C; // 1C
119 };
120 static_assert(sizeof(hkpShape) == 0x20);
121}
Definition: bhkShape.h:10
Definition: hkAabb.h:8
Definition: hkReferencedObject.h:11
Definition: hkTransform.h:9
Definition: hkSseMathTypes.h:9
Definition: hkVector4.h:9
Definition: hkpCdBody.h:8
Definition: hkpConvexShape.h:8
Definition: hkpRayHitCollector.h:10
Definition: hkpShapeContainer.h:6
Definition: hkpShape.h:32
void(const void *a_this, const hkpShapeRayCastInput &a_input, const hkpCdBody &a_cdBody, hkpRayHitCollector &a_collector) CastRayWithCollectorFunc
Definition: hkpShape.h:44
virtual float GetMaximumProjection(const hkVector4 &a_direction) const
virtual bool IsConvex() const
virtual void CastRayWithCollectorImpl(const hkpShapeRayCastInput &a_input, const hkpCdBody &a_cdBody, hkpRayHitCollector &a_collector) const =0
std::int32_t(const void *a_this, hkpVertexID *a_featurePoints, std::uint8_t &a_numFeaturePoints, hkVector4 &a_contactPointWs, const hkTransform *a_thisTransform, const hkpConvexShape *a_collidingShape, const hkTransform *a_collidingTransform, hkVector4 &a_separatingNormalInOut) WeldContactPointFunc
Definition: hkpShape.h:38
void(const void *a_this, const hkVector4 &a_direction, hkpCdVertex &a_supportVertex) GetSupportingVertexFunc
Definition: hkpShape.h:36
void(const void *a_this, const hkTransform &a_localToWorld, float a_tolerance, hkAabb &a_out) GetAabbFunc
Definition: hkpShape.h:42
const hkpShape *(const void *a_this, hkpShapeKey a_key, hkpShapeBuffer &a_buffer) GetChildShapeFunc
Definition: hkpShape.h:46
const hkSphere *(const void *a_this, hkSphere *a_sphereBuffer) GetCollisionSpheresFunc
Definition: hkpShape.h:41
void(const void *a_this, hkVector4 &a_centreOut) GetCentreFunc
Definition: hkpShape.h:39
bhkShape * userData
Definition: hkpShape.h:116
virtual void GetAabbImpl(const hkTransform &a_localToWorld, float a_tolerance, hkAabb &a_out) const =0
virtual bool CastRayImpl(const hkpShapeRayCastInput &a_input, hkpShapeRayCastOutput &a_output) const =0
~hkpShape() override
virtual const hkpShapeContainer * GetContainer() const
std::int32_t(const void *a_this) GetNumCollisionSpheresFunc
Definition: hkpShape.h:40
hkVector4Comparison(const void *a_this, const hkpShapeRayBundleCastInput &a_input, hkpShapeRayBundleCastOutput &a_output, const hkVector4Comparison &a_mask) CastRayBundleFunc
Definition: hkpShape.h:45
bool(const void *a_this, const hkpShapeRayCastInput &a_input, hkpShapeRayCastOutput &a_output) CastRayFunc
Definition: hkpShape.h:43
std::uint32_t(const void *a_this, hkpShapeKey a_key) GetCollisionFilterInfoFunc
Definition: hkpShape.h:47
void(ShapeFuncs &a_sf) RegsiterFunc
Definition: hkpShape.h:101
std::uint32_t pad1C
Definition: hkpShape.h:118
virtual std::int32_t CalcSizeForSpu(const CalcSizeForSpuInput &a_input, std::int32_t a_spuBufferSizeLeft) const
static constexpr auto RTTI
Definition: hkpShape.h:34
virtual hkVector4Comparison CastRayBundleImpl(const hkpShapeRayBundleCastInput &a_input, hkpShapeRayBundleCastOutput &a_output, const hkVector4Comparison &a_mask) const
void(const void *a_this, const hkpVertexID *a_ids, std::int32_t a_numIDs, class hkpCdVertex *a_verticesOut) ConvertVertexIdsToVerticesFunc
Definition: hkpShape.h:37
hkpShapeType type
Definition: hkpShape.h:117
Definition: AbsorbEffect.h:6
constexpr hkpVertexID HK_INVALID_VERTEX_ID
Definition: hkpShape.h:26
std::uint16_t hkpVertexID
Definition: hkpShape.h:25
constexpr hkpShapeKey HK_INVALID_SHAPE_KEY
Definition: hkpShape.h:29
constexpr REL::ID RTTI_hkpShape(static_cast< std::uint64_t >(685163))
hkpShapeType
Definition: hkpShapeType.h:6
std::uint32_t hkpShapeKey
Definition: hkpContactPointEvent.h:12
Definition: hkpShape.h:50
bool hasDynamicMotionSaved
Definition: hkpShape.h:55
bool isFixedOrKeyframed
Definition: hkpShape.h:54
bool midphaseAgent3Registered
Definition: hkpShape.h:53
Definition: hkpShape.h:79
GetNumCollisionSpheresFunc * getNumCollisionSpheresFunc
Definition: hkpShape.h:86
GetChildShapeFunc * getChildShapeFunc
Definition: hkpShape.h:92
GetAabbFunc * getAabbFunc
Definition: hkpShape.h:88
GetSupportingVertexFunc * getSupportingVertexFunc
Definition: hkpShape.h:82
GetCollisionFilterInfoFunc * getCollisionFilterInfoFunc
Definition: hkpShape.h:93
GetCentreFunc * getCentreFunc
Definition: hkpShape.h:85
CastRayFunc * castRay
Definition: hkpShape.h:89
GetCollisionSpheresFunc * getCollisionSpheresFunc
Definition: hkpShape.h:87
ConvertVertexIdsToVerticesFunc * convertVertexIdsToVertices
Definition: hkpShape.h:83
CastRayWithCollectorFunc * castRayWithCollector
Definition: hkpShape.h:90
std::uint64_t pad78
Definition: hkpShape.h:97
std::uint64_t pad70
Definition: hkpShape.h:96
WeldContactPointFunc * weldContactPointFunc
Definition: hkpShape.h:84
CastRayBundleFunc * castRayBundle
Definition: hkpShape.h:91
std::uint64_t pad60
Definition: hkpShape.h:94
std::uint64_t pad68
Definition: hkpShape.h:95
Definition: hkpShape.h:60
GetCollisionFilterInfoFunc * getCollisionFilterInfoFunc
Definition: hkpShape.h:74
GetCollisionSpheresFunc * getCollisionSpheresFunc
Definition: hkpShape.h:68
ConvertVertexIdsToVerticesFunc * convertVertexIdsToVertices
Definition: hkpShape.h:64
WeldContactPointFunc * weldContactPointFunc
Definition: hkpShape.h:65
CastRayFunc * castRay
Definition: hkpShape.h:70
CastRayBundleFunc * castRayBundle
Definition: hkpShape.h:72
GetCentreFunc * getCentreFunc
Definition: hkpShape.h:66
CastRayWithCollectorFunc * castRayWithCollector
Definition: hkpShape.h:71
GetSupportingVertexFunc * getSupportingVertexFunc
Definition: hkpShape.h:63
GetNumCollisionSpheresFunc * getNumCollisionSpheresFunc
Definition: hkpShape.h:67
GetChildShapeFunc * getChildShapeFunc
Definition: hkpShape.h:73
GetAabbFunc * getAabbFunc
Definition: hkpShape.h:69
Definition: hkpShapeBuffer.h:6
Definition: hkpShapeRayCastOutput.h:9