summaryrefslogtreecommitdiff
path: root/include/d/d_material.h
blob: e29afdf0f75d7c371b6461ae8e3368d5ad353ca6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef D_MATERIAL_H
#define D_MATERIAL_H

#include "m_Do/m_Do_ext.h"

class J3DMaterialTable;
class J3DAnmTextureSRTKey;
class mDoExt_McaMorf;
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*);
    void play();
    void copy(J3DModelData*);
    void updateDL(J3DModel*, s8, mDoExt_invisibleModel*);
    void updateDL(mDoExt_McaMorf*, s8, mDoExt_invisibleModel*);
    void entryDL(J3DModel*, s8, mDoExt_invisibleModel*);
    void entryDL(mDoExt_McaMorf*, s8, mDoExt_invisibleModel*);

    /* 0x00 */ J3DMaterialTable* mMaterialTable;
    /* 0x04 */ mDoExt_btkAnm mBtkAnm;
};

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);
    }
    static void iceEntryDL(mDoExt_McaMorf* morf, s8 param_2, mDoExt_invisibleModel* invisModel) {
        mIce->entryDL(morf, param_2, invisModel);
    }
    static void iceUpdateDL(J3DModel* model, s8 param_2, mDoExt_invisibleModel* invisModel) {
        mIce->updateDL(model, param_2, invisModel);
    }
    static void iceUpdateDL(mDoExt_McaMorf* morf, s8 param_2, mDoExt_invisibleModel* invisModel) {
        mIce->updateDL(morf, param_2, invisModel);
    }

    static void push(J3DModelData* modelData) { mTempBackup.create(modelData); }
    static void pop(J3DModelData* modelData) { mTempBackup.restore(modelData); }

    static mDoExt_backupMaterial_c mTempBackup;
    static JKRSolidHeap* mHeap;
    static dMat_backup_c* mBackup;
    static dMat_ice_c* mIce;
};

#endif /* D_MATERIAL_H */