Files
ph/include/Render/ModelRender.hpp
T
enzofc708 63b823ef2c Decomp ModelRender (#139)
* decomp ModelRender

* fix ModelRender function name

* fix other ModelRender references

* reloc vtables

* fix ModelRender obect size

* fix matches

* match 100%
2026-01-30 16:30:17 +01:00

84 lines
2.8 KiB
C++

#pragma once
#include "global.h"
#include "types.h"
#include <nds/math.h>
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
class ModelRender;
struct ModelRender_UnkBoneMatrixStruct {
/* 00 */ unk8 mUnk_00[0x28];
/* 28 */ Mat3p mUnk_28;
/* 4c */ unk8 mUnk_4c[0xC];
/* 58 */
};
struct ModelRender_UnkStruct_4 {
/* 00 */ unk32 flags;
/* 04 */ void *mLcdcAddr;
/* 08 */ void *mUnk_08; // this attribute is related to UnkStruct_ov000_020c0c08
/* 0c */ void *mUnkTransformFunc;
/* 10 */ void *mUnk_10; // also related to UnkStruct_ov000_020c0c08
/* 14 */ void *mUnkMaterialFunc;
/* 18 */ void *mUnk_18; // also related to UnkStruct_ov000_020c0c08
/* 1c */ void *mUnkVisibilityFunc;
/* 20 */ void *mUnkFunc_20;
/* 24 */ unk8 mUnk_24;
/* 25 */ unk8 mUnk_25;
/* 26 */ unk8 mUnk_26[2];
/* 28 */ void *mUnk_28;
/* 2c */ ModelRender *mUnk_2c; // pointer to self?
/* 30 */ unk32 mUnk_30;
/* 34 */ ModelRender_UnkBoneMatrixStruct *unkBoneMatrixArray1;
/* 38 */ unk32 mUnk_38[3];
/* 44 */ unk32 mUnk_44[2];
/* 4c */ unk32 mUnk_4c[2];
/* 54 */
};
struct ModelRenderCommandsData {
/* 00 */ u8 command;
/* 04 */ ModelRender_UnkStruct_4 *unkStruct4;
/* 08 */
};
class ItemModel;
class ModelRender : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ ModelRender_UnkStruct_4 mUnk_04;
/* 58 */ ModelRender_UnkBoneMatrixStruct *unkBoneMatrixArray2;
/* 5c */
/* 00 */ virtual ~ModelRender();
/* 08 */ virtual void *GetLcdcAddress();
/* 0c */ virtual void Init_ModelRender_UnkStruct_4(ItemModel *model);
/* 10 */ virtual void SetTransform(Vec3p *scale, Mat3p *rotation, Vec3p *translation);
/* 14 */ virtual void SetRotationTranslation(Mat3p *rotation, Vec3p *translation);
/* 18 */ virtual void SetTranslation(Vec3p *translation);
/* 1c */ virtual void PushGeometryCommands();
/* 20 */ virtual void ExecRenderCommands(); // Reads the NSBMD Render Commands and push instructions to the FIFO
/* 24 */ virtual void vfunc_24(UnkStruct_ov000_020c0c08 *param1);
/* 28 */ virtual void vfunc_28();
/* 2c */ virtual void vfunc_2c();
/* 30 */ virtual void vfunc_30();
/* 34 */ virtual void vfunc_34();
/* 38 */ virtual void vfunc_38();
/* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData);
/* 40 */
ModelRender(ItemModel *itemModel);
ModelRender_UnkBoneMatrixStruct *UnkGetBoneMatrix(s32 index);
s32 GetObjectIndex(char *objectName);
s32 GetMaterialIndex(char *materialName);
void InitBoneMatrixArrays(u32 idLength);
void SetUnkBoneMatrixArray1(ModelRender_UnkBoneMatrixStruct *boneMatrix);
void UnkInit_Struct4_Params(u8 param1, u8 param2);
void func_ov000_020b413c(unk16 param1, Vec3p *param2);
};