summaryrefslogtreecommitdiff
path: root/src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-06 15:50:13 +0100
committerLéo Lam <leo@leolam.fr>2022-01-06 23:51:07 +0100
commit423eb84362ea1a564e885a777a131e0787ef8869 (patch)
tree54c7afe9d6da4cc6266c4fb3e988da33588584af /src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp
parent9343ed56e7570803bf87e7a9a427aa85ff8eab9d (diff)
ksys/phys: Implement more StaticCompound functions
The other functions require RE'ing BodyGroup, which in turn requires RigidBody stuff
Diffstat (limited to 'src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp')
-rw-r--r--src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp b/src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp
new file mode 100644
index 00000000..20d6066e
--- /dev/null
+++ b/src/KingSystem/Physics/StaticCompound/physStaticCompoundAutogen.cpp
@@ -0,0 +1,104 @@
+#include <Havok/Common/Base/Reflection/hkClass.h>
+#include <Havok/Common/Base/Reflection/hkClassMember.h>
+#include <Havok/Common/Base/Reflection/hkTypeInfo.h>
+#include <array>
+#include "KingSystem/Physics/StaticCompound/physStaticCompoundInfo.h"
+
+namespace ksys::phys {
+
+// Reflection data is normally autogenerated with a Havok script and type parser,
+// but considering we only have 3 classes it's easier to just write the data manually.
+
+// ShapeInfo
+
+static constexpr hkClassMember ShapeInfo_Members[] = {
+ {"ActorInfoIndex", nullptr, nullptr, hkClassMember::Type::TYPE_INT32,
+ hkClassMember::Type::TYPE_VOID, 0, 0, 0, nullptr},
+ {"InstanceId", nullptr, nullptr, hkClassMember::Type::TYPE_INT32,
+ hkClassMember::Type::TYPE_VOID, 0, 0, 4, nullptr},
+ {"BodyGroup", nullptr, nullptr, hkClassMember::Type::TYPE_INT8, hkClassMember::Type::TYPE_VOID,
+ 0, 0, 8, nullptr},
+ {"BodyLayerType", nullptr, nullptr, hkClassMember::Type::TYPE_UINT8,
+ hkClassMember::Type::TYPE_VOID, 0, 0, 9, nullptr},
+};
+
+const hkClass ShapeInfo_Class{
+ "ShapeInfo",
+ nullptr,
+ sizeof(ShapeInfo),
+ nullptr,
+ 0,
+ nullptr,
+ 0,
+ ShapeInfo_Members,
+ std::size(ShapeInfo_Members),
+};
+
+const hkClass& ShapeInfo::staticClass() {
+ return ShapeInfo_Class;
+}
+
+const hkTypeInfo ShapeInfo_TypeInfo = hkTypeInfo::make<ShapeInfo>("ShapeInfo", "!ShapeInfo");
+
+// ActorInfo
+
+static constexpr hkClassMember ActorInfo_Members[] = {
+ {"HashId", nullptr, nullptr, hkClassMember::Type::TYPE_UINT32, hkClassMember::Type::TYPE_VOID,
+ 0, 0, 0, nullptr},
+ {"SRTHash", nullptr, nullptr, hkClassMember::Type::TYPE_INT32, hkClassMember::Type::TYPE_VOID,
+ 0, 0, 4, nullptr},
+ {"ShapeInfoStart", nullptr, nullptr, hkClassMember::Type::TYPE_INT32,
+ hkClassMember::Type::TYPE_VOID, 0, 0, 8, nullptr},
+ {"ShapeInfoEnd", nullptr, nullptr, hkClassMember::Type::TYPE_INT32,
+ hkClassMember::Type::TYPE_VOID, 0, 0, 0xc, nullptr},
+};
+
+const hkClass ActorInfo_Class{
+ "ActorInfo",
+ nullptr,
+ sizeof(ActorInfo),
+ nullptr,
+ 0,
+ nullptr,
+ 0,
+ ActorInfo_Members,
+ std::size(ActorInfo_Members),
+};
+
+const hkClass& ActorInfo::staticClass() {
+ return ActorInfo_Class;
+}
+
+const hkTypeInfo ActorInfo_TypeInfo = hkTypeInfo::make<ActorInfo>("ActorInfo", "!ActorInfo");
+
+// StaticCompoundInfo
+
+static constexpr hkClassMember StaticCompoundInfo_Members[] = {
+ {"Offset", nullptr, nullptr, hkClassMember::Type::TYPE_UINT32, hkClassMember::Type::TYPE_VOID,
+ 0, 0, 0, nullptr},
+ {"ActorInfo", &ActorInfo_Class, nullptr, hkClassMember::Type::TYPE_ARRAY,
+ hkClassMember::Type::TYPE_STRUCT, 0, 0, 8, nullptr},
+ {"ShapeInfo", &ShapeInfo_Class, nullptr, hkClassMember::Type::TYPE_ARRAY,
+ hkClassMember::Type::TYPE_STRUCT, 0, 0, 0x18, nullptr},
+};
+
+const hkClass StaticCompoundInfo_Class{
+ "StaticCompoundInfo",
+ nullptr,
+ sizeof(StaticCompoundInfo),
+ nullptr,
+ 0,
+ nullptr,
+ 0,
+ StaticCompoundInfo_Members,
+ std::size(StaticCompoundInfo_Members),
+};
+
+const hkClass& StaticCompoundInfo::staticClass() {
+ return StaticCompoundInfo_Class;
+}
+
+const hkTypeInfo StaticCompoundInfo_TypeInfo =
+ hkTypeInfo::make<StaticCompoundInfo>("StaticCompoundInfo", "!StaticCompoundInfo");
+
+} // namespace ksys::phys