class TypeInfo : public MemberInfo
{
public:
struct TypeInfoData : MemberInfoData
{
unsigned short m_TotalSize; //0x000A
char _0x000C[4];
ModuleInfo* m_Module; //0x0010
// new for swbfII
TypeInfo* m_pArrayTypeInfo; //0x0018
unsigned short m_Alignment; //0x0020
unsigned short m_FieldCount; //0x0022
char _0x001C[4]; //[6];
};//Size=0x0028
TypeInfo* m_Next; //0x0008
unsigned short m_RuntimeId; //0x0010
unsigned short m_Flags; //0x0012
char _0x0014[4];
TypeInfoData* GetTypeInfoData();
};//Size=0x0018
class FieldInfo : public MemberInfo
{
public:
struct FieldInfoData : MemberInfo::MemberInfoData
{
unsigned short m_FieldOffset; //0x000A
char _0x000C[4];
TypeInfo* m_FieldTypePtr; //0x0010
};//Size=0x0018
virtual TypeInfo* GetDeclaringType();
virtual unsigned short GetFieldIndex();
TypeInfo* m_DeclaringType; //0x0010
FieldInfoData* GetFieldInfoData();
};//Size=0x0018
class ClassInfo : public TypeInfo
{
public:
struct ClassInfoData : TypeInfo::TypeInfoData
{
ClassInfo* m_SuperClass; //0x0028
FieldInfo::FieldInfoData* m_Fields; //0x0030
};//Size=0x0038
char pad_0018[32]; //0x0018
ClassInfo* m_Super; //0x0038
void* m_DefaultInstance; //0x0040
unsigned short m_ClassId; //0x0048
unsigned short m_LastSubClassId; //0x004A
ClassInfoData* GetClassInfoData();
};//Size=0x004C
class ArrayTypeInfo : public TypeInfo
{
public:
struct ArrayTypeInfoData : TypeInfo::TypeInfoData
{
TypeInfo* m_ElementType; //0x0028
};//Size=0x0030
ArrayTypeInfoData* GetArrayTypeInfoData();
};//Size=0x0018
class EnumFieldInfo : public TypeInfo
{
public:
struct EnumFieldInfoData : TypeInfo::TypeInfoData
{
FieldInfo::FieldInfoData* m_Fields; //0x0028
};//Size=0x0030
EnumFieldInfoData* GetEnumInfoData();
};//Size=0x0018
class ValueTypeInfo : public TypeInfo
{
public:
struct ValueTypeInfoData : TypeInfo::TypeInfoData
{
char pad_0028[40]; //0x0028
FieldInfo::FieldInfoData* m_Fields; //0x0050
};//Size=0x0030
ValueTypeInfoData* GetValueInfoData();
};//Size=0x0018
class ITypedObject
{
public:
virtual TypeInfo* GetType();
};//Size=0x0008