summaryrefslogtreecommitdiff
path: root/include/egg/gfx/eggAnalizeDL.h
blob: f89cfa7bb738f5e0daac9711e34e18217470ced7 (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
#ifndef EGG_ANALIZE_DL_H
#define EGG_ANALIZE_DL_H

#include "nw4r/g3d/res/g3d_resshp.h"
#include "rvl/GX/GXAttr.h"

namespace EGG {

class AnalizeDL {
public:
    enum Status {
        STATUS_NONE,
        STATUS_1,
        STATUS_2,
        STATUS_3,
        STATUS_VTX = 4,
        STATUS_5,
        STATUS_END = 6,
    };

    struct VtxResult {
        /* 0x00 */ s32 mMtxIdx;
        /* 0x04 */ s32 field_0x04;
        /* 0x08 */ Vec field_0x08;
    };

private:
    /* 0x000 */ u8 *mpData;
    /* 0x004 */ u32 mBufSize;
    /* 0x008 */ u32 mCursor;
    /* 0x00C */ u8 field_0x00C;
    /* 0x00D */ u8 field_0x00D;
    /* 0x00E */ u8 field_0x00E;
    /* 0x00F */ u8 field_0x00F;
    /* 0x010 */ u16 field_0x010;
    /* 0x014 */ GXVtxDescList mVtxDescList[22];
    /* 0x0C4 */ GXVtxAttrFmtList mAttrFmtList[13];
    /* 0x194 */ u8 mArrStride;
    /* 0x198 */ const void *mpArr;
    /* 0x19C */ Status mStatus;
    /* 0x1A0 */ s16 field_0x1A0[10];
    /* 0x1B4 */ s16 field_0x1B4[10];
    /* 0x1C8 */ u8 field_0x1C8;
    /* 0x1CA */ u16 field_0x1CA;
    /* 0x1CC */ u16 field_0x1CC;
    /* 0x1D0 */ VtxResult mVtxResult;

    void init();

public:
    AnalizeDL(nw4r::g3d::ResShp shp);
    virtual ~AnalizeDL() {}

    Status step();
    const VtxResult &getVtxResult() const;
};

} // namespace EGG

#endif