d_camera work (#2226)

This commit is contained in:
Caroline Madsen
2024-10-27 00:35:25 -04:00
committed by GitHub
parent 606178dc88
commit f5e80cf9fd
29 changed files with 1858 additions and 2121 deletions
+14 -4
View File
@@ -63,6 +63,9 @@ struct cAngle {
/* Converts Radian value into Degree value */
static f32 r2d(f32 r) { return Radian_to_Degree(r); }
/* Converts Degree value into Radian value */
static f32 d2r(f32 d) { return Degree_to_Radian(d); }
/* Converts Degree value to s16 angle */
static s16 d2s(f32 d) { return Degree_to_SAngle(d); }
@@ -111,16 +114,23 @@ public:
void Val(const cXyz&);
cXyz Xyz(void) const;
void Globe(class cSGlobe*) const;
void R(f32 i_radial) { mRadial = i_radial; }
void U(cSAngle const& i_angle) { mAngle2 = i_angle.Val(); }
void V(cSAngle const& i_angle) { mAngle1 = i_angle.Val(); }
};
class cSGlobe {
public:
float mRadius;
cSAngle mAzimuth; // original: V
cSAngle mInclination; // original: U
cSAngle mInclination; // original: V
cSAngle mAzimuth; // original: U
cSGlobe() {}
void R(f32 i_radius) { mRadius = i_radius; }
void U(cSAngle const& i_azimuth) { mAzimuth = i_azimuth.Val(); }
cSGlobe(const cSGlobe&);
cSGlobe(float, short, short);
cSGlobe(float, const cSAngle&, const cSAngle&);
@@ -132,8 +142,8 @@ public:
void Val(float, const cSAngle&, const cSAngle&);
void Val(const cXyz&);
float R(void) const { return mRadius; }
const cSAngle& V(void) const { return mAzimuth; }
const cSAngle& U(void) const { return mInclination; }
const cSAngle& V(void) const { return mInclination; }
const cSAngle& U(void) const { return mAzimuth; }
cXyz Xyz(void) const;
void Polar(cSPolar*) const;
cXyz Norm(void) const;
+17 -6
View File
@@ -9,13 +9,20 @@ class cBgS_LinChk : public cBgS_Chk, public cBgS_PolyInfo {
public:
/* 0x024 */ cM3dGLin mLin;
/* 0x040 */ cXyz field_0x40;
/* 0x04C */ u32 field_0x4c;
/* 0x04C */ u32 mStts;
/* 0x050 */ bool mPreWallChk;
/* 0x051 */ bool mPreGroundChk;
/* 0x052 */ bool mPreRoofChk;
/* 0x053 */ bool mFrontFlag;
/* 0x054 */ bool mBackFlag;
enum Status {
STTS_HIT = 0x10,
STTS_ROOF_OFF = 0x20000000,
STTS_WALL_OFF = 0x40000000,
STTS_GROUND_OFF = 0x80000000,
};
public:
cBgS_LinChk();
void ct();
@@ -25,9 +32,9 @@ public:
virtual ~cBgS_LinChk();
void ClrHit() { field_0x4c &= ~16; }
void SetHit() { field_0x4c |= 16; }
u32 ChkHit() const { return field_0x4c & 16; }
void ClrHit() { mStts &= ~STTS_HIT; }
void SetHit() { mStts |= STTS_HIT; }
u32 ChkHit() const { return mStts & STTS_HIT; }
void SetCross(const cXyz& pos) { mLin.SetEnd(pos); }
cXyz& i_GetCross() { return mLin.GetEnd(); }
cXyz* GetCrossP() { return &mLin.GetEndP(); }
@@ -40,8 +47,12 @@ public:
bool GetPreGroundChk() const { return mPreGroundChk; }
bool GetPreRoofChk() const { return mPreRoofChk; }
cXyz* GetStartP() { return &mLin.GetStartP(); }
void ClrSttsRoofOff() { field_0x4c &= ~0x20000000; }
void ClrSttsWallOff() { field_0x4c &= ~0x40000000; }
void ClrSttsRoofOff() { mStts &= ~STTS_ROOF_OFF; }
void SetSttsRoofOff() { mStts |= STTS_ROOF_OFF; }
void ClrSttsWallOff() { mStts &= ~STTS_WALL_OFF; }
void SetSttsWallOff() { mStts |= STTS_WALL_OFF; }
void ClrSttsGroundOff() { mStts &= ~STTS_GROUND_OFF; }
void SetSttsGroundOff() { mStts |= STTS_GROUND_OFF; }
};
#endif /* C_BG_S_LIN_CHK_H */
+7 -1
View File
@@ -3082,7 +3082,7 @@ public:
virtual BOOL checkHorseRideNotReady() const;
virtual bool checkArrowChargeEnd() const;
virtual f32 getSearchBallScale() const;
virtual s16 checkFastShotTime();
virtual int checkFastShotTime();
virtual bool checkNoEquipItem() const;
virtual bool checkKandelaarSwing(int) const;
virtual s16 getBoardCutTurnOffsetAngleY() const;
@@ -3334,6 +3334,12 @@ public:
bool checkHorseGetOffMode() const { return mProcID == PROC_HORSE_GETOFF; }
bool checkHorseRideOn() const { return mProcID == PROC_HORSE_RIDE; }
bool checkGrabUp() const { return mProcID == PROC_GRAB_UP; }
bool checkSpinnerRideWait() const {
return mProcID == PROC_SPINNER_WAIT && mProcVar2.field_0x300c == 0;
}
fopAc_ac_c* getCopyRodActor() { return mCopyRodAcKeep.getActor(); }
fopAc_ac_c* getHookshotRoofWaitActor() { return mCargoCarryAcKeep.getActor(); }
BOOL checkRideOn() const { return mRideStatus != 0; }
+9 -3
View File
@@ -29,7 +29,7 @@ public:
enum daMidna_FLG0 {
FLG0_UNK_80000000 = 0x80000000,
FLG0_UNK_8000000 = 0x8000000,
FLG0_PORTAL_OBJ_CALL = 0x8000000,
FLG0_NPC_NEAR = 0x100000,
FLG0_NPC_FAR = 0x40000,
FLG0_UNK_20000 = 0x20000,
@@ -112,6 +112,7 @@ public:
bool checkDemoTypeNone() const { return mDemoType == 0; }
void changeOriginalDemo() { mDemoType = 3; }
void changeDemoMode(u32 mode) { mDemoMode = mode; }
BOOL checkPortalObjCall() { return checkStateFlg0(FLG0_PORTAL_OBJ_CALL); }
BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); }
BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); }
BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); }
@@ -137,7 +138,7 @@ public:
}
void offTagWaitPos() {
offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_UNK_8000000 | FLG0_UNK_400));
offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_PORTAL_OBJ_CALL | FLG0_UNK_400));
}
void onTagNoHairLead() {
@@ -176,7 +177,7 @@ public:
bool checkPortalObjRide() const {
return checkStateFlg0(FLG0_UNK_8000000) && checkStateFlg0(FLG0_UNK_200);
return checkStateFlg0(FLG0_PORTAL_OBJ_CALL) && checkStateFlg0(FLG0_UNK_200);
}
inline static BOOL checkMidnaRealBody();
@@ -191,6 +192,11 @@ public:
void resetRatBody() {}
bool checkFlyWaitAnime() {
return field_0x5e4[0].getIdx() == 0x1CB || field_0x5e4[0].getIdx() == 0x1C7
|| field_0x5e4[0].getIdx() == 0x1C8 || field_0x5e4[0].getIdx() == 0x1C9;
}
static u8 const m_texDataTable[84];
static u8 const m_anmDataTable[636];
+11 -5
View File
@@ -325,6 +325,8 @@ public:
FLG3_UNK_80000000 = 0x80000000,
FLG3_UNK_40000000 = 0x40000000,
FLG3_UNK_20000000 = 0x20000000,
FLG3_COPY_ROD_ATN_KEEP = 0x10000000,
FLG3_BOOMERANG_ATN_KEEP = 0x8000000,
FLG3_UNK_4000000 = 0x4000000,
FLG3_UNK_2000000 = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
@@ -445,6 +447,7 @@ public:
RFLG0_GRAB_UP_END = 0x20,
RFLG0_UNK_10 = 0x10,
RFLG0_UNK_8 = 0x8,
RFLG0_GRAB_THROW = 0x4,
RFLG0_UNK_2 = 0x2,
RFLG0_UNK_1 = 0x1,
};
@@ -595,8 +598,8 @@ public:
virtual MtxP getBottleMtx();
virtual BOOL checkPlayerGuard() const;
virtual u32 checkPlayerFly() const { return 0; }
virtual BOOL checkFrontRoll() const; // weak
virtual BOOL checkWolfDash() const; // weak
virtual BOOL checkFrontRoll() const { return FALSE; }
virtual BOOL checkWolfDash() const { return FALSE; }
virtual BOOL checkAutoJump() const;
virtual bool checkSideStep() const;
virtual bool checkWolfTriggerJump() const;
@@ -640,7 +643,7 @@ public:
virtual bool cancelWolfLock(fopAc_ac_c*);
virtual s32 getAtnActorID() const { return -1; }
virtual s32 getItemID() const;
virtual s32 getGrabActorID() const; // weak
virtual s32 getGrabActorID() const { return -1; }
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
@@ -652,7 +655,7 @@ public:
virtual void setOutPower(f32, short, int);
virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*);
virtual void onMagneGrab(f32, f32);
virtual void onFrollCrashFlg(u8, int); // weak
virtual void onFrollCrashFlg(u8, int) {}
virtual MtxP getModelJointMtx(u16);
virtual MtxP getHeadMtx();
virtual bool setHookshotCarryOffset(fpc_ProcID, cXyz const*);
@@ -684,7 +687,7 @@ public:
virtual BOOL checkHorseRideNotReady() const;
virtual bool checkArrowChargeEnd() const;
virtual f32 getSearchBallScale() const;
virtual s16 checkFastShotTime();
virtual int checkFastShotTime();
virtual bool checkNoEquipItem() const;
virtual bool checkFireMaterial() const;
virtual bool checkKandelaarSwing(int) const;
@@ -788,6 +791,7 @@ public:
BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); }
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_UNK_800000)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
@@ -875,6 +879,8 @@ public:
BOOL checkWolfGrowl() const { return checkResetFlg0(RFLG0_WOLF_GROWL); }
BOOL checkWolfThreat() const { return checkWolfGrowl(); }
BOOL checkWolfBark() const { return checkResetFlg0(RFLG0_WOLF_BARK); }
u32 checkBoomerangAtnKeep() const { return checkNoResetFlg3(FLG3_BOOMERANG_ATN_KEEP); }
u32 checkCopyRodAtnKeep() const { return checkNoResetFlg3(FLG3_COPY_ROD_ATN_KEEP); }
void onPlayerNoDraw() { onNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
void offPlayerNoDraw() { offNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
+2
View File
@@ -216,6 +216,8 @@ public:
void clrFlag(u32 flag) { mFlags &= ~flag; }
int GetActionCount() { return mActionCount; }
int GetLockonCount() { return mLockonCount; }
void LockSoundOn() { clrFlag(0x400000); }
void LockSoundOff() { setFlag(0x400000); }
bool Lockon() { return LockonTruth() || chkFlag(0x20000000); } // only matches with -O2?
int ZHintRequest(fopAc_ac_c* param_1, int param_2) {
return mZHintTarget.request(param_1, param_2);
+3 -2
View File
@@ -17,12 +17,13 @@ public:
void OnWaterGrp() { mGrp |= WATER_GRP; }
void OnSpl() { mGrp |= WATER_GRP; }
void OffWaterGrp() { mGrp &= ~WATER_GRP; }
void OnNormalGrp() { mGrp |= NORMAL_GRP; }
void OffNormalGrp() { mGrp &= ~NORMAL_GRP; }
void OffFullGrp() { mGrp &= ~FULL_GRP; }
void OnAll() { mGrp |= FULL_GRP; }
u32 MaskNormalGrp() const {return mGrp & 1; }
u32 MaskWaterGrp() const {return mGrp & 2; }
u32 MaskNormalGrp() const {return mGrp & NORMAL_GRP; }
u32 MaskWaterGrp() const {return mGrp & WATER_GRP; }
private:
/* 0x4 */ u32 mGrp;
};
+8
View File
@@ -15,7 +15,15 @@ public:
/* 80078A14 */ dBgS_SphChk();
/* 80078AC0 */ virtual ~dBgS_SphChk();
void SetCallback(SphChk_Callback i_callback) { mCallback = i_callback; }
/* 0x50 */ SphChk_Callback mCallback;
};
class dBgS_CamSphChk : public dBgS_SphChk {
public:
dBgS_CamSphChk() { SetCam(); }
/* 80165E74 */ virtual ~dBgS_CamSphChk() {}
};
#endif /* D_BG_D_BG_S_SPH_CHK_H */
+13 -2
View File
@@ -31,6 +31,12 @@ public:
/* 80088464 */ dCamBGChk_c();
f32 WallUpDistance() { return mWallUpDistance; }
f32 FwdDistance(s32 param_0) { return mChkInfo[param_0].mDistance; }
s16 FwdChkAngle(s32 param_0) { return cAngle::d2s(mChkInfo[param_0].mChkAngle); }
f32 FwdWeightH(s32 param_0) { return mChkInfo[param_0].mWeightH; }
f32 FwdWeightL(s32 param_0) { return mChkInfo[param_0].mWeightL; }
f32 FwdBackMargin() { return mFwdBackMargin; }
f32 FwdCushion() { return mFwdCushion; }
// name is a guess for now
struct ChkInfo {
@@ -79,7 +85,7 @@ public:
/* 80182C74 */ void Arg0(u8);
/* 80182C7C */ void Fovy(u8);
/* 80182C58 */ void Fovy();
/* 80182CB4 */ void CheckFlag(u16);
/* 80182CB4 */ bool CheckFlag(u16 flag) { return mCurrentStyle->field_0x6 & flag; }
/* 80182CD0 */ void Val(s32, int);
/* 0x00 */ u8 mMapToolFovy;
@@ -108,7 +114,7 @@ public:
/* 80182BB8 */ void CheckFlag2(u16);
/* 80182BE8 */ void WaitRollSpeed();
/* 80182BF0 */ void WaitRollTimer();
/* 80182C1C */ void ThrowTimer();
/* 80182C1C */ // void ThrowTimer();
/* 80182C24 */ void ThrowCushion();
/* 80182C2C */ void ThrowVAngle();
/* 80182C34 */ void ThrowCtrAdjust();
@@ -120,6 +126,11 @@ public:
f32 ManualEndVal() { return mManualEndVal; }
f32 CinemaScopeTrimHeight() { return mTrimCineScopeHeight; }
f32 VistaTrimHeight() { return mTrimVistaHeight; }
f32 ForceLockOffTimer() { return mForceLockOffTimer; }
f32 ForceLockOffDist() { return mForceLockOffDist; }
int ThrowTimer() { return mThrowTimer; }
f32 USOValue() { return mFalseValue; }
f32 USOAngle() { return mFalseAngle; }
/* 0x000 */ f32 mDrawNear;
/* 0x004 */ f32 mDrawFar;
+89 -42
View File
@@ -1,6 +1,7 @@
#ifndef D_D_CAMERA_H
#define D_D_CAMERA_H
#include "d/d_attention.h"
#include "d/d_bg_s_lin_chk.h"
#include "d/d_bg_s_gnd_chk.h"
#include "d/d_cam_param.h"
@@ -9,12 +10,25 @@
#include "dolphin/types.h"
class fopAc_ac_c;
dAttention_c& dComIfGp_getAttention();
struct dCamMapToolData {
dCamMapToolData() { Clr(); }
/* 8015FEB8 */ int Set(s32, s32, fopAc_ac_c*, u16, u8);
dCamMapToolData& operator=(dCamMapToolData const& other) {
__memcpy(&field_0x0, &other.field_0x0, sizeof(stage_camera2_data_class));
__memcpy(&field_0x18, &other.field_0x18, sizeof(stage_arrow_data_class));
field_0x2c = other.field_0x2c;
field_0x30 = other.field_0x30;
field_0x34 = other.field_0x34;
field_0x38 = other.field_0x38;
field_0x3a = other.field_0x3a;
field_0x3b = other.field_0x3b;
return *this;
}
void Clr() {
field_0x2c = 0xFF;
field_0x30 = 0xFF;
@@ -119,6 +133,29 @@ struct dCamera_type_data {
/* 0x18 */ s16 field_0x18[2][11];
}; // Size: 0x44
struct camSphChkdata {
camSphChkdata(cXyz* i_center, cXyz* param_1, f32 i_radius) {
field_0x0 = i_center;
field_0x8 = param_1;
field_0xc = *i_center;
field_0x4 = i_radius;
field_0x1c = false;
field_0x18 = i_radius;
}
void Base(cXyz* param_0) {
field_0x0 = param_0;
field_0xc = *param_0;
}
/* 0x00 */ cXyz* field_0x0;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ cXyz* field_0x8;
/* 0x0C */ cXyz field_0xc;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ bool field_0x1c;
};
class camera_class;
class dCamera_c;
@@ -143,7 +180,7 @@ public:
/* 0x0C */ f32 mPosXDelta;
/* 0x10 */ f32 mPosYDelta;
/* 0x14 */ f32 mValueDelta;
/* 0x18 */ cSAngle field_0x18;
/* 0x18 */ cSAngle mAngle;
};
/* 0x00 */ _stick mMainStick;
@@ -179,7 +216,7 @@ public:
/* 0x38 */ f32 field_0x38;
/* 0x3C */ int field_0x3c;
/* 0x40 */ int field_0x40;
/* 0x44 */ int field_0x44;
/* 0x44 */ u8 field_0x44;
} /* 0x0C0 */ field_0xc0;
class {
public:
@@ -264,10 +301,10 @@ public:
/* 801617B0 */ void updatePad();
/* 80161D84 */ void initMonitor();
/* 80161E34 */ void updateMonitor();
/* 80162088 */ void checkForceLockTarget();
/* 80162088 */ bool checkForceLockTarget();
/* 801622B0 */ void infoReport();
/* 801622B4 */ void Run();
/* 80162D38 */ void NotRun();
/* 801622B4 */ bool Run();
/* 80162D38 */ bool NotRun();
/* 80162FB8 */ s16 V();
/* 80162FD4 */ s16 U();
/* 8016300C */ bool SetTrimSize(s32);
@@ -277,13 +314,13 @@ public:
/* 8016317C */ void setStageMapToolData();
/* 80163340 */ void setMapToolData();
/* 80163558 */ void SetTagData(fopAc_ac_c*, s32, u16, u8);
/* 801635AC */ void setRoomMapToolData(dCamMapToolData*, s32, s32);
/* 801635E4 */ void nextMode(s32);
/* 80163C38 */ void onModeChange(s32, s32);
/* 801635AC */ inline void setRoomMapToolData(dCamMapToolData*, s32, s32);
/* 801635E4 */ s32 nextMode(s32);
/* 80163C38 */ bool onModeChange(s32, s32);
/* 80163D50 */ int ModeFix(s32);
/* 80163D5C */ void nextType(s32);
/* 8016444C */ void onTypeChange(s32, s32);
/* 8016469C */ int onStyleChange(s32, s32);
/* 80163D5C */ s32 nextType(s32);
/* 8016444C */ bool onTypeChange(s32, s32);
/* 8016469C */ bool onStyleChange(s32, s32);
/* 801647B0 */ int onRoomChange(s32);
/* 80164878 */ fopAc_ac_c* getParamTargetActor(s32);
/* 80164944 */ int GetCameraTypeFromMapToolID(s32, s32);
@@ -292,27 +329,27 @@ public:
/* 80164C64 */ void pushInfo(dCamera_c::dCamInfo_c*, s16);
/* 80164CAC */ void popInfo(dCamera_c::dCamInfo_c*);
/* 80164D2C */ f32 heightOf(fopAc_ac_c*);
/* 80164E20 */ void relationalPos(fopAc_ac_c*, fopAc_ac_c*, cXyz*, f32);
/* 80164D6C */ void relationalPos(fopAc_ac_c*, cXyz*);
/* 80164E20 */ cXyz relationalPos(fopAc_ac_c*, fopAc_ac_c*, cXyz*, f32);
/* 80164D6C */ cXyz relationalPos(fopAc_ac_c*, cXyz*);
/* 80165104 */ void setUSOAngle();
/* 80165158 */ cSAngle getUSOAngle(cSAngle);
/* 8016517C */ void pointInSight(cXyz*);
/* 8016517C */ bool pointInSight(cXyz*);
/* 80167C24 */ void radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*);
/* 80165238 */ void radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*, f32, s16, f32);
/* 80165238 */ f32 radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*, f32, s16, f32);
/* 801657EC */ f32 groundHeight(cXyz*);
/* 801658C0 */ void lineBGCheck(cXyz*, cXyz*, dBgS_LinChk*, u32);
/* 80165AF0 */ void lineBGCheck(cXyz*, cXyz*, u32);
/* 801659F4 */ void lineBGCheck(cXyz*, cXyz*, cXyz*, u32);
/* 80165B60 */ void lineCollisionCheckBush(cXyz*, cXyz*);
/* 80165CE0 */ void compWallMargin(cXyz*, cXyz*, f32);
/* 80165EF4 */ void defaultTriming();
/* 801658C0 */ bool lineBGCheck(cXyz*, cXyz*, dBgS_LinChk*, u32);
/* 80165AF0 */ bool lineBGCheck(cXyz*, cXyz*, u32);
/* 801659F4 */ bool lineBGCheck(cXyz*, cXyz*, cXyz*, u32);
/* 80165B60 */ u32 lineCollisionCheckBush(cXyz*, cXyz*);
/* 80165CE0 */ cXyz compWallMargin(cXyz*, cXyz*, f32);
/* 80165EF4 */ int defaultTriming();
/* 80165FB4 */ void setView(f32, f32, f32, f32);
/* 8016608C */ void forwardCheckAngle();
/* 8016608C */ cSAngle forwardCheckAngle();
/* 80166764 */ void bumpCheck(u32);
/* 80167BF8 */ void lineBGCheckBoth(cXyz*, cXyz*, dBgS_LinChk*, u32);
/* 80167CD8 */ void jutOutCheck(cXyz*, f32);
/* 80167E3C */ void tooNearEscape(cXyz*);
/* 80167EF4 */ void getWaterSurfaceHeight(cXyz*);
/* 80167EF4 */ f32 getWaterSurfaceHeight(cXyz*);
/* 80167FEC */ void checkGroundInfo();
/* 80168744 */ bool chaseCamera(s32);
/* 8016C384 */ bool lockonCamera(s32);
@@ -374,7 +411,7 @@ public:
bool Active() { return field_0x24 == 0; }
f32 TrimHeight() { return mTrimHeight; }
int Type() { return mCurType; }
int Mode() { return mNextMode; }
int Mode() { return mCurMode; }
f32 Fovy() { return mFovY + mShake.field_0x3c; }
bool isModeOK() { return field_0x158.field_0x0; }
bool push_any_key() { return field_0x224; }
@@ -395,6 +432,12 @@ public:
mEventData.field_0x24 = i_flag;
}
void Att() {
dAttention_c& attn = dComIfGp_getAttention();
mpLockonTarget = attn.LockonTruth() ? attn.LockonTarget(0) : NULL;
attn.LockSoundOn();
}
static engine_fn engine_tbl[];
/* 0x000 */ camera_class* field_0x0;
@@ -431,7 +474,7 @@ public:
class {
public:
/* 0x00 */ int field_0x0;
/* 0x04 */ u16 field_0x4;
/* 0x04 */ s16 field_0x4;
/* 0x08 */ dCamInfo_c field_0x8;
/* 0x28 */ cXyz field_0x28;
}
@@ -450,21 +493,24 @@ public:
}
/* 0x158 */ field_0x158;
/* 0x160 */ int field_0x160;
/* 0x164 */ u8 field_0x164[0x170 - 0x164];
/* 0x164 */ int field_0x164;
/* 0x168 */ u8 field_0x168;
/* 0x169 */ int field_0x16c;
/* 0x170 */ int field_0x170;
/* 0x174 */ u32 mCurCamTypeTimer;
/* 0x178 */ u32 mCameraID;
/* 0x17C */ u32 mPadID;
/* 0x180 */ fopAc_ac_c* mpPlayerActor;
/* 0x184 */ fopAc_ac_c* mpLockonTarget;
/* 0x188 */ u8 field_0x188[0x190 - 0x188];
/* 0x188 */ u32 field_0x188;
/* 0x18C */ u32 field_0x18c;
/* 0x190 */ int field_0x190;
/* 0x194 */ u8 field_0x194;
/* 0x198 */ u32 field_0x198;
/* 0x19C */ u32 field_0x19c;
/* 0x1A0 */ int mCurMode;
/* 0x1A4 */ int mNextMode;
/* 0x1A8 */ int field_0x1a8;
/* 0x194 */ bool field_0x194;
/* 0x198 */ u32 mLockOnActorID;
/* 0x19C */ fopAc_ac_c* mpLockOnActor;
/* 0x1A0 */ int mForceLockTimer;
/* 0x1A4 */ int mCurMode;
/* 0x1A8 */ int mNextMode;
/* 0x1AC */ int field_0x1ac;
/* 0x1B0 */ cSAngle field_0x1b0;
/* 0x1B4 */ f32 field_0x1b4;
@@ -485,16 +531,16 @@ public:
/* 0x215 */ u8 field_0x215;
/* 0x216 */ u8 field_0x216;
/* 0x217 */ u8 field_0x217;
/* 0x218 */ u8 mHoldX;
/* 0x219 */ u8 mTrigX;
/* 0x21A */ u8 mHoldY;
/* 0x21B */ u8 mTrigY;
/* 0x218 */ bool mHoldX;
/* 0x219 */ bool mTrigX;
/* 0x21A */ bool mHoldY;
/* 0x21B */ bool mTrigY;
/* 0x21C */ bool mHoldZ;
/* 0x21D */ u8 mTrigZ;
/* 0x21D */ bool mTrigZ;
/* 0x21E */ u8 field_0x21e;
/* 0x21F */ u8 field_0x21f;
/* 0x220 */ u8 mHoldB;
/* 0x221 */ u8 mTrigB;
/* 0x220 */ bool mHoldB;
/* 0x221 */ bool mTrigB;
/* 0x222 */ u8 field_0x222;
/* 0x223 */ u8 field_0x223;
/* 0x224 */ u8 field_0x224;
@@ -580,13 +626,14 @@ public:
/* 0x920 */ f32 mTrimHeight;
/* 0x924 */ int mTrimSize;
/* 0x928 */ int mTrimTypeForce;
/* 0x92C */ u8 field_0x92c[0x934 - 0x92c];
/* 0x92C */ f32 field_0x92c;
/* 0x930 */ u8 field_0x930[0x930 - 0x92c];
/* 0x934 */ f32 field_0x934;
/* 0x938 */ u8 field_0x938[0x93C - 0x938];
/* 0x93C */ int field_0x93c;
/* 0x940 */ int field_0x940;
/* 0x944 */ u8 field_0x944;
/* 0x948 */ int field_0x948;
/* 0x948 */ int mThrowTimer;
/* 0x94C */ cSAngle field_0x94c;
/* 0x950 */ int field_0x950;
/* 0x954 */ u8 field_0x954[0x958 - 0x954];
+1 -1
View File
@@ -73,7 +73,7 @@ public:
/* 80085CF0 */ void Clear();
/* 80085D98 */ void Set(cCcD_Obj* p_obj, u8 priority);
/* 80085E6C */ void SetCam(cM3dGCps const& cps);
/* 80085EB0 */ u8 GetResultCam() const;
/* 80085EB0 */ u32 GetResultCam() const;
/* 80085EB8 */ void GetCamTopPos(Vec* p_out);
};
+2
View File
@@ -45,6 +45,8 @@ public:
/* 80086754 */ virtual void CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*);
void SetMass(cCcD_Obj* i_obj, u8 i_priority) { mMass_Mng.Set(i_obj, i_priority); }
void SetMassCam(cM3dGCps& i_cps) { mMass_Mng.SetCam(i_cps); }
u32 GetMassResultCam() { return mMass_Mng.GetResultCam(); }
void PrepareMass() { mMass_Mng.Prepare(); }
static bool m_mtrl_hit_tbl[64];
+6 -1
View File
@@ -1,10 +1,11 @@
#ifndef D_COM_D_COM_INF_ACTOR_H
#define D_COM_D_COM_INF_ACTOR_H
class fopAc_ac_c;
class dComIfGoat_info_c {
public:
/* 0x0 */ int field_0x0;
/* 0x0 */ fopAc_ac_c* field_0x0;
};
class dComIfAc_info_c {
@@ -20,4 +21,8 @@ inline bool dComIfA_PauseCheck() {
return g_dComIfAc_gameInfo.mPause;
}
inline fopAc_ac_c* dComIfGoat_GetThrow() {
return g_dComIfGoat_gameInfo.field_0x0;
}
#endif /* D_COM_D_COM_INF_ACTOR_H */
+8
View File
@@ -2622,6 +2622,14 @@ inline int dComIfGp_getStagePlightNumInfo() {
return g_dComIfG_gameInfo.play.getStage().getPlightNumInfo();
}
inline s16 dComIfGp_getStageWorldRollAngleX() {
return g_dComIfG_gameInfo.play.getStage().getWorldRollAngleX();
}
inline s16 dComIfGp_getStageWorldRollDirAngleY() {
return g_dComIfG_gameInfo.play.getStage().getWorldRollDirAngleY();
}
inline u8 dComIfGp_isHeapLockFlag() {
return g_dComIfG_gameInfo.play.isHeapLockFlag();
}
+1
View File
@@ -249,6 +249,7 @@ public:
s8 getCameraID() { return mCameraID; }
void setMode(int mode) { mMode = mode; }
view_port_class* getViewPort() { return &mViewport; }
scissor_class* getScissor() { return &mViewport.mScissor; }
private:
/* 0x00 */ view_port_class mViewport;
+1 -1
View File
@@ -603,6 +603,6 @@ void dKy_ParticleColor_get_bg(cXyz* param_0, dKy_tevstr_c* param_1, _GXColor* pa
_GXColor dKy_light_influence_col(_GXColor* param_0, f32 param_1);
static void dKy_WaterIn_Light_set();
void dKy_SordFlush_set(cXyz param_0, int param_1);
void dKy_camera_water_in_status_set(u8 status);
#endif /* D_KANKYO_D_KANKYO_H */
+7 -4
View File
@@ -76,7 +76,7 @@ struct stage_scls_info_class {
/* 0x9 */ s8 mRoom;
/* 0xA */ u8 field_0xa;
/* 0xB */ u8 field_0xb;
/* 0xC */ s8 mWipe;
/* 0xC */ u8 mWipe;
char* getStage() { return mStage; }
@@ -567,6 +567,9 @@ public:
void setTreasure(stage_tresure_class*);
s16 getWorldRollAngleX() { return mWorldRollAngleX; }
s16 getWorldRollDirAngleY() { return mWorldRollDirAngleY; }
public:
/* 0x08 */ stage_camera_class* mCamera;
/* 0x0C */ stage_arrow_class* mArrow;
@@ -588,8 +591,8 @@ public:
/* 0x4C */ int mVrboxcolNumInfo;
/* 0x50 */ u32 mPlightNumInfo;
/* 0x54 */ u16 mPlayerNum;
/* 0x56 */ u16 field_0x56;
/* 0x58 */ u16 field_0x58;
/* 0x56 */ s16 mWorldRollAngleX;
/* 0x58 */ s16 mWorldRollDirAngleY;
/* 0x5A */ u16 field_0x5a;
/* 0x5C */ stage_stag_info_class* mStagInfo;
/* 0x60 */ stage_scls_info_dummy_class* mSclsInfo;
@@ -1109,7 +1112,7 @@ inline u8 dStage_stagInfo_DefaultCameraType(stage_stag_info_class* pstag) {
return pstag->mCameraType;
}
inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
inline u8 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
return p_info->field_0xb & 0xF;
}
+2
View File
@@ -14,4 +14,6 @@ static s32 fopCam_Draw(camera_class* param_1);
static int fopCam_Execute(camera_class* pCamera);
int fopCam_IsDelete(camera_class* pCamera);
extern leafdraw_method_class g_fopCam_Method;
#endif
+3 -1
View File
@@ -56,4 +56,6 @@ struct view_class : public leafdraw_class {
/* 0x1E0 */ Mtx mViewMtxNoTrans;
};
#endif
extern leafdraw_method_class g_fopVw_Method;
#endif