-
Notifications
You must be signed in to change notification settings - Fork 0
ChrInfo
_nebula edited this page Oct 25, 2025
·
4 revisions
struct ChrCntl_ChrInfo_s
{
int offsetToRelocationTable;
int version; // 22 in GF1, 23 in TSG and GF2
unsigned int nameID[4];
int numSkeletons;
EA::CCT::Skeleton *skeletons;
int numSkeletonFilters;
EA::CCT::SkeletonFilterRef *skeletonFilterArr;
EA::CCT::SkeletonFilterMap *skeletonFilterMap; // Always 0?
ChrCntl_TransitionRulesList *transitionRulesList; // Always 0?
ChrCntl_NameNodeHash *m_nameNodeHash; // Always 0?
struct ChrCntl_MotionRefMap *motionRefMap; // Always 0?
float baseScale;
int *stateFrameCount; // Always 0?
ChrCntl_LocatorHeader_s *locatorTable; // Might be one header per skeleton?
int numReferencedContainers; // Always 0?
unsigned int *referencedContainerIds; // Always 0?
int numPoseAdjustments; // Always 0?
ChrCntl_PoseAdjustment_s *poseAdjustments; // Always 0?
int numSkeletonBindings; // Always 0?
ChrCntl_Transform *skeletonBindings; // Always 0?
};
struct EA::CCT::Skeleton
{
unsigned int nameID;
char *skeletonName; // Null terminated string
int numBones;
EA::CCT::Bone *bones;
float (*invBindMats)[4][4]; // Each matrix is 64 bytes and there are numBones matrices.
ChrCntl_IndexLookupEntry_s *boneIndexLookupTable;
};
struct ChrCntl_IndexLookupEntry_s
{
unsigned int resourceID[4];
int index;
};
struct EA::CCT::Bone
{
int parent; // -1 if no parent
int bindTableIdx; // Always -1?
int bindSourceIdx; // Always -1?
int bindType; // Always 1?
};
struct __cppobj EA::CCT::SkeletonFilterRef
{
int m_ID;
EA::CCT::SkeletonFilter *m_filter;
};
struct __cppobj EA::CCT::SkeletonFilter
{
unsigned int *m_buffer;
int m_boneCount;
};
struct ChrCntl_LocatorHeader_s
{
int numLocators; // Always 0?
ChrCntl_Locator_s *locators; // Points to 0x5F5F5F5F padding?
};