/* 0x00 */u16vtxCount;// number of vertices in this modif entry
/* 0x02 */u16transformCount;
/* 0x04 */u16unk_4;// index of limbTransformations?
/* 0x08 */SkinVertex*skinVertices;
/* 0x0C */SkinTransformation*limbTransformations;
}SkinLimbModif;// size = 0x10
typedefstruct{
/* 0x00 */u16totalVtxCount;// total vertex count for all modif entries
/* 0x02 */u16limbModifCount;
/* 0x04 */SkinLimbModif*limbModifications;
/* 0x08 */Gfx*dlist;
}SkinAnimatedLimbData;// size = 0xC
// ZAPD compatibility typedefs
// TODO: Remove when ZAPD adds support for them
typedefSkinVertexStruct_800A57C0;
typedefSkinTransformationStruct_800A598C_2;
typedefSkinAnimatedLimbDataStruct_800A5E28;
typedefSkinLimbModifStruct_800A598C;
#define SKIN_LIMB_TYPE_ANIMATED 4
#define SKIN_LIMB_TYPE_NORMAL 11
typedefstruct{
/* 0x00 */Vec3sjointPos;// Root is position in model space, children are relative to parent
/* 0x06 */u8child;
/* 0x07 */u8sibling;
/* 0x08 */s32segmentType;// Type of data contained in segment
/* 0x0C */void*segment;// Gfx* if segmentType is SKIN_LIMB_TYPE_NORMAL, SkinAnimatedLimbData* if segmentType is SKIN_LIMB_TYPE_ANIMATED, NULL otherwise
}SkinLimb;// size = 0x10
typedefstruct{
/* 0x000 */u8index;// alternates every draw cycle
/* 0x004 */Vtx*buf[2];// number of vertices in buffer determined by `totalVtxCount`
}SkinLimbVtx;// size = 0xC
typedefstruct{
/* 0x000 */SkeletonHeader*skeletonHeader;
/* 0x004 */MtxFmtx;
/* 0x044 */s32limbCount;
/* 0x048 */SkinLimbVtx*vtxTable;// double buffered list of vertices for each limb