mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-10 14:23:50 -04:00
034b90bfdc
* Initial work; 25% matching in .text
* 27% matching in .text
* Match daDaiocta_c::modeProc
* 56% matching in .text
* 61% matching in .text
* 69% matching in .text
* 74% matching in .text
* 84% matching in .text
* daDaiocta_Eye_c 31%
* Match daDaiocta_Eye_c node callbacks
* daDaiocta_Eye_c 69%
* daDaiocta_Eye_c 85%
* daDaiocta_Eye_c 100% for retail and demo
* daDaiocta_c 96%
* daDaiocta_c 100% for retail and demo
* Field name cleanup
* More field naming
* Implement {is_, to_, to_dis}appear daObjAuzu inlines
* Misc code formatting changes
* Use JntHitType enum (d_a_daiocta)
* Apply suggestions from code review
Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
* Use fopAcM_SetMtx inline
---------
Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
126 lines
3.2 KiB
C++
126 lines
3.2 KiB
C++
#ifndef D_A_DAIOCTA_EYE_H
|
|
#define D_A_DAIOCTA_EYE_H
|
|
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "d/d_cc_d.h"
|
|
#include "d/d_jnt_hit.h"
|
|
#include "d/d_particle.h"
|
|
#include "f_op/f_op_actor.h"
|
|
#include "m_Do/m_Do_ext.h"
|
|
#include "m_Do/m_Do_hostIO.h"
|
|
|
|
class J3DNode;
|
|
class daDaiocta_c;
|
|
|
|
class daDaiocta_Eye_c : public fopAc_ac_c {
|
|
public:
|
|
enum Mode_e {
|
|
MODE_WAIT = 0,
|
|
MODE_DAMAGE = 1,
|
|
MODE_DEATH = 2
|
|
};
|
|
|
|
typedef void (daDaiocta_Eye_c::*ModeProcFunc)(void);
|
|
public:
|
|
void rndRotEye() {
|
|
mEyeRotTargetX = cM_rndF(mEyeRndRotMaxX);
|
|
|
|
if (std::fabsf(mEyeRotTargetX - mCurEyeRot.x) < m2EC) {
|
|
mEyeRotTargetX += m2EC;
|
|
}
|
|
|
|
mEyeRotTargetY = cM_rndF(mEyeRndRotMaxY);
|
|
if (std::fabsf(mEyeRotTargetY - mCurEyeRot.y) < m2EE) {
|
|
mEyeRotTargetY += m2EE;
|
|
}
|
|
|
|
mEyeRotTargetZ = cM_rndF(mEyeRndRotMaxZ);
|
|
if (std::fabsf(mEyeRotTargetZ - mCurEyeRot.z) < m2F0) {
|
|
mEyeRotTargetZ += m2F0;
|
|
}
|
|
}
|
|
|
|
void _nodeControl(J3DNode*, J3DModel*);
|
|
BOOL _createHeap();
|
|
void _coHit(fopAc_ac_c*);
|
|
void setMtx();
|
|
void checkTgHit();
|
|
void modeWaitInit();
|
|
void modeWait();
|
|
void modeDamageInit();
|
|
void modeDamage();
|
|
void modeDeathInit();
|
|
void modeDeath();
|
|
void modeProcCall();
|
|
bool _execute();
|
|
bool _draw();
|
|
void createInit();
|
|
cPhs_State _create();
|
|
bool _delete();
|
|
|
|
static const s32 m_heapsize;
|
|
static const char m_arc_name[];
|
|
static const s32 m_scale_damage_time;
|
|
public:
|
|
/* 0x290 */ s32 mEyeNo;
|
|
/* 0x294 */ bool mbIsDead;
|
|
/* 0x295 */ bool m295;
|
|
/* 0x296 */ bool mbIsDamaged;
|
|
/* 0x297 */ bool mbIsDamagedBomb;
|
|
/* 0x298 */ bool mbAppear;
|
|
/* 0x299 */ u8 m299[0x29C - 0x299];
|
|
/* 0x29C */ s32 mMode;
|
|
/* 0x2A0 */ request_of_phase_process_class mPhs;
|
|
/* 0x2A8 */ J3DModel* mpModel;
|
|
/* 0x2AC */ J3DAnmTevRegKey* mpBrk;
|
|
/* 0x2B0 */ mDoExt_brkAnm mBrkAnm;
|
|
/* 0x2C8 */ J3DAnmTextureSRTKey* mpBtk;
|
|
/* 0x2CC */ mDoExt_btkAnm mBtkAnm;
|
|
/* 0x2E0 */ s16 mEyeRotTargetX;
|
|
/* 0x2E2 */ s16 mEyeRotTargetY;
|
|
/* 0x2E4 */ s16 mEyeRotTargetZ;
|
|
/* 0x2E6 */ csXyz mCurEyeRot;
|
|
/* 0x2EC */ s16 m2EC;
|
|
/* 0x2EE */ s16 m2EE;
|
|
/* 0x2F0 */ s16 m2F0;
|
|
/* 0x2F2 */ s16 mEyeRndRotMaxX;
|
|
/* 0x2F4 */ s16 mEyeRndRotMaxY;
|
|
/* 0x2F6 */ s16 mEyeRndRotMaxZ;
|
|
/* 0x2F8 */ dCcD_Sph mSph;
|
|
/* 0x424 */ dCcD_Stts mStts;
|
|
/* 0x460 */ cXyz mEyeScale;
|
|
/* 0x46C */ int mScaleAnimeIdx;
|
|
/* 0x470 */ JntHit_c* mpJntHit;
|
|
/* 0x474 */ daDaiocta_c* mpParentActor;
|
|
/* 0x478 */ dPa_followEcallBack mParticleCallback;
|
|
/* 0x48C */ cXyz mParticlePos;
|
|
/* 0x48C */ csXyz m498;
|
|
/* 0x49E */ u8 m49E[0x4A0 - 0x49E];
|
|
}; // Size: 0x4A0
|
|
STATIC_ASSERT(sizeof(daDaiocta_Eye_c) == 0x4A0);
|
|
|
|
class daDaiocta_Eye_HIO_c : public mDoHIO_entry_c {
|
|
public:
|
|
daDaiocta_Eye_HIO_c();
|
|
public:
|
|
s16 m04;
|
|
u8 m06[0x08 - 0x06];
|
|
f32 m08;
|
|
f32 m0C;
|
|
f32 mParticleTranslationX;
|
|
f32 mParticleTranslationY;
|
|
f32 mParticleTranslationZ;
|
|
f32 mSphRadius;
|
|
s16 mEyeRotStep;
|
|
s16 mEyeRotScale;
|
|
s16 m24;
|
|
s16 m26;
|
|
s16 m28;
|
|
s16 mEyeRndRotMaxX;
|
|
s16 mEyeRndRotMaxY;
|
|
s16 mEyeRndRotMaxZ;
|
|
JntHit_HIO_c m30;
|
|
};
|
|
|
|
#endif /* D_A_DAIOCTA_EYE_H */
|