#ifndef __KAMEK_G3DHAX_H #define __KAMEK_G3DHAX_H // nw4r::g3d wrapper namespace nw4r { namespace g3d { class ResName { public: const char *name; ResName(const char *p = NULL) { name = p; } }; class ResMdl { public: void * /*ResMdlData*/ data; ResMdl(void *p = NULL) { data = p; } void * /*ResMat*/ GetResMat(const char *str) const; }; class ResFile { public: void * /*ResFileData*/ data; ResFile(void *p = NULL) { data = p; } void Init(); bool CheckRevision() const; ResMdl GetResMdl(const char *str) const; void * /*ResPltt*/ GetResPltt(const ResName n) const; void * /*ResTex*/ GetResTex(const char *str) const; void * /*ResTex*/ GetResTex(const ResName n) const; void * /*ResTex*/ GetResTex(u32 idx) const; void * /*ResAnmChr*/ GetResAnmChr(const char *str) const; void * /*ResAnmVis*/ GetResAnmVis(const char *str) const; void * /*ResAnmClr*/ GetResAnmClr(const char *str) const; void * /*ResAnmTexPat*/ GetResAnmTexPat(const char *str) const; void * /*ResAnmTexSrt*/ GetResAnmTexSrt(const char *str) const; void * /*ResAnmScn*/ GetResAnmScn(const char *str) const; bool Bind(ResFile rhs); }; void *__ScnMdlSimple__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResMdl*/ mdl, int nView = 1); void *__ScnMdl__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResMdl*/ mdl, u32 bufferOption, int nView = 1); void *__AnmObjChrRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmChr*/ resAnm, void * /*ResMdl*/ resMdl, bool bHasCache); void *__AnmObjVisRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmVis*/ resAnm, void * /*ResMdl*/ resMdl); void *__AnmObjTexPatRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmTexPat*/ resAnm, void * /*ResMdl*/ resMdl, bool bHasCache); void *__AnmObjTexSrtRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmTexSrt*/ resAnm, void * /*ResMdl*/ resMdl, bool bHasCache); void *__AnmObjMatClrRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmMatClr*/ resAnm, void * /*ResMdl*/ resMdl, bool bHasCache); void *__AnmObjShpRes__Construct( void * /*MEMAllocator*/ pHeap, u32 *pSize, void * /*ResAnmShp*/ resAnm, void * /*ResMdl*/ resMdl, bool bHasCache); bool InsertIntoScene(void *scnObj); // 80164F90 extern void *g3dMemAllocator; // 8042A6A8 inline void *ConstructScnMdlSimple(void *mdl, int nView = 1) { return __ScnMdlSimple__Construct(g3dMemAllocator, 0, mdl, nView); } inline void *ConstructScnMdl(void *mdl, u32 bufferOption, int nView = 1) { return __ScnMdl__Construct(g3dMemAllocator, 0, mdl, bufferOption, nView); } } } class mHeapAllocator_c { // Actually that weird subclass. INCOMPLETE!! public: char data1[0x10]; mHeapAllocator_c(); virtual ~mHeapAllocator_c(); virtual void *alloc(u32 size); virtual void free(void *block); bool link(s32 size, void *heap, const char *name, int align); u32 unlink(); char data2[8]; }; namespace m3d { // random, just dumped it here because I dunno where else void DisableIndirectTexturing(); void InitTexObjWithResTex(GXTexObj *obj, /* ResTex */ void *resTex, GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXTexFilter minFilt, GXTexFilter magFilt); // I need to do scnLeaf_c some time... class proc_c { public: proc_c(); virtual ~proc_c(); void setup(void *allocator = 0, u32 *size = 0); virtual int returnUnknown(); virtual void free(); virtual bool scheduleForDrawing(); virtual void drawOpa(); virtual void drawXlu(); void setScnObjOption(ulong, ulong); bool getScnObjOption(ulong, ulong*); void setScale(float x, float y, float z); void setScale(Vec vec); void setDrawMatrix(Mtx *mtx); void getLocalMatrix(Mtx *mtx); void getViewMatrix(Mtx *mtx); void calcWorld(bool); void calcView(bool); void setDrawPriorities(int opa, int xlu); void *scnObj; }; class mdl_c { public: mdl_c(); virtual ~mdl_c(); virtual void _vf0C(); virtual void _vf10(); virtual bool scheduleForDrawing(); virtual void bindAnim(void *anim, float boo); virtual void _vf1C(); bool setup(nw4r::g3d::ResMdl model, void *allocator, u32 bufferOption, int nView, u32 *size); void oneSetupType(); void sub_80064BF0(); void setDrawMatrix(const Mtx matrix); void setScale(float x, float y, float z); void setScale(Vec *scale); void calcWorld(bool unk); char data[0x3C]; }; }; void SetupTextures_Player(m3d::mdl_c *model, int sceneID); // 800B3E50 void SetupTextures_Map(m3d::mdl_c *model, int sceneID); // 800B3F50 void SetupTextures_Boss(m3d::mdl_c *model, int sceneID); // 800B4050 void SetupTextures_Enemy(m3d::mdl_c *model, int sceneID); // 800B4170 void SetupTextures_MapObj(m3d::mdl_c *model, int sceneID); // 800B42B0 void SetupTextures_Item(m3d::mdl_c *model, int sceneID); // 800B43D0 #endif