Files
ss/include/d/a/obj/d_a_obj_switch.h
T
Elijah Thomas b5aa43ff37 Misc Collision (#51)
* Initial Commit - Starting to translate from TP

* Collision Updates

* Actor Collision -> dBgW (DZB Collision)

* bg .text splits complete

* fix errors

* file organization

* missed files

* progress

* weee

* most of cM3dG

* Revert mAng change

* Progress

* Progress -> Need to update from main

* Fixup Merge

* d_bg_s symbols....

* TList Changes

* oops

* d_bg_s large progress

* d_bg_s_acch majority done

* d_bg_s_chk OK

* d_bg_s_gnd_chk OK

* d_bg_s_grp_pass_chk OK

* d_bg_lin_chk OK

* d_bg_s_poly_pass_chk OK

* d_bg_s_roof_chk and d_bg_s_sph_chk OK

* d_bg_s_spl_grp_chk OK

* d_bg_s_wtr_chk OK

* d_bg_w started

* d_bg_w_base OK

* name d_bg_w_kcol symbols

* d_bg_w_sv split/started

* most of d_bg_w_time

* stopping d_bg_w_kcol for now

* d_bg_w_sv OK

* work on d_bg_w_time

* revert TList to take offset arg

* fixup some compiler warnings

* set c_bg_w OK

* Update rel_sieve.py

* Remove TList Macros

* Bomb Header started
2024-10-16 09:00:47 -04:00

89 lines
2.4 KiB
C++

#ifndef D_A_OBJ_SWITCH_H
#define D_A_OBJ_SWITCH_H
#include <d/a/obj/d_a_obj_base.h>
#include <d/col/bg/d_bg_w.h>
#include <m/m3d/m_mdl.h>
#include <s/s_State.hpp>
#include <s/s_StateMgr.hpp>
#include <toBeSorted/time_area_mgr.h>
// OBJ_VSD?
class dAcOScatterSand_tmp : public dAcObjBase_c {
public:
/* 0x330 */ u8 field_0x330[0x6DC - 0x330];
/* 0x6DC */ u16 field_0x6DC;
/* 0x6DE */ u8 field_0x6DE[0x6E4 - 0x6DE];
/* 0x6E4 */ bool field_0x6E4;
inline f32 getSomeScale() {
return mScale.y * 41.65f / 100.0f;
}
};
/**
* A callback implementation that controls the button node in the switch model.
*/
class dAcOswMdlCallback_c : public m3d::callback_c {
public:
dAcOswMdlCallback_c() {}
virtual ~dAcOswMdlCallback_c() {}
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
/* 0x04 */ f32 mElevation;
/* 0x08 */ u32 mNodeId;
void init(u32 nodeId) {
mNodeId = nodeId;
mElevation = 0.0f;
}
};
class dAcOsw_c : public dAcObjBase_c {
public:
dAcOsw_c() : mStateMgr(*this, sStateID::null), field_0x5A0(0.0f) {}
virtual ~dAcOsw_c() {}
virtual int actorCreate() override;
virtual int actorPostCreate() override;
virtual bool createHeap() override;
virtual int doDelete() override;
virtual int actorExecute() override;
virtual int actorExecuteInEvent() override;
virtual int draw() override;
bool someInteractCheck(bool);
STATE_FUNC_DECLARE(dAcOsw_c, OnWait);
STATE_FUNC_DECLARE(dAcOsw_c, On);
STATE_FUNC_DECLARE(dAcOsw_c, OffWait);
STATE_FUNC_DECLARE(dAcOsw_c, Off);
STATE_FUNC_DECLARE(dAcOsw_c, None);
static void rideCallback(dBgW *unknown, dAcObjBase_c *actor, dAcObjBase_c *interactor);
private:
/* 0x330 */ m3d::mdl_c mModel;
/* 0x354 */ dBgW mCollision;
/* 0x564 */ STATE_MGR_DECLARE(dAcOsw_c);
/* 0x5A0 */ TimeAreaStruct field_0x5A0;
/* 0x5AC */ dAcRef_c<dAcOScatterSand_tmp> mObjRef;
/* 0x5B8 */ mMtx_c field_0x5B8;
/* 0x5E8 */ f32 field_0x5E8;
/* 0x5EC */ u16 field_0x5EC;
/* 0x5EE */ u8 mOffSceneFlag;
/* 0x5EF */ u8 mOnSceneFlag;
/* 0x5F0 */ u8 mSwitchType;
/* 0x5F1 */ u8 field_0x5F1;
/* 0x5F2 */ u8 field_0x5F2;
/* 0x5F3 */ u8 field_0x5F3;
/* 0x5F4 */ u8 mActivatedByPlayer;
/* 0x5F5 */ bool mCanBeSeen;
/* 0x5F6 */ bool mShown;
/* 0x5F7 */ bool mHidden;
/* 0x5F8 */ dAcOswMdlCallback_c mButtonCtrl;
};
#endif