diff --git a/configure.py b/configure.py index 730e293a..6f817798 100644 --- a/configure.py +++ b/configure.py @@ -2014,7 +2014,7 @@ config.libs = [ NonMatching, "d_a_obj_clearness_wall", "REL/d/a/obj/d_a_obj_clearness_wall.cpp" ), Rel(NonMatching, "d_a_obj_clef", "REL/d/a/obj/d_a_obj_clef.cpp"), - Rel(NonMatching, "d_a_obj_cloud_dive", "REL/d/a/obj/d_a_obj_cloud_dive.cpp"), + Rel(Matching, "d_a_obj_cloud_dive", "REL/d/a/obj/d_a_obj_cloud_dive.cpp"), Rel(NonMatching, "d_a_obj_col", "REL/d/a/obj/d_a_obj_col.cpp"), Rel(NonMatching, "d_a_obj_control_panel", "REL/d/a/obj/d_a_obj_control_panel.cpp"), Rel(NonMatching, "d_a_obj_cumul_cloud", "REL/d/a/obj/d_a_obj_cumul_cloud.cpp"), diff --git a/include/d/a/obj/d_a_obj_cloud_dive.h b/include/d/a/obj/d_a_obj_cloud_dive.h index 419a9ad7..a0125752 100644 --- a/include/d/a/obj/d_a_obj_cloud_dive.h +++ b/include/d/a/obj/d_a_obj_cloud_dive.h @@ -18,13 +18,13 @@ public: virtual int actorExecute() override; virtual int draw() override; + bool fn_350_6F0(); + bool fn_350_760(); + STATE_FUNC_DECLARE(dAcOcloudDive_c, Wait); STATE_FUNC_DECLARE(dAcOcloudDive_c, Dead); private: - bool fn_350_6F0(); - bool fn_350_760(); - /* 0x330 */ nw4r::g3d::ResFile mResFile; /* 0x334 */ m3d::smdl_c mMdl; /* 0x350 */ dCcD_Cyl mCollider; @@ -35,7 +35,7 @@ private: static const f32 mRadius1; static const f32 mRadius2; - static const f32 lbl_350_rodata_8; + static const f32 height; static dCcD_SrcCyl sCylSrc; }; diff --git a/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp b/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp index edafd1fb..6178c4f2 100644 --- a/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp +++ b/src/REL/d/a/obj/d_a_obj_cloud_dive.cpp @@ -12,7 +12,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_CLOUD_DIVE, dAcOcloudDive_c, fProfile::OBJ_CLOUD_DIVE, const f32 dAcOcloudDive_c::mRadius1 = 100.0f; const f32 dAcOcloudDive_c::mRadius2 = 200.0f; -const f32 dAcOcloudDive_c::lbl_350_rodata_8 = 40.0f; +const f32 dAcOcloudDive_c::height = 40.0f; dCcD_SrcCyl dAcOcloudDive_c::sCylSrc = { /* mObjInf */ @@ -60,7 +60,7 @@ int dAcOcloudDive_c::actorExecute() { mStateMgr.executeState(); mCollider.SetR(mRadius); mCollider.SetH(40.0f); - mCollider.SetC(position - mVec3_c(0.0f, 20.0f, 0.0f)); + mCollider.SetC(position - mVec3_c(0.0f, height / 2, 0.0f)); dCcS::GetInstance()->Set(&mCollider); return SUCCEEDED; } @@ -73,11 +73,11 @@ void dAcOcloudDive_c::initializeState_Wait() {} void dAcOcloudDive_c::executeState_Wait() { if (fn_350_6F0()) { - mStateMgr.changeState(StateID_Wait); + mStateMgr.changeState(StateID_Dead); } if (fn_350_760()) { dAcItem_c::giveItem22((ITEM_ID)mItemID, 0, -1); - mStateMgr.changeState(StateID_Wait); + mStateMgr.changeState(StateID_Dead); } } @@ -95,21 +95,21 @@ bool dAcOcloudDive_c::fn_350_6F0() { } bool dAcOcloudDive_c::fn_350_760() { + bool ret = false; + bool temp = false; + mVec3_c deltaPosition = dAcPy_c::GetLink()->position - position; f32 distance = EGG::Math::sqrt(deltaPosition.squareMagXZ()); - // return distance <= mRadius && deltaPosition.y <= 20.0f && deltaPosition.y >= -20.0f; - - bool temp = false; if (distance <= mRadius) { - if (deltaPosition.y <= 20.0f) { + if (deltaPosition.y <= height / 2) { temp = true; } } if (temp) { - if (deltaPosition.y >= -20.0f) { - return true; + if (deltaPosition.y >= -height / 2) { + ret = true; } } - return false; + return ret; }