Files
dusklight/include/d/actor/d_a_mirror.h
T

78 lines
2.0 KiB
C++

#ifndef D_A_MIRROR_H
#define D_A_MIRROR_H
#include "f_op/f_op_actor_mng.h"
class dMirror_packet_c : public J3DPacket {
public:
dMirror_packet_c();
void reset();
void calcMinMax();
int entryModel(J3DModel*);
void mirrorZdraw(f32*, f32*, f32, f32, f32, f32, f32, f32);
void modelDraw(J3DModel*, f32 (*)[4]);
void mainDraw();
virtual void draw();
virtual ~dMirror_packet_c();
cXyz& getViewScale() { return mViewScale; }
TGXTexObj& getTexObj() { return mTexObj; }
cXyz* getQuad() { return mQuad; }
#if TARGET_PC
// TP HD reflects across N floor quads (F_SP117 room 2 uses 6); GC uses 1.
static const int MAX_QUADS = 6;
#endif
/* 0x010 */ TGXTexObj mTexObj;
/* 0x030 */ u8 mModelCount;
/* 0x034 */ J3DModel* mModels[0x40];
/* 0x134 */ cXyz mQuad[DUSK_IF_ELSE(MAX_QUADS*4, 4)];
/* 0x164 */ cXyz mMinVal;
/* 0x170 */ cXyz mMaxVal;
/* 0x17C */ cXyz mViewScale;
#if TARGET_PC
bool mbReset = false;
bool mbHadEntry = false;
cXyz mQuadBoxMin[MAX_QUADS];
cXyz mQuadBoxMax[MAX_QUADS];
int mQuadCount = 1;
#endif
};
/**
* @ingroup actors-unsorted
* @class daMirror_c
* @brief Mirror
*
* @details Used in Link's House? Or Blizzeta's Room? Or Twilight Mirror?
*
*/
class daMirror_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
daMirror_c();
BOOL createHeap();
void setModelMtx();
inline int create();
int execute();
int entryModel(J3DModel*);
static int entry(J3DModel*);
static bool remove();
inline int Delete();
inline int draw();
s32 getType() { return fopAcM_GetParamBit(this, 0, 8); }
s32 getSw() { return fopAcM_GetParamBit(this, 8, 8); }
static u32 getMirrorRoomPrm() { return 0xFF03; }
typedef int (daMirror_c::*entryModelFunc)(J3DModel*);
static entryModelFunc m_entryModel;
static daMirror_c* m_myObj;
/* 0x570 */ dMirror_packet_c mPacket;
/* 0x6f8 */ J3DModel* mpModel;
};
#endif /* D_A_MIRROR_H */