summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_vmc.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2025-07-30 01:15:52 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2025-07-30 01:15:52 -0400
commit0d3fef9d3dba4a22db73d1974b4b9ca749944429 (patch)
tree7141437e283797c5ac68827c66b81cd4de77a7dd /src/d/actor/d_a_obj_vmc.cpp
parent4adfd27155f535c889366e6fecdc7235de2f43ee (diff)
obj_vmc OK for demo
Diffstat (limited to 'src/d/actor/d_a_obj_vmc.cpp')
-rw-r--r--src/d/actor/d_a_obj_vmc.cpp53
1 files changed, 51 insertions, 2 deletions
diff --git a/src/d/actor/d_a_obj_vmc.cpp b/src/d/actor/d_a_obj_vmc.cpp
index bb04b7d8..f67eae7d 100644
--- a/src/d/actor/d_a_obj_vmc.cpp
+++ b/src/d/actor/d_a_obj_vmc.cpp
@@ -46,6 +46,38 @@ static dCcD_SrcCyl cyl_src_base = {
},
};
+#if VERSION == VERSION_DEMO
+static dCcD_SrcCyl cyl_src_tree = {
+ // dCcD_SrcGObjInf
+ {
+ /* Flags */ 0,
+ /* SrcObjAt Type */ 0,
+ /* SrcObjAt Atp */ 0,
+ /* SrcObjAt SPrm */ 0,
+ /* SrcObjTg Type */ ~(AT_TYPE_BOOMERANG | AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_WIND | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
+ /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsEnemy_e | cCcD_TgSPrm_IsPlayer_e | cCcD_TgSPrm_IsOther_e,
+ /* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_VsEnemy_e | cCcD_CoSPrm_IsOther_e,
+ /* SrcGObjAt Se */ 0,
+ /* SrcGObjAt HitMark */ 0,
+ /* SrcGObjAt Spl */ 0,
+ /* SrcGObjAt Mtrl */ 0,
+ /* SrcGObjAt SPrm */ 0,
+ /* SrcGObjTg Se */ 0,
+ /* SrcGObjTg HitMark */ 0,
+ /* SrcGObjTg Spl */ 0,
+ /* SrcGObjTg Mtrl */ 0,
+ /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e,
+ /* SrcGObjCo SPrm */ 0,
+ },
+ // cM3dGCylS
+ {
+ /* Center */ 0.0f, 0.0f, 0.0f,
+ /* Radius */ 50.0f,
+ /* Height */ 300.0f,
+ },
+};
+#endif
+
const char daObjVmc::Act_c::M_arcname[4] = "Vmc";
/* 00000078-0000009C .text solidHeapCB__Q28daObjVmc5Act_cFP10fopAc_ac_c */
@@ -118,6 +150,9 @@ void daObjVmc::Act_c::CreateInit() {
mHasTreeBg = true;
mBckAnmGrow.setFrame(mBckAnmGrow.getEndFrame());
+#if VERSION == VERSION_DEMO
+ mCyl.Set(cyl_src_tree);
+#endif
mState = STATE_TREE_MAIN;
mHasTree = true;
} else {
@@ -127,6 +162,9 @@ void daObjVmc::Act_c::CreateInit() {
init_mtx();
mHookshotAnim = false;
+#if VERSION == VERSION_DEMO
+ m4B4_demo = NULL;
+#endif
mSmoke.setRateOff(0);
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xA7;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xA7;
@@ -162,7 +200,7 @@ bool daObjVmc::Act_c::_delete() {
if (mHasTreeBg == 1)
dComIfG_Bgsp()->Release(mpBgTree);
mSmoke.end();
- dComIfG_resDelete(&mPhs, M_arcname);
+ dComIfG_resDeleteDemo(&mPhs, M_arcname);
return true;
}
@@ -187,7 +225,13 @@ void daObjVmc::Act_c::init_mtx() {
/* 00000B1C-00000BD0 .text daObjVmc_base_main__Q28daObjVmc5Act_cFv */
void daObjVmc::Act_c::daObjVmc_base_main() {
if (mHasTree == 1) {
+#if VERSION == VERSION_DEMO
+ m4B4_demo =
+#endif
dComIfGp_particle_setToon(dPa_name::ID_SCENE_A1BC, &current.pos, &current.angle, NULL, 0xFF, &mSmoke, fopAcM_GetRoomNo(this));
+#if VERSION == VERSION_DEMO
+ mCyl.Set(cyl_src_tree);
+#endif
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_UNK10000000_e);
mState = STATE_TREE_DEMO_WAIT;
shape_angle.y = fopAcM_searchActorAngleY(this, dComIfGp_getPlayer(0)) + 0x1800;
@@ -225,7 +269,7 @@ void daObjVmc::Act_c::daObjVmc_tree_main() {
if (!mHookshotAnim) {
if (mCyl.ChkCoHit()) {
J3DAnmTransform* bck_wh = (J3DAnmTransform*)dComIfG_getObjectRes(M_arcname, VMC_BCK_VMCWH);
- JUT_ASSERT(0x1ad, bck_wh != NULL);
+ JUT_ASSERT(DEMO_SELECT(430, 429), bck_wh != NULL);
mBckAnmHookshot.init(mModelTree->getModelData(), bck_wh, true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, true);
mHookshotAnim = true;
}
@@ -251,8 +295,13 @@ void daObjVmc::Act_c::daObjVmc_tree_main() {
bool daObjVmc::Act_c::_execute() {
/* Nonmatching */
mCyl.SetC(current.pos);
+#if VERSION > VERSION_DEMO
if (mState == STATE_BASE_MAIN)
+#endif
+ {
dComIfG_Ccsp()->Set(&mCyl);
+ }
+
switch (mState) {
case STATE_BASE_MAIN:
daObjVmc_base_main();