mirror of https://github.com/zeldaret/tp
187 lines
5.0 KiB
C++
187 lines
5.0 KiB
C++
#ifndef D_DEBUG_CAMERA_H
|
|
#define D_DEBUG_CAMERA_H
|
|
|
|
#include "d/d_camera.h"
|
|
#include "JSystem/JHostIO/JORMContext.h"
|
|
#include "JSystem/JHostIO/JORFile.h"
|
|
|
|
enum dDbgCam_KeyAction {
|
|
/* | */ dDbgCam_KeyAction_FIXEDFRM,
|
|
/* ] */ dDbgCam_KeyAction_UNITRANS,
|
|
/* > */ dDbgCam_KeyAction_BSPLINE,
|
|
/* - */ dDbgCam_KeyAction_NOACTION,
|
|
};
|
|
|
|
class dDbgCamera_c;
|
|
|
|
class dDbgCamKey_c {
|
|
public:
|
|
dDbgCamKey_c() {}
|
|
~dDbgCamKey_c();
|
|
|
|
/* 0x00 */ cXyz mCenter;
|
|
/* 0x0C */ cXyz mEye;
|
|
/* 0x18 */ f32 mFovy;
|
|
/* 0x1C */ f32 mBank;
|
|
struct {
|
|
/* 0x20 */ fpc_ProcID id;
|
|
/* 0x24 */ char name[8];
|
|
} mActorInfo;
|
|
/* 0x2C */ int mAction;
|
|
/* 0x30 */ int mTimer;
|
|
};
|
|
|
|
class dDbgCamSetup_c : public JORReflexible {
|
|
public:
|
|
dDbgCamSetup_c();
|
|
~dDbgCamSetup_c() {}
|
|
|
|
void Init(dDbgCamera_c*);
|
|
void Finish();
|
|
f32 Translate(f32);
|
|
s16 Rotate(f32);
|
|
f32 FlatMove(f32);
|
|
f32 Turbo(f32);
|
|
|
|
void genMessage(JORMContext*);
|
|
void listenPropertyEvent(const JORPropertyEvent*);
|
|
|
|
f32 FovyTick() { return mFovyTick; }
|
|
f32 RotAccel() { return mRotAccel; }
|
|
f32 TransAccel() { return mTransAccel; }
|
|
int CenterMarker() { return mCenterMarker; }
|
|
f32 CenterBall() { return mCenterBall; }
|
|
f32 CenterCloss() { return mCenterCross; }
|
|
|
|
bool CheckFlag(u16 i_flag) { return (i_flag & mFlag) ? true : false; }
|
|
|
|
/* 0x04 */ s32 mActorSrchType;
|
|
/* 0x08 */ f32 mActorSrchRange;
|
|
/* 0x0C */ fpc_ProcID mActorID;
|
|
/* 0x10 */ dDbgCamera_c* mpDbgCam;
|
|
/* 0x14 */ f32 mMoveSpeed;
|
|
/* 0x18 */ f32 mMoveTurbo;
|
|
/* 0x1C */ f32 mMoveParallelShift;
|
|
/* 0x20 */ f32 mRotateSpeed;
|
|
/* 0x24 */ f32 mFovyTick;
|
|
/* 0x28 */ f32 mTransAccel;
|
|
/* 0x2C */ f32 mRotAccel;
|
|
/* 0x30 */ f32 mMoveMax;
|
|
/* 0x34 */ f32 mRotateMax;
|
|
/* 0x38 */ f32 mUnkMax;
|
|
/* 0x3C */ f32 mCenterCross;
|
|
/* 0x40 */ f32 mCenterBall;
|
|
/* 0x44 */ s32 mCenterMarker;
|
|
/* 0x48 */ u16 mFlag;
|
|
/* 0x4C */ cXyz mGazePoint;
|
|
/* 0x58 */ cXyz mPerspective;
|
|
/* 0x64 */ f32 mAngle;
|
|
/* 0x68 */ cXyz field_0x68;
|
|
/* 0x74 */ cXyz field_0x74;
|
|
/* 0x80 */ s8 m_childNo;
|
|
/* 0x84 */ s32 mPosX;
|
|
/* 0x88 */ s32 mPosY;
|
|
};
|
|
|
|
class dDbgCamera_c {
|
|
public:
|
|
dDbgCamera_c() {}
|
|
~dDbgCamera_c() {}
|
|
|
|
void InitlChk();
|
|
int SetlChk(dBgS_LinChk);
|
|
|
|
int moveTool();
|
|
int cmdTool();
|
|
int makeZevData();
|
|
void printZevData();
|
|
void WriteZevData();
|
|
void monitor();
|
|
bool showCenterMarker();
|
|
bool showCameraPos();
|
|
bool showIdlCameraPos();
|
|
void Init(dCamera_c*);
|
|
void Finish();
|
|
void Reset(dCamera_c*);
|
|
int Run();
|
|
int DrawShape();
|
|
int Report(int, int, JUtility::TColor, const char*, ...);
|
|
void OpenFile();
|
|
void PrintFile(char*, ...);
|
|
void CloseFile();
|
|
|
|
char* ActionName(s32 i_action) {
|
|
static char* name[] = {
|
|
"FIXEDFRM",
|
|
"UNITRANS",
|
|
"BSPLINE",
|
|
"NOACTION",
|
|
};
|
|
|
|
return name[i_action];
|
|
}
|
|
|
|
cXyz Center() { return mRunKey.mCenter; }
|
|
void Fovy(f32 fovy) { mRunKey.mFovy = fovy; };
|
|
void Eye(const cXyz& eye) { mRunKey.mEye = eye; };
|
|
void Center(const cXyz& center) { mRunKey.mCenter = center; };
|
|
f32 Fovy() { return mRunKey.mFovy; }
|
|
s16 Bank() { return cSAngle(mRunKey.mBank).Val(); }
|
|
cXyz Up() { return mUp; }
|
|
cXyz Eye() { return mRunKey.mEye; }
|
|
bool Playing() { return mIsPlaying; }
|
|
|
|
dDbgCamKey_c PlaneKey() {
|
|
dDbgCamKey_c rt;
|
|
rt.mCenter = mpCamera->Center();
|
|
rt.mEye = mpCamera->Eye();
|
|
rt.mFovy = mpCamera->Fovy();
|
|
rt.mBank = mpCamera->Bank().Degree();
|
|
rt.mActorInfo.id = fpcM_ERROR_PROCESS_ID_e;
|
|
strcpy(rt.mActorInfo.name, "WORLD");
|
|
rt.mAction = dDbgCam_KeyAction_NOACTION;
|
|
rt.mTimer = 20;
|
|
return rt;
|
|
}
|
|
|
|
char ActionSymbol(s32 i_action) { return "|]>-..."[i_action]; }
|
|
|
|
/* 0x000 */ dCamera_c* mpCamera;
|
|
/* 0x004 */ dDbgCamKey_c mRunKey;
|
|
/* 0x038 */ cXyz mUp;
|
|
/* 0x044 */ cSGlobe field_0x44;
|
|
/* 0x04C */ int mPadNo;
|
|
/* 0x050 */ int field_0x50;
|
|
/* 0x054 */ u32 field_0x54;
|
|
/* 0x058 */ int field_0x58;
|
|
/* 0x05C */ int mCmdMode;
|
|
/* 0x060 */ char mActionKey[32];
|
|
/* 0x080 */ u8 field_0x80;
|
|
/* 0x084 */ dDbgCamKey_c mKeys[32];
|
|
class {
|
|
public:
|
|
/* 0x000 */ int field_0x0;
|
|
/* 0x004 */ int field_0x4;
|
|
/* 0x008 */ u8 field_0x8[0x010 - 0x008];
|
|
/* 0x010 */ cXyz field_0x10[32];
|
|
/* 0x190 */ cXyz field_0x190[32];
|
|
} /* 0x704 */ field_0x704;
|
|
/* 0xA14 */ u8 field_0xA14[0xB14 - 0xA14];
|
|
/* 0xB14 */ int field_0xb14;
|
|
/* 0xB18 */ bool mIsPlaying;
|
|
/* 0xB1C */ dBgS_LinChk mLchk[2];
|
|
/* 0xBFC */ int mLchkNum;
|
|
/* 0xC00 */ int field_0xc00;
|
|
/* 0xC04 */ int field_0xc04;
|
|
/* 0xC08 */ int field_0xc08;
|
|
/* 0xC0C */ int field_0xc0c;
|
|
/* 0xC10 */ f32 field_0xc10;
|
|
/* 0xC14 */ f32 field_0xc14;
|
|
/* 0xC18 */ int field_0xc18;
|
|
/* 0xC1C */ int field_0xc1c;
|
|
/* 0xC20 */ dDbgCamSetup_c mCamSetup;
|
|
/* 0xCAC */ JORFile mFile;
|
|
};
|
|
|
|
#endif
|