CommonLibSSE (powerof3)
hkpListShape.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/H/hkArray.h"
4 #include "RE/H/hkVector4.h"
6 
7 namespace RE
8 {
10  {
11  public:
12  inline static constexpr auto RTTI = RTTI_hkpListShape;
13  inline static constexpr auto VTABLE = VTABLE_hkpListShape;
14 
15  enum
16  {
19  };
20 
21  enum class ListShapeFlags
22  {
23  kNone = 0,
25  };
26 
27  struct ChildInfo
28  {
29  public:
30  // members
31  alignas(0x10) const hkpShape* shape; // 00
32  std::uint32_t collisionFilterInfo; // 08
33  mutable std::int32_t shapeSize; // 0C
34  mutable std::int32_t numChildShapes; // 10
35  std::uint32_t pad14; // 14
36  std::uint64_t pad18; // 18
37  };
38  static_assert(sizeof(ChildInfo) == 0x20);
39 
40  ~hkpListShape() override; // 00
41 
42  // override (hkpShapeCollection)
43  void CalcContentStatistics(hkStatisticsCollector* a_collector, const hkClass* a_class) const override; // 02
44  std::int32_t CalcSizeForSpu(const CalcSizeForSpuInput& a_input, std::int32_t a_spuBufferSizeLeft) const override; // 06
45  void GetAabbImpl(const hkTransform& a_localToWorld, float a_tolerance, hkAabb& a_out) const override; // 07
46  bool CastRayImpl(const hkpShapeRayCastInput& a_input, hkpShapeRayCastOutput& a_output) const override; // 08
47  void CastRayWithCollectorImpl(const hkpShapeRayCastInput& a_input, const hkpCdBody& a_cdBody, hkpRayHitCollector& a_collector) const override; // 09
48 
49  // override (hkpShapeContainer)
50  std::int32_t GetNumChildShapes() const override; // 01 - { return childInfo.getSize() - numDisabledChildren; }
51  hkpShapeKey GetFirstKey() const override; // 02 - { return hkpListShape::getNextKey(hkpShapeKey(-1)); }
52  hkpShapeKey GetNextKey(hkpShapeKey a_oldKey) const override; // 03
53  std::uint32_t GetCollisionFilterInfo(hkpShapeKey a_key) const override; // 04
54  const hkpShape* GetChildShape(hkpShapeKey a_key, hkpShapeBuffer& a_buffer) const override; // 05
55 
56  // members
58  std::uint16_t flags; // 40
59  std::uint16_t numDisabledChildren; // 42
60  std::uint32_t pad44; // 44
63  std::uint32_t enabledChildren[8]; // 70
64  };
65  static_assert(sizeof(hkpListShape) == 0x90);
66 }
Definition: hkAabb.h:8
Definition: hkArray.h:190
Definition: hkTransform.h:9
Definition: hkVector4.h:9
Definition: hkpCdBody.h:8
Definition: hkpListShape.h:10
void CalcContentStatistics(hkStatisticsCollector *a_collector, const hkClass *a_class) const override
void GetAabbImpl(const hkTransform &a_localToWorld, float a_tolerance, hkAabb &a_out) const override
static constexpr auto RTTI
Definition: hkpListShape.h:12
std::uint32_t GetCollisionFilterInfo(hkpShapeKey a_key) const override
hkpShapeKey GetFirstKey() const override
@ kMaxChildrenForSPUMidPhase
Definition: hkpListShape.h:17
@ kMaxDisabledChildren
Definition: hkpListShape.h:18
std::int32_t CalcSizeForSpu(const CalcSizeForSpuInput &a_input, std::int32_t a_spuBufferSizeLeft) const override
bool CastRayImpl(const hkpShapeRayCastInput &a_input, hkpShapeRayCastOutput &a_output) const override
std::uint32_t enabledChildren[8]
Definition: hkpListShape.h:63
const hkpShape * GetChildShape(hkpShapeKey a_key, hkpShapeBuffer &a_buffer) const override
hkpShapeKey GetNextKey(hkpShapeKey a_oldKey) const override
std::uint16_t numDisabledChildren
Definition: hkpListShape.h:59
hkVector4 aabbHalfExtents
Definition: hkpListShape.h:61
static constexpr auto VTABLE
Definition: hkpListShape.h:13
std::uint32_t pad44
Definition: hkpListShape.h:60
hkArray< ChildInfo > childInfo
Definition: hkpListShape.h:57
~hkpListShape() override
hkVector4 aabbCenter
Definition: hkpListShape.h:62
void CastRayWithCollectorImpl(const hkpShapeRayCastInput &a_input, const hkpCdBody &a_cdBody, hkpRayHitCollector &a_collector) const override
ListShapeFlags
Definition: hkpListShape.h:22
std::int32_t GetNumChildShapes() const override
std::uint16_t flags
Definition: hkpListShape.h:58
Definition: hkpRayHitCollector.h:10
Definition: hkpShapeCollection.h:12
Definition: hkpShape.h:32
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 2 > VTABLE_hkpListShape
Definition: Offsets_VTABLE.h:14264
constexpr REL::ID RTTI_hkpListShape(static_cast< std::uint64_t >(689843))
std::uint32_t hkpShapeKey
Definition: hkpContactPointEvent.h:12
Definition: hkpListShape.h:28
std::uint32_t pad14
Definition: hkpListShape.h:35
std::int32_t shapeSize
Definition: hkpListShape.h:33
std::uint32_t collisionFilterInfo
Definition: hkpListShape.h:32
std::int32_t numChildShapes
Definition: hkpListShape.h:34
const hkpShape * shape
Definition: hkpListShape.h:31
std::uint64_t pad18
Definition: hkpListShape.h:36
Definition: hkpShapeBuffer.h:6
Definition: hkpShapeRayCastOutput.h:9
Definition: hkpShape.h:51