Files
tp/include/d/actor/d_a_obj_klift00.h
T
HuitziandGitHub c11cd855d5 d_a_obj_kwheel00, 01, & d_a_obj_klift00 Equivalent (weak func and/or vtable order) (#2291)
* d_a_obj_kwheel00, 01, & d_a_obj_klift00 Equivalent (weak func and/or vtable order)
* Three rels equivalent
* Basic documentation for the three rels
* Define explicit constructor for dMdl_obj_c (needed for proper array creation in d_a_obj_klift00)
* Modify d_a_obj_bky_rock to account for new explicit constructor of dMdl_obj_c
* Specify weak func and/or vtable orders for rels in config.py

* Cleanup includes and dol2asm artifacts

* * Fix debug build
* Restore incorrectly removed l_bmdidx

* Fix US retail equivalency
2025-01-23 21:48:23 +02:00

87 lines
2.6 KiB
C++

#ifndef D_A_OBJ_KLIFT00_H
#define D_A_OBJ_KLIFT00_H
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
#include "d/d_model.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-objects
* @class daObjKLift00_c
* @brief Water Wheel/Gear Lift
*
* @details Lakebed temple lifts connected to large water wheels/gears (see d_a_obj_kwheel01) by chains
*
*/
class daObjKLift00_c : public dBgS_MoveBgActor, public request_of_phase_process_class {
public:
/* 8058B02C */ cPhs__Step create1st();
/* 8058B0D0 */ void setMtx();
/* 8058B4B0 */ void rideActor(fopAc_ac_c*);
/* 8058B5EC */ int CreateHeap();
/* 8058B77C */ int Create();
/* 8058B97C */ int Execute(Mtx**);
/* 8058BEEC */ int Draw();
/* 8058C014 */ int Delete();
enum Param_e {
LOCK_e = (1 << 6), NO_BASE_DISP = (1 << 7)
};
private:
struct ChainPos {
cXyz mDeltaPosVector;
cXyz mCurrentPos;
cXyz mPrevPos;
};
/* 0x05A8 */ Mtx mNewBgMtx;
/* 0x05D8 */ Mtx mCullMtx;
/* 0x0608 */ J3DModel* mpLiftPlatform;
/* 0x060C */ J3DModel* mpChainBase;
/* 0x0610 */ J3DModelData* mChainModelData; // JUT_ASSERT string shows this was called mChainModelData
/* 0x0614 */ int mNumChains; // Foundation "chain" is the bottom-most "chain" (doesn't have an associated chain model), and is used to transform the platform itself; = 1 + mNumChainModels
/* 0x0618 */ ChainPos* mChainPositions;
/* 0x061C */ int mNumChainModels;
/* 0x0620 */ dMdl_obj_c* mChainMdlObjs;
/* 0x0624 */ dCcD_Stts mStts;
/* 0x0660 */ dCcD_Sph mChainSphereColliders[8];
/* 0x1020 */ dCcD_Cyl mCylinderCollider;
/* 0x115C */ s32 mStopSwingingFrames;
// Number of chain models
u32 getArg0() {
return fopAcM_GetParamBit(this, 0, 6);
}
// Determines whether lift swinging should be dampened upon creation
u32 getLock() {
return fopAcM_GetParamBit(this, 6, 1);
}
// Determines whether the metal base from which the chain hands should be drawn (Drawn if 0)
u32 getNoBaseDisp() {
return fopAcM_GetParamBit(this, 7, 1);
}
};
STATIC_ASSERT(sizeof(daObjKLift00_c) == 0x1160);
struct daObjKLift00_HIO_c : public mDoHIO_entry_c {
daObjKLift00_HIO_c();
~daObjKLift00_HIO_c() {};
void genMessage(JORMContext*);
/* 0x04 */ f32 mChainGravity;
/* 0x08 */ f32 mRideParameters;
/* 0x0C */ f32 mWindSwayOccuranceFactor;
/* 0x10 */ f32 mWindMagnitudeChain;
/* 0x14 */ f32 mWindMagnitudeFoundation;
/* 0x18 */ f32 mChainHitSpeed;
/* 0x1C */ f32 field_0x1C;
};
#endif /* D_A_OBJ_KLIFT00_H */