mirror of
https://github.com/zeldaret/ss
synced 2026-06-14 06:14:12 -04:00
b5aa43ff37
* 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
89 lines
2.4 KiB
C++
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
|