mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 14:07:29 -04:00
d_material
This commit is contained in:
+21
-2
@@ -1,7 +1,7 @@
|
||||
#ifndef D_MATERIAL_H
|
||||
#define D_MATERIAL_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
|
||||
class J3DMaterialTable;
|
||||
class J3DAnmTextureSRTKey;
|
||||
@@ -10,6 +10,17 @@ class mDoExt_invisibleModel;
|
||||
class J3DModel;
|
||||
class J3DModelData;
|
||||
|
||||
class dMat_backup_c {
|
||||
public:
|
||||
dMat_backup_c();
|
||||
~dMat_backup_c();
|
||||
void restore();
|
||||
|
||||
/* 0x00 */ J3DModelData* mModelData;
|
||||
/* 0x04 */ u8 field_0x4[4];
|
||||
/* 0x08 */ mDoExt_backupMaterial_c field_0x8;
|
||||
};
|
||||
|
||||
class dMat_ice_c {
|
||||
public:
|
||||
void create(J3DMaterialTable*, J3DAnmTextureSRTKey*);
|
||||
@@ -19,12 +30,17 @@ public:
|
||||
void updateDL(mDoExt_McaMorf*, s8, mDoExt_invisibleModel*);
|
||||
void entryDL(J3DModel*, s8, mDoExt_invisibleModel*);
|
||||
void entryDL(mDoExt_McaMorf*, s8, mDoExt_invisibleModel*);
|
||||
|
||||
/* 0x00 */ J3DMaterialTable* field_0x0;
|
||||
/* 0x04 */ mDoExt_btkAnm field_0x4;
|
||||
};
|
||||
|
||||
class dMat_control_c {
|
||||
public:
|
||||
static void icePlay() { mIce->play(); }
|
||||
static void create(J3DMaterialTable*, J3DAnmTextureSRTKey*);
|
||||
static void remove();
|
||||
static void restore(s8);
|
||||
|
||||
static void iceEntryDL(J3DModel* model, s8 param_2, mDoExt_invisibleModel* invisModel) {
|
||||
mIce->entryDL(model, param_2, invisModel);
|
||||
@@ -43,7 +59,10 @@ public:
|
||||
static void pop(J3DModelData*) {}
|
||||
static void push(J3DModelData*) {}
|
||||
|
||||
static mDoExt_backupMaterial_c mTempBackup;
|
||||
static JKRSolidHeap* mHeap;
|
||||
static dMat_backup_c* mBackup;
|
||||
static dMat_ice_c* mIce;
|
||||
};
|
||||
|
||||
#endif /* D_MATERIAL_H */
|
||||
#endif /* D_MATERIAL_H */
|
||||
|
||||
@@ -509,6 +509,7 @@ private:
|
||||
|
||||
class mDoExt_backupMaterial_c {
|
||||
public:
|
||||
mDoExt_backupMaterial_c() { mBackupMatBlock = NULL; }
|
||||
bool create(J3DModelData*);
|
||||
bool create(u16);
|
||||
void restore(J3DModelData*);
|
||||
|
||||
+36
-11
@@ -3,22 +3,36 @@
|
||||
// Translation Unit: d_material.cpp
|
||||
//
|
||||
|
||||
#include "d_material.h"
|
||||
#include "d/d_material.h"
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
mDoExt_backupMaterial_c dMat_control_c::mTempBackup;
|
||||
JKRSolidHeap* dMat_control_c::mHeap;
|
||||
dMat_backup_c* dMat_control_c::mBackup;
|
||||
dMat_ice_c* dMat_control_c::mIce;
|
||||
|
||||
/* 8006F62C-8006F69C .text restore__13dMat_backup_cFv */
|
||||
void dMat_backup_c::restore() {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(82, mModelData != 0);
|
||||
field_0x8.restore(mModelData);
|
||||
}
|
||||
|
||||
/* 8006F69C-8006F740 .text create__10dMat_ice_cFP16J3DMaterialTableP19J3DAnmTextureSRTKey */
|
||||
void dMat_ice_c::create(J3DMaterialTable*, J3DAnmTextureSRTKey*) {
|
||||
void dMat_ice_c::create(J3DMaterialTable* param_1, J3DAnmTextureSRTKey* param_2) {
|
||||
/* Nonmatching */
|
||||
field_0x0 = param_1;
|
||||
int rt = field_0x4.init(field_0x0, param_2, 1, 2, 1.0f, 0, -1, false, 0);
|
||||
JUT_ASSERT(98, rt != 0);
|
||||
field_0x4.entry(field_0x0, field_0x4.getFrameCtrl()->getFrame());
|
||||
}
|
||||
|
||||
/* 8006F740-8006F780 .text play__10dMat_ice_cFv */
|
||||
void dMat_ice_c::play() {
|
||||
/* Nonmatching */
|
||||
field_0x4.play();
|
||||
field_0x4.entryFrame();
|
||||
}
|
||||
|
||||
/* 8006F780-8006F83C .text copy__10dMat_ice_cFP12J3DModelData */
|
||||
@@ -47,27 +61,38 @@ void dMat_ice_c::entryDL(mDoExt_McaMorf*, signed char, mDoExt_invisibleModel*) {
|
||||
}
|
||||
|
||||
/* 8006FB84-8006FCF0 .text create__14dMat_control_cFP16J3DMaterialTableP19J3DAnmTextureSRTKey */
|
||||
void dMat_control_c::create(J3DMaterialTable*, J3DAnmTextureSRTKey*) {
|
||||
void dMat_control_c::create(J3DMaterialTable* param_1, J3DAnmTextureSRTKey* param_2) {
|
||||
/* Nonmatching */
|
||||
mHeap = mDoExt_createSolidHeapFromSystem(0, 0);
|
||||
JUT_ASSERT(308, mHeap != 0);
|
||||
JKRHeap* heap = mDoExt_setCurrentHeap(mHeap);
|
||||
mBackup = new dMat_backup_c[16];
|
||||
mIce = new dMat_ice_c();
|
||||
JUT_ASSERT(313, mBackup != 0 && mIce != 0);
|
||||
mIce->create(param_1, param_2);
|
||||
mTempBackup.create(0x40);
|
||||
mDoExt_adjustSolidHeap(mHeap);
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
}
|
||||
|
||||
/* 8006FD4C-8006FD88 .text __dt__13dMat_backup_cFv */
|
||||
dMat_backup_c::~dMat_backup_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
dMat_backup_c::~dMat_backup_c() {}
|
||||
|
||||
/* 8006FD88-8006FD98 .text __ct__13dMat_backup_cFv */
|
||||
dMat_backup_c::dMat_backup_c() {
|
||||
/* Nonmatching */
|
||||
mModelData = NULL;
|
||||
}
|
||||
|
||||
/* 8006FD98-8006FDBC .text remove__14dMat_control_cFv */
|
||||
void dMat_control_c::remove() {
|
||||
/* Nonmatching */
|
||||
mDoExt_destroySolidHeap(mHeap);
|
||||
}
|
||||
|
||||
/* 8006FDBC-8006FDF4 .text restore__14dMat_control_cFSc */
|
||||
void dMat_control_c::restore(signed char) {
|
||||
void dMat_control_c::restore(s8 param_1) {
|
||||
/* Nonmatching */
|
||||
if (param_1 < 0) {
|
||||
return;
|
||||
}
|
||||
mBackup[param_1].restore();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user