mirror of
https://github.com/zeldaret/ss
synced 2026-09-03 18:03:48 -04:00
Progress on game cam
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
struct cBgD_Vtx_t;
|
||||
|
||||
class dBgS_SphChk;
|
||||
typedef void *(*SphChk_Callback)(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
|
||||
typedef void (*SphChk_Callback)(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
|
||||
|
||||
class dBgS_SphChk : public cM3dGSph, public cBgS_PolyInfo, public cBgS_Chk, public dBgS_Chk {
|
||||
public:
|
||||
|
||||
@@ -64,9 +64,9 @@ public:
|
||||
static u32 ProcAtTgHitmark(cCcD_Obj *, cCcD_Obj *, mVec3_c *, u32, mVec3_c *);
|
||||
static void SetAtTgObjInf(bool, bool, cCcD_Obj *, cCcD_Obj *, mVec3_c *, bool);
|
||||
|
||||
bool ChkCamera(mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
|
||||
bool ChkCamera(mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *);
|
||||
bool
|
||||
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
|
||||
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *);
|
||||
|
||||
bool ChkCo(const mVec3_c &, dAcObjBase_c *);
|
||||
bool fn_80357c90(const mVec3_c &, const mVec3_c &, u32, cCcD_ShapeAttr **, f32);
|
||||
|
||||
@@ -37,18 +37,10 @@ public:
|
||||
// vt at 0x28
|
||||
/* vt 0x08 */ virtual void onBecomeActive() {}
|
||||
/* vt 0x0C */ virtual void onBecomeInactive() {}
|
||||
/* vt 0x10 */ virtual bool create() {
|
||||
return true;
|
||||
}
|
||||
/* vt 0x14 */ virtual bool remove() {
|
||||
return true;
|
||||
}
|
||||
/* vt 0x18 */ virtual bool execute() {
|
||||
return true;
|
||||
}
|
||||
/* vt 0x1C */ virtual bool draw() {
|
||||
return true;
|
||||
}
|
||||
/* vt 0x10 */ virtual bool create();
|
||||
/* vt 0x14 */ virtual bool remove();
|
||||
/* vt 0x18 */ virtual bool execute();
|
||||
/* vt 0x1C */ virtual bool draw();
|
||||
/* vt 0x20 */ virtual ~dCameraBase_c() {}
|
||||
/* vt 0x24 */ virtual CamView &getView() {
|
||||
// TODO - const?
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "toBeSorted/d_camera_base.h"
|
||||
#include "toBeSorted/deg_angle_util.h"
|
||||
|
||||
class dCamera_c;
|
||||
|
||||
// Size: 0xC
|
||||
struct CamParamHeader {
|
||||
/* 0x00 */ u32 magic;
|
||||
@@ -22,8 +24,10 @@ struct CamParamHeader {
|
||||
// Size: 0xA
|
||||
#pragma pack(push, 2)
|
||||
struct CamParamStyle {
|
||||
/* 0x00 */ u32 id;
|
||||
/* 0x04 */ u8 _0x04[6];
|
||||
/* 0x00 */ u8 id[4];
|
||||
/* 0x04 */ u8 _0x04[2];
|
||||
/* 0x06 */ u16 floatParamOffset;
|
||||
/* 0x08 */ u16 flagParamOffset;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
@@ -91,7 +95,7 @@ struct CamId {
|
||||
field_0x04 = 0;
|
||||
}
|
||||
|
||||
bool someCheck() const {
|
||||
bool isValid() const {
|
||||
if (field_0x04 < 3 && roomId != dAcPy_c::GetLinkM()->mRoomID) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -129,6 +133,44 @@ struct UnkCamChecks {
|
||||
void fn_8007E1B0(dAcObjBase_c *ac);
|
||||
};
|
||||
|
||||
class CamStyle {
|
||||
public:
|
||||
void loadStyle(u16 styleIdx);
|
||||
f32 getFloat(s32 idx) const;
|
||||
bool getFlag(s32 idx) const;
|
||||
|
||||
// TODO: Probably wrong
|
||||
CamStyle(const UNKWORD &u1, const UNKWORD &u2, f32 *pFloats, s32 numFloats, u16 *pFlags, s32 numFlags)
|
||||
: field_0x08(u1),
|
||||
mpFloats(pFloats),
|
||||
mpParamFloats(pFloats),
|
||||
mNumFloats(numFloats),
|
||||
mpFlags(pFlags),
|
||||
mpParamFlags(pFlags),
|
||||
mNumFlags(numFlags),
|
||||
field_0x18(u1) {
|
||||
mId[0] = '?';
|
||||
// TODO maybe implicitly generated
|
||||
mId[4] = '\0';
|
||||
mId[3] = '\0';
|
||||
mId[2] = '\0';
|
||||
mId[1] = '\0';
|
||||
mStyleIndex = -1;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x00 */ u8 mId[5];
|
||||
/* 0x06 */ u16 mStyleIndex;
|
||||
/* 0x08 */ UNKWORD field_0x08;
|
||||
/* 0x0C */ f32 *mpFloats;
|
||||
/* 0x10 */ const f32 *mpParamFloats;
|
||||
/* 0x14 */ s32 mNumFloats;
|
||||
/* 0x18 */ UNKWORD field_0x18;
|
||||
/* 0x1C */ u16 *mpFlags;
|
||||
/* 0x20 */ const u16 *mpParamFlags;
|
||||
/* 0x24 */ s32 mNumFlags;
|
||||
};
|
||||
|
||||
class dCameraGame_c : public dCameraBase_c {
|
||||
public:
|
||||
static bool initCamParamDat();
|
||||
@@ -138,6 +180,18 @@ public:
|
||||
static s32 sTrendIdxes[CAM_TREND_IDX_MAX];
|
||||
static s32 sStyleIdxes[CAM_STYLE_IDX_MAX];
|
||||
|
||||
static const CamParamStyle *getStyle(s32 idx) {
|
||||
return &sStyles[idx];
|
||||
}
|
||||
|
||||
static const f32 *getFloats(s32 idx) {
|
||||
return &sFloats[idx];
|
||||
}
|
||||
|
||||
static const u16 *getFlags(s32 idx) {
|
||||
return &sFlags[idx];
|
||||
}
|
||||
|
||||
dCameraGame_c();
|
||||
/* vt 0x08 */ virtual void onBecomeActive() override;
|
||||
/* vt 0x0C */ virtual void onBecomeInactive() override;
|
||||
@@ -155,16 +209,14 @@ public:
|
||||
bool getField_0x078() const {
|
||||
return field_0x078;
|
||||
}
|
||||
|
||||
|
||||
f32 getField_0x0AC() const {
|
||||
return field_0x0AC;
|
||||
}
|
||||
|
||||
void clearCamIds();
|
||||
|
||||
bool isCurrentTrend(const char *name) const;
|
||||
|
||||
void fn_80080960(s32, s32, s8, s32);
|
||||
bool isCurrentTrend(const char *name) const;
|
||||
|
||||
void onFlag(u32 flag) {
|
||||
mFlags |= flag;
|
||||
@@ -174,7 +226,13 @@ public:
|
||||
mFlags &= ~flag;
|
||||
}
|
||||
|
||||
void overrideCam(s32 camId, s32 priority, s16 roomId, bool unk);
|
||||
|
||||
private:
|
||||
CamId getCamId();
|
||||
void setCam(const CamId &id);
|
||||
void setCam(s16 roomCamId, s16 roomId);
|
||||
|
||||
static void cacheIdxes();
|
||||
|
||||
static CamParamHeader *sHeader;
|
||||
|
||||
Reference in New Issue
Block a user