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 
14  enum
15  {
18  };
19 
20  enum class ListShapeFlags
21  {
22  kNone = 0,
24  };
25 
26  struct ChildInfo
27  {
28  public:
29  // members
30  alignas(0x10) const hkpShape* shape; // 00
31  std::uint32_t collisionFilterInfo; // 08
32  mutable std::int32_t shapeSize; // 0C
33  mutable std::int32_t numChildShapes; // 10
34  std::uint32_t pad14; // 14
35  std::uint64_t pad18; // 18
36  };
37  static_assert(sizeof(ChildInfo) == 0x20);
38 
39  ~hkpListShape() override; // 00
40 
41  // override (hkpShapeCollection)
42  void CalcContentStatistics(hkStatisticsCollector* a_collector, const hkClass* a_class) const override; // 02
43  std::int32_t CalcSizeForSpu(const CalcSizeForSpuInput& a_input, std::int32_t a_spuBufferSizeLeft) const override; // 06
44  void GetAabbImpl(const hkTransform& a_localToWorld, float a_tolerance, hkAabb& a_out) const override; // 07
45  bool CastRayImpl(const hkpShapeRayCastInput& a_input, hkpShapeRayCastOutput& a_output) const override; // 08
46  void CastRayWithCollectorImpl(const hkpShapeRayCastInput& a_input, const hkpCdBody& a_cdBody, hkpRayHitCollector& a_collector) const override; // 09
47 
48  // override (hkpShapeContainer)
49  std::int32_t GetNumChildShapes() const override; // 01 - { return m_childInfo.getSize() - m_numDisabledChildren; }
50  hkpShapeKey GetFirstKey() const override; // 02 - { return hkpListShape::getNextKey(hkpShapeKey(-1)); }
51  hkpShapeKey GetNextKey(hkpShapeKey a_oldKey) const override; // 03
52  std::uint32_t GetCollisionFilterInfo(hkpShapeKey a_key) const override; // 04
53  const hkpShape* GetChildShape(hkpShapeKey a_key, hkpShapeBuffer& a_buffer) const override; // 05
54 
55  // members
57  std::uint16_t flags; // 40
58  std::uint16_t numDisabledChildren; // 42
59  std::uint32_t pad44; // 44
62  std::uint32_t enabledChildren[8]; // 70
63  };
64  static_assert(sizeof(hkpListShape) == 0x90);
65 }
Definition: hkAabb.h:8
Definition: hkArray.h:189
Definition: hkTransform.h:9
Definition: hkVector4.h:8
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
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:62
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:58
hkVector4 aabbHalfExtents
Definition: hkpListShape.h:60
std::uint32_t pad44
Definition: hkpListShape.h:59
hkArray< ChildInfo > childInfo
Definition: hkpListShape.h:56
~hkpListShape() override
hkVector4 aabbCenter
Definition: hkpListShape.h:61
void CastRayWithCollectorImpl(const hkpShapeRayCastInput &a_input, const hkpCdBody &a_cdBody, hkpRayHitCollector &a_collector) const override
ListShapeFlags
Definition: hkpListShape.h:21
@ kMaxChildrenForSPUMidPhase
Definition: hkpListShape.h:16
@ kMaxDisabledChildren
Definition: hkpListShape.h:17
std::int32_t GetNumChildShapes() const override
std::uint16_t flags
Definition: hkpListShape.h:57
Definition: hkpShapeCollection.h:12
Definition: hkpShape.h:31
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_hkpListShape
Definition: Offsets_RTTI.h:7641
std::uint32_t hkpShapeKey
Definition: hkpShape.h:27
Definition: hkpListShape.h:27
std::uint32_t pad14
Definition: hkpListShape.h:34
std::int32_t shapeSize
Definition: hkpListShape.h:32
std::uint32_t collisionFilterInfo
Definition: hkpListShape.h:31
std::int32_t numChildShapes
Definition: hkpListShape.h:33
const hkpShape * shape
Definition: hkpListShape.h:30
std::uint64_t pad18
Definition: hkpListShape.h:35
Definition: hkpShapeBuffer.h:6
Definition: hkpShapeRayCastOutput.h:9
Definition: hkpShape.h:49