summaryrefslogtreecommitdiff
path: root/include/d/t/d_t_view_clip.h
blob: e3c2024adc73647fdcbe0fde845c92eca0e89666 (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
#ifndef D_T_VIEW_CLIP_H
#define D_T_VIEW_CLIP_H

#include "d/d_area.h"
#include "d/t/d_tg.h"

class dTgViewClip_c : public dTg_c {
public:
    static const s32 sNumEntries = 0x40;

    enum Flag_e {
        FLAG_NORMAL = 0,
        FLAG_FORCE_ON = (1 << 0),
        FLAG_FORCE_OFF = (1 << 1),
    };

    enum Type_e {
        TYPE_FORCE_ON,
        TYPE_FORCE_OFF,
    };

    dTgViewClip_c() {}
    virtual ~dTgViewClip_c() {}

    virtual int create() override;
    virtual int doDelete() override;
    virtual int draw() override;
    virtual int actorExecute() override;

    void setViewClip(u8 setBit);
    static void resetViewClip();
    static f32 getCull(s32 idx, f32 cullDistance);
    static bool checkForceOn(s32 idx);

    static u8 getViewClipBit(s32 idx, u8 setBit);
    static void setViewClipBit(s32 idx, u8 setBit);

    static void setViewClip(s32 idx, u8 value);

private:
    /* 0x0DC */ dArea_c mArea;
    /* 0x12C */ u8 mIndex;
    /* 0x12D */ u8 mType;
    /* 0x12E */ u8 mAreaIndex;

    static u8 sViewClips[sNumEntries];
};

#endif