binana/profile/3.3.5a-windows-386/include/m2/model.h

270 lines
5.8 KiB
C
Raw Normal View History

2024-11-01 03:54:09 -04:00
#ifndef M2_MODEL_H
#define M2_MODEL_H
DECLARE_STRUCT(M2ModelAttachment);
DECLARE_STRUCT(M2ModelBoneSeq);
DECLARE_STRUCT(M2ModelBone);
DECLARE_STRUCT(M2ModelCamera);
DECLARE_STRUCT(M2ModelColor);
DECLARE_STRUCT(M2ModelLight);
DECLARE_STRUCT(M2ModelRibbon);
DECLARE_STRUCT(M2ModelTextureTransform);
DECLARE_STRUCT(M2ModelTextureWeight);
DECLARE_STRUCT(M2ModelOptGeo);
DECLARE_STRUCT(CM2ModelCall);
DECLARE_STRUCT(CM2Model);
#include "camera/camera.h"
#include "m2/data.h"
#include "m2/scene.h"
#include "m2/shared.h"
#include "m2/lighting.h"
#include "m2/ribbon.h"
#include "tempest/vector.h"
#include "tempest/quaternion.h"
#include "gx/texture.h"
// template<class T>
#define M2_MODEL_TRACK(T) \
typedef struct M2ModelTrack_##T M2ModelTrack_##T; \
struct M2ModelTrack_##T { \
uint32_t currentKey; \
M2Track_##T* sourceTrack; \
T currentValue; \
};
M2_MODEL_TRACK(uint8_t);
M2_MODEL_TRACK(float);
M2_MODEL_TRACK(C3Vector);
M2_MODEL_TRACK(C4Quaternion);
struct M2ModelAttachment {
int32_t unk;
};
struct M2ModelBoneSeq {
uint32_t uint0;
uint16_t uint4;
uint16_t uint6;
uint16_t uint8;
uint8_t uintA;
uint8_t uintB;
uint32_t uintC;
uint32_t uint10;
float float14;
float float18;
uint32_t uint1C;
uint32_t uint20;
};
struct M2ModelBone {
M2ModelTrack_C3Vector translationTrack;
M2ModelTrack_C4Quaternion rotationTrack;
M2ModelTrack_C3Vector scaleTrack;
M2ModelBoneSeq sequence;
M2ModelBoneSeq secondarySequence;
uint32_t flags;
uint32_t uint90;
uint16_t uint94;
uint32_t uint9C;
float floatA0;
float floatA4;
float floatA8;
};
struct M2ModelCamera {
M2ModelTrack_C3Vector positionTrack;
M2ModelTrack_C3Vector targetTrack;
M2ModelTrack_float rollTrack;
HCAMERA m_camera;
};
struct M2ModelColor {
M2ModelTrack_C3Vector colorTrack;
M2ModelTrack_float alphaTrack;
};
struct M2ModelLight {
M2ModelTrack_C3Vector ambientColorTrack;
M2ModelTrack_float ambientIntensityTrack;
M2ModelTrack_C3Vector diffuseColorTrack;
M2ModelTrack_float diffuseIntensityTrack;
M2ModelTrack_uint8_t visibilityTrack;
uint32_t uint64;
CM2Light light;
};
struct M2ModelRibbon {
uint32_t dword0;
uint32_t dword4;
uint32_t dword8;
uint32_t dwordC;
uint32_t dword10;
uint32_t dword14;
uint32_t dword18;
uint32_t dword1C;
uint32_t dword20;
uint32_t dword24;
uint32_t dword28;
uint32_t dword2C;
uint32_t dword30;
uint32_t dword34;
uint32_t dword38;
uint32_t dword3C;
uint32_t dword40;
uint32_t dword44;
uint32_t dword48;
uint32_t dword4C;
};
struct M2ModelTextureTransform {
int32_t unk;
};
struct M2ModelTextureWeight {
M2ModelTrack_float weightTrack;
};
struct M2ModelOptGeo {
M2Batch* batches;
uint32_t dword4;
M2SkinSection* skinSections;
uint32_t dwordC;
uint32_t dword10;
uint32_t dword14;
uint32_t dword18;
CShaderEffect** effects;
uint32_t dword20;
uint32_t dword24;
uint32_t dword28;
uint32_t dword2C;
uint32_t dword30;
uint32_t dword34;
uint32_t dword38;
uint32_t dword3C;
uint32_t dword40;
uint32_t dword44;
uint32_t dword48;
uint32_t dword4C;
};
struct CM2ModelCall {
uint32_t type;
CM2ModelCall* modelCallNext;
uint32_t time;
uint32_t args[8];
};
struct CM2Model {
uint32_t m_refCount;
uint32_t m_flags;
CM2Model** m_scenePrev;
CM2Model* m_sceneNext;
// uint32_t m_loaded : 1;
// uint32_t m_flag2 : 1;
// uint32_t m_flag4 : 1;
// uint32_t m_flag8 : 1;
// uint32_t m_flag10 : 1;
// uint32_t m_flag20 : 1;
// uint32_t m_flag40 : 1;
// uint32_t m_flag80 : 1;
// uint32_t m_flag100 : 1;
// uint32_t m_flag200 : 1;
// uint32_t m_flag400 : 1;
// uint32_t m_flag800 : 1;
// uint32_t m_flag1000 : 1;
// uint32_t m_flag2000 : 1;
// uint32_t m_flag4000 : 1;
// uint32_t m_flag8000 : 1;
// uint32_t m_flag10000 : 1;
// uint32_t m_flag20000 : 1;
// uint32_t m_flag40000 : 1;
// uint32_t m_flag80000 : 1;
// uint32_t m_flag100000 : 1;
// uint32_t m_flag200000 : 1;
// uint32_t m_flag400000 : 1;
uint32_t f_flags;
uint32_t dword14;
CM2Model** m_callbackPrev;
CM2Model* m_callbackNext;
void* m_loadedCallback;
void* m_loadedArg;
CM2Scene* m_scene;
CM2Shared* m_shared;
CM2Model* model30;
CM2ModelCall* m_modelCallList;
CM2ModelCall** m_modelCallTail;
uint32_t dword3C;
CM2Model** m_animatePrev;
CM2Model* m_animateNext;
CM2Model* m_attachParent;
void* m_attachments;
uint32_t dword50;
uint32_t dword54;
CM2Model* model58;
uint32_t dword5C;
CM2Model* model60;
uint32_t m_time;
CM2Model** m_drawPrev;
CM2Model* m_drawNext;
uint32_t* m_loops;
uint32_t uint74;
uint32_t dword78;
uint32_t dword7C;
uint32_t dword80;
uint32_t dword84;
float float88;
uint32_t uint8C;
uint32_t uint90;
M2ModelBone* m_bones;
C44Matrix* m_boneMatrices;
void* m_skinSections;
M2ModelColor* m_colors;
HTEXTURE* m_textures;
M2ModelTextureWeight* m_textureWeights;
void* m_textureTransforms;
C44Matrix* m_textureMatrices;
C44Matrix matrixB4;
C44Matrix matrixF4;
C44Matrix matrix134;
uint32_t dword174;
float m_alpha;
uint32_t dword17C;
uint32_t dword180;
uint32_t dword184;
uint32_t dword188;
uint32_t dword18C;
uint32_t dword190;
uint32_t dword194;
float float198;
float alpha19C;
C3Vector m_currentDiffuse;
C3Vector m_currentEmissive;
uint32_t dword1B8;
void* m_drawCallback;
uint32_t dword1C0;
uint32_t dword1C4;
uint32_t dword1C8;
uint32_t dword1CC;
M2ModelLight* m_lights;
CM2Lighting m_lighting;
CM2Lighting* m_currentLighting;
void* m_lightingCallback;
void* m_lightingArg;
M2ModelCamera* m_cameras;
M2ModelRibbon* m_ribbons;
CRibbonEmitter* m_ribbonEmitters;
void* m_particles;
uint32_t dword2C4;
uint32_t dword2C8;
uint32_t dword2CC;
M2ModelOptGeo* m_optGeo;
uint32_t dword2D4;
uint32_t dword2D8;
uint32_t dword2DC;
uint32_t dword2E0;
uint32_t dword2E4;
uint32_t dword2E8;
uint32_t dword2EC;
};
#endif