ksys/phys: Add StaticCompoundInfo

This commit is contained in:
Léo Lam 2022-01-06 02:25:15 +01:00
parent a859b356e6
commit 2d1ffdf6d2
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 151 additions and 4 deletions

View File

@ -84203,15 +84203,15 @@ Address,Quality,Size,Name
0x0000007100fcaecc,O,000092,_ZNK4ksys4phys14StaticCompound18getRuntimeTypeInfoEv
0x0000007100fcaf28,O,000008,_ZNK4ksys4phys14StaticCompound10needsParseEv
0x0000007100fcaf30,O,000372,_ZN4ksys4phys14StaticCompound33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE
0x0000007100fcb0a4,U,000004,nullsub_5551
0x0000007100fcb0a8,U,000004,nullsub_5552
0x0000007100fcb0ac,U,000136,
0x0000007100fcb0a4,O,000004,_ZN10hkTypeInfo19cleanupFunctionImplIN4ksys4phys9ShapeInfoEEEvPv
0x0000007100fcb0a8,O,000004,_ZN10hkTypeInfo19cleanupFunctionImplIN4ksys4phys9ActorInfoEEEvPv
0x0000007100fcb0ac,O,000136,_ZN10hkTypeInfo19cleanupFunctionImplIN4ksys4phys18StaticCompoundInfoEEEvPv
0x0000007100fcb134,U,000088,
0x0000007100fcb18c,U,000048,
0x0000007100fcb1bc,U,000048,
0x0000007100fcb1ec,U,000048,
0x0000007100fcb21c,U,000120,
0x0000007100fcb294,U,000396,sinitHavokShapeInfo
0x0000007100fcb294,O,000396,_GLOBAL__sub_I_physStaticCompoundInfo.cpp
0x0000007100fcb420,U,000080,
0x0000007100fcb470,U,000076,
0x0000007100fcb4bc,U,000084,

Can't render this file because it is too large.

View File

@ -34,6 +34,8 @@ target_sources(uking PRIVATE
StaticCompound/physStaticCompound.h
StaticCompound/physStaticCompoundFieldBodyGroup.cpp
StaticCompound/physStaticCompoundFieldBodyGroup.h
StaticCompound/physStaticCompoundInfo.cpp
StaticCompound/physStaticCompoundInfo.h
SupportBone/physSupportBoneParam.cpp
SupportBone/physSupportBoneParam.h

View File

@ -0,0 +1,104 @@
#include "KingSystem/Physics/StaticCompound/physStaticCompoundInfo.h"
#include <Havok/Common/Base/Reflection/hkClass.h>
#include <Havok/Common/Base/Reflection/hkClassMember.h>
#include <Havok/Common/Base/Reflection/hkTypeInfo.h>
#include <array>
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

View File

@ -0,0 +1,41 @@
#pragma once
#include <Havok/Common/Base/hkBase.h>
class hkTypeInfo;
namespace ksys::phys {
struct ShapeInfo {
HK_DECLARE_REFLECTION()
hkInt32 m_ActorInfoIndex;
hkInt32 m_InstanceId;
hkInt8 m_BodyGroup;
hkUint8 m_BodyLayerType;
};
extern const hkClass ShapeInfo_Class;
extern const hkTypeInfo ShapeInfo_TypeInfo;
struct ActorInfo {
HK_DECLARE_REFLECTION()
hkUint32 m_HashId;
hkInt32 m_SRTHash;
hkInt32 m_ShapeInfoStart;
hkInt32 m_ShapeInfoEnd;
};
extern const hkClass ActorInfo_Class;
extern const hkTypeInfo ActorInfo_TypeInfo;
struct StaticCompoundInfo {
HK_DECLARE_REFLECTION()
hkUint32 m_Offset;
hkArray<ActorInfo> m_ActorInfo;
hkArray<ShapeInfo> m_ShapeInfo;
};
extern const hkClass StaticCompoundInfo_Class;
extern const hkTypeInfo StaticCompoundInfo_TypeInfo;
} // namespace ksys::phys