diff --git a/.clang-format b/.clang-format index 6e9130371..fe7079e8c 100644 --- a/.clang-format +++ b/.clang-format @@ -21,4 +21,3 @@ IncludeCategories: Priority: -1000 IndentCaseBlocks: true IndentCaseLabels: true -NamespaceIndentation: All diff --git a/src/d/actor/d_a_obj_homensmoke.cpp b/src/d/actor/d_a_obj_homensmoke.cpp index 38c3ce36e..8067e847b 100644 --- a/src/d/actor/d_a_obj_homensmoke.cpp +++ b/src/d/actor/d_a_obj_homensmoke.cpp @@ -12,159 +12,161 @@ #include "d/d_com_inf_game.h" namespace daObjHomensmoke { - /* 000000EC-00000230 .text set_mtx__Q215daObjHomensmoke5Act_cFv */ - void Act_c::set_mtx() { - if (param_get_axis() != 0) { - cXyz backOffset(0.0f, 0.0f, -200.0f); - cXyz forwardOffset(0.0f, 0.0f, 200.0f); - mDoMtx_stack_c::transS(current.pos); - mDoMtx_stack_c::transM(forwardOffset); - mDoMtx_stack_c::ZrotM(shape_angle.z); - mDoMtx_stack_c::YrotM(shape_angle.y); - mDoMtx_stack_c::XrotM(shape_angle.x); - mDoMtx_stack_c::transM(backOffset); - mDoMtx_copy(mDoMtx_stack_c::get(), mMtx); - } else { - mDoMtx_stack_c::transS(current.pos); - mDoMtx_stack_c::ZrotM(shape_angle.z); - mDoMtx_stack_c::YrotM(shape_angle.y); - mDoMtx_stack_c::XrotM(shape_angle.x); - mDoMtx_copy(mDoMtx_stack_c::get(), mMtx); - } - } - /* 0000026C-0000048C .text _create__Q215daObjHomensmoke5Act_cFv */ - cPhs_State Act_c::_create() { - fopAcM_ct(this, Act_c); - - mbInitialized = FALSE; - - set_mtx(); - fopAcM_SetMtx(this, mMtx); - - mType = param_get_arg0(); - - struct daObjHomensmoke__cullbox { - /* 0x0 */ Vec mMin; - /* 0xC */ Vec mMax; - }; - static daObjHomensmoke__cullbox culling_dat[] = { - {-300.0f, -30.0f, -100.0f, 300.0f, 600.0f, 300.0f}, - {-100.0f, -30.0f, -100.0f, 100.0f, 250.0f, 120.0f}, - }; - fopAcM_setCullSizeBox(this, - culling_dat[mType].mMin.x, culling_dat[mType].mMin.y, culling_dat[mType].mMin.z, - culling_dat[mType].mMax.x, culling_dat[mType].mMax.y, culling_dat[mType].mMax.z - ); - - fopAc_ac_c* parent = fopAcM_SearchByID(parentActorID); - if (parent) { - tevStr = parent->tevStr; - } - - return cPhs_COMPLEATE_e; +/* 000000EC-00000230 .text set_mtx__Q215daObjHomensmoke5Act_cFv */ +void Act_c::set_mtx() { + if (param_get_axis() != 0) { + cXyz backOffset(0.0f, 0.0f, -200.0f); + cXyz forwardOffset(0.0f, 0.0f, 200.0f); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(forwardOffset); + mDoMtx_stack_c::ZrotM(shape_angle.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::transM(backOffset); + mDoMtx_copy(mDoMtx_stack_c::get(), mMtx); + } else { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZrotM(shape_angle.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_copy(mDoMtx_stack_c::get(), mMtx); } +} - /* 0000048C-000004C8 .text _delete__Q215daObjHomensmoke5Act_cFv */ - bool Act_c::_delete() { - if (mSmokeCb.getEmitter()) { - mSmokeCb.remove(); - } - return true; +/* 0000026C-0000048C .text _create__Q215daObjHomensmoke5Act_cFv */ +cPhs_State Act_c::_create() { + fopAcM_ct(this, Act_c); + + mbInitialized = FALSE; + + set_mtx(); + fopAcM_SetMtx(this, mMtx); + + mType = param_get_arg0(); + + struct daObjHomensmoke__cullbox { + /* 0x0 */ Vec mMin; + /* 0xC */ Vec mMax; + }; + static daObjHomensmoke__cullbox culling_dat[] = { + {-300.0f, -30.0f, -100.0f, 300.0f, 600.0f, 300.0f}, + {-100.0f, -30.0f, -100.0f, 100.0f, 250.0f, 120.0f}, + }; + fopAcM_setCullSizeBox(this, + culling_dat[mType].mMin.x, culling_dat[mType].mMin.y, culling_dat[mType].mMin.z, + culling_dat[mType].mMax.x, culling_dat[mType].mMax.y, culling_dat[mType].mMax.z + ); + + fopAc_ac_c* parent = fopAcM_SearchByID(parentActorID); + if (parent) { + tevStr = parent->tevStr; } + + return cPhs_COMPLEATE_e; +} - /* 000004C8-00000738 .text _execute__Q215daObjHomensmoke5Act_cFv */ - bool Act_c::_execute() { +/* 0000048C-000004C8 .text _delete__Q215daObjHomensmoke5Act_cFv */ +bool Act_c::_delete() { + if (mSmokeCb.getEmitter()) { + mSmokeCb.remove(); + } + return true; +} + +/* 000004C8-00000738 .text _execute__Q215daObjHomensmoke5Act_cFv */ +bool Act_c::_execute() { #if VERSION == VERSION_DEMO - if (m2D0 == NULL) + if (m2D0 == NULL) #else - if (!mbInitialized) + if (!mbInitialized) #endif - { - static cXyz norse_offsetL(0.0f, 300.0f, 20.0f); - static cXyz norse_offsetS(0.0f, 70.0f, 20.0f); - if (mType == 0) { - cMtx_multVec(mMtx, &norse_offsetL, &mSmokePos); - } else { - cMtx_multVec(mMtx, &norse_offsetS, &mSmokePos); - } - - JPABaseEmitter* smokeEmitter = dComIfGp_particle_setToon(dPa_name::ID_AK_JT_ELEMENTSMOKE01, &mSmokePos, NULL, NULL, 0xFF, &mSmokeCb, fopAcM_GetRoomNo(this)); - if (smokeEmitter) { - static f32 rate_table[2] = {1.0f, 0.5f}; - f32 rate = rate_table[mType & 1]; - smokeEmitter->setGlobalAlpha(0xB4); - smokeEmitter->setRate(50.0f); - smokeEmitter->setMaxFrame(1); - JGeometry::TVec3 scale; - scale.set(rate, 0.0f, rate); - smokeEmitter->setEmitterScale(scale); - scale.set(rate*5.0f, rate*5.0f, rate*5.0f); - smokeEmitter->setGlobalDynamicsScale(scale); - scale.set(rate*6.0f, rate*6.0f, rate*6.0f); - smokeEmitter->setGlobalParticleScale(scale); - } - - JPABaseEmitter* rubbleEmitter = dComIfGp_particle_setToon(dPa_name::ID_AK_SN_KAZEMASKHAHEN00, ¤t.pos); - if (rubbleEmitter) { - rubbleEmitter->setGlobalPrmColor(tevStr.mColorK0.r, tevStr.mColorK0.g, tevStr.mColorK0.b); - if (mType == 1) { - JGeometry::TVec3 scale(0.6f, 0.6f, 0.6f); - rubbleEmitter->setEmitterScale(scale); - rubbleEmitter->setGlobalDynamicsScale(scale); - rubbleEmitter->setGlobalParticleScale(scale); - } - rubbleEmitter->setGlobalRTMatrix(mMtx); - } - - mbInitialized = TRUE; - } else if (mSmokeCb.isEnd()) { - fopAcM_delete(this); - } - return true; - } - - /* 00000738-00000740 .text _draw__Q215daObjHomensmoke5Act_cFv */ - bool Act_c::_draw() { - return true; - } - - namespace { - /* 00000740-00000760 .text Mthd_Create__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ - cPhs_State Mthd_Create(void* i_this) { - return ((Act_c*)i_this)->_create(); - } - - /* 00000760-00000784 .text Mthd_Delete__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ - BOOL Mthd_Delete(void* i_this) { - return ((Act_c*)i_this)->_delete(); - } - - /* 00000784-000007A8 .text Mthd_Execute__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ - BOOL Mthd_Execute(void* i_this) { - return ((Act_c*)i_this)->_execute(); - } - - /* 000007A8-000007CC .text Mthd_Draw__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ - BOOL Mthd_Draw(void* i_this) { - return ((Act_c*)i_this)->_draw(); - } - - /* 000007CC-000007D4 .text Mthd_IsDelete__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ - BOOL Mthd_IsDelete(void* i_this) { - return TRUE; + { + static cXyz norse_offsetL(0.0f, 300.0f, 20.0f); + static cXyz norse_offsetS(0.0f, 70.0f, 20.0f); + if (mType == 0) { + cMtx_multVec(mMtx, &norse_offsetL, &mSmokePos); + } else { + cMtx_multVec(mMtx, &norse_offsetS, &mSmokePos); } - static actor_method_class Mthd_Table = { - (process_method_func)Mthd_Create, - (process_method_func)Mthd_Delete, - (process_method_func)Mthd_Execute, - (process_method_func)Mthd_IsDelete, - (process_method_func)Mthd_Draw, - }; + JPABaseEmitter* smokeEmitter = dComIfGp_particle_setToon(dPa_name::ID_AK_JT_ELEMENTSMOKE01, &mSmokePos, NULL, NULL, 0xFF, &mSmokeCb, fopAcM_GetRoomNo(this)); + if (smokeEmitter) { + static f32 rate_table[2] = {1.0f, 0.5f}; + f32 rate = rate_table[mType & 1]; + smokeEmitter->setGlobalAlpha(0xB4); + smokeEmitter->setRate(50.0f); + smokeEmitter->setMaxFrame(1); + JGeometry::TVec3 scale; + scale.set(rate, 0.0f, rate); + smokeEmitter->setEmitterScale(scale); + scale.set(rate*5.0f, rate*5.0f, rate*5.0f); + smokeEmitter->setGlobalDynamicsScale(scale); + scale.set(rate*6.0f, rate*6.0f, rate*6.0f); + smokeEmitter->setGlobalParticleScale(scale); + } + + JPABaseEmitter* rubbleEmitter = dComIfGp_particle_setToon(dPa_name::ID_AK_SN_KAZEMASKHAHEN00, ¤t.pos); + if (rubbleEmitter) { + rubbleEmitter->setGlobalPrmColor(tevStr.mColorK0.r, tevStr.mColorK0.g, tevStr.mColorK0.b); + if (mType == 1) { + JGeometry::TVec3 scale(0.6f, 0.6f, 0.6f); + rubbleEmitter->setEmitterScale(scale); + rubbleEmitter->setGlobalDynamicsScale(scale); + rubbleEmitter->setGlobalParticleScale(scale); + } + rubbleEmitter->setGlobalRTMatrix(mMtx); + } + + mbInitialized = TRUE; + } else if (mSmokeCb.isEnd()) { + fopAcM_delete(this); + } + return true; +} + +/* 00000738-00000740 .text _draw__Q215daObjHomensmoke5Act_cFv */ +bool Act_c::_draw() { + return true; +} + +namespace { + /* 00000740-00000760 .text Mthd_Create__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ + cPhs_State Mthd_Create(void* i_this) { + return ((Act_c*)i_this)->_create(); + } + + /* 00000760-00000784 .text Mthd_Delete__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ + BOOL Mthd_Delete(void* i_this) { + return ((Act_c*)i_this)->_delete(); + } + + /* 00000784-000007A8 .text Mthd_Execute__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ + BOOL Mthd_Execute(void* i_this) { + return ((Act_c*)i_this)->_execute(); + } + + /* 000007A8-000007CC .text Mthd_Draw__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ + BOOL Mthd_Draw(void* i_this) { + return ((Act_c*)i_this)->_draw(); + } + + /* 000007CC-000007D4 .text Mthd_IsDelete__Q215daObjHomensmoke32@unnamed@d_a_obj_homensmoke_cpp@FPv */ + BOOL Mthd_IsDelete(void* i_this) { + return TRUE; + } + + static actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, + (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, + (process_method_func)Mthd_IsDelete, + (process_method_func)Mthd_Draw, }; }; +}; // namespace daObjHomensmoke + actor_process_profile_definition g_profile_Obj_Homensmk = { /* LayerID */ fpcLy_CURRENT_e, /* ListID */ 0x0003, diff --git a/src/d/actor/d_a_tag_ret.cpp b/src/d/actor/d_a_tag_ret.cpp index bf5291794..6617a5cc4 100644 --- a/src/d/actor/d_a_tag_ret.cpp +++ b/src/d/actor/d_a_tag_ret.cpp @@ -44,93 +44,95 @@ static dCcD_SrcCyl cyl_check_src = { }; namespace daTagRet { - /* 00000078-000001D4 .text _create__Q28daTagRet5Act_cFv */ - cPhs_State Act_c::_create() { - fopAcM_ct(this, daTagRet::Act_c); - #if VERSION > VERSION_DEMO - if (checkItemGet(dItem_PEARL_FARORE_e, TRUE)) { - return cPhs_STOP_e; - } - #endif +/* 00000078-000001D4 .text _create__Q28daTagRet5Act_cFv */ +cPhs_State Act_c::_create() { + fopAcM_ct(this, daTagRet::Act_c); - mStts.Init(0xFF, 0xFF, this); - mCyl.Set(cyl_check_src); - mCyl.SetR(1000.0f*scale.x); - mCyl.SetH(100.0f*scale.y); - mCyl.SetStts(&mStts); + #if VERSION > VERSION_DEMO + if (checkItemGet(dItem_PEARL_FARORE_e, TRUE)) { + return cPhs_STOP_e; + } + #endif - return cPhs_COMPLEATE_e; + mStts.Init(0xFF, 0xFF, this); + mCyl.Set(cyl_check_src); + mCyl.SetR(1000.0f*scale.x); + mCyl.SetH(100.0f*scale.y); + mCyl.SetStts(&mStts); + + return cPhs_COMPLEATE_e; +} + +/* 0000038C-00000394 .text _delete__Q28daTagRet5Act_cFv */ +bool Act_c::_delete() { + return true; +} + +/* 00000394-00000398 .text set_mtx__Q28daTagRet5Act_cFv */ +void Act_c::set_mtx() { + return; +} + +/* 00000398-00000460 .text _execute__Q28daTagRet5Act_cFv */ +bool Act_c::_execute() { + mCyl.SetC(current.pos); + mCyl.SetR(1000.0f*scale.x); + mCyl.SetH(100.0f*scale.y); + dComIfG_Ccsp()->Set(&mCyl); + + if (mCyl.ChkCoHit()) { + u32 linkId = prm_get_linkID(); + daPy_getPlayerLinkActorClass()->onDekuSpReturnFlg(linkId); } - /* 0000038C-00000394 .text _delete__Q28daTagRet5Act_cFv */ - bool Act_c::_delete() { - return true; + set_mtx(); + + return true; +} + +/* 00000460-00000468 .text _draw__Q28daTagRet5Act_cFv */ +bool Act_c::_draw() { + return true; +} + +namespace { + /* 00000468-00000488 .text Mthd_Create__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + cPhs_State Mthd_Create(void* i_this) { + return ((Act_c*)i_this)->_create(); } - /* 00000394-00000398 .text set_mtx__Q28daTagRet5Act_cFv */ - void Act_c::set_mtx() { - return; + /* 00000488-000004AC .text Mthd_Delete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + BOOL Mthd_Delete(void* i_this) { + return ((Act_c*)i_this)->_delete(); } - /* 00000398-00000460 .text _execute__Q28daTagRet5Act_cFv */ - bool Act_c::_execute() { - mCyl.SetC(current.pos); - mCyl.SetR(1000.0f*scale.x); - mCyl.SetH(100.0f*scale.y); - dComIfG_Ccsp()->Set(&mCyl); - - if (mCyl.ChkCoHit()) { - u32 linkId = prm_get_linkID(); - daPy_getPlayerLinkActorClass()->onDekuSpReturnFlg(linkId); - } - - set_mtx(); - - return true; + /* 000004AC-000004D0 .text Mthd_Execute__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + BOOL Mthd_Execute(void* i_this) { + return ((Act_c*)i_this)->_execute(); } - /* 00000460-00000468 .text _draw__Q28daTagRet5Act_cFv */ - bool Act_c::_draw() { - return true; + /* 000004D0-000004F4 .text Mthd_Draw__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + BOOL Mthd_Draw(void* i_this) { + return ((Act_c*)i_this)->_draw(); } - namespace { - /* 00000468-00000488 .text Mthd_Create__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ - cPhs_State Mthd_Create(void* i_this) { - return ((Act_c*)i_this)->_create(); - } + /* 000004F4-000004FC .text Mthd_IsDelete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + BOOL Mthd_IsDelete(void* i_this) { + return TRUE; + } - /* 00000488-000004AC .text Mthd_Delete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ - BOOL Mthd_Delete(void* i_this) { - return ((Act_c*)i_this)->_delete(); - } - - /* 000004AC-000004D0 .text Mthd_Execute__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ - BOOL Mthd_Execute(void* i_this) { - return ((Act_c*)i_this)->_execute(); - } - - /* 000004D0-000004F4 .text Mthd_Draw__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ - BOOL Mthd_Draw(void* i_this) { - return ((Act_c*)i_this)->_draw(); - } - - /* 000004F4-000004FC .text Mthd_IsDelete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ - BOOL Mthd_IsDelete(void* i_this) { - return TRUE; - } - - static actor_method_class Mthd_Table = { - (process_method_func)Mthd_Create, - (process_method_func)Mthd_Delete, - (process_method_func)Mthd_Execute, - (process_method_func)Mthd_IsDelete, - (process_method_func)Mthd_Draw, - }; + static actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, + (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, + (process_method_func)Mthd_IsDelete, + (process_method_func)Mthd_Draw, }; }; +}; // namespace daTagRet + actor_process_profile_definition g_profile_Tag_Ret = { /* LayerID */ fpcLy_CURRENT_e, /* ListID */ 0x0003, diff --git a/src/d/d_a_obj.cpp b/src/d/d_a_obj.cpp index b04940f3b..7eef5ebf0 100644 --- a/src/d/d_a_obj.cpp +++ b/src/d/d_a_obj.cpp @@ -13,221 +13,223 @@ #include "JSystem/JParticle/JPAEmitter.h" namespace daObj { - /* 800666EC-800668BC .text make_land_effect__5daObjFP10fopAc_ac_cP11dBgS_GndChkf */ - void make_land_effect(fopAc_ac_c* ac, dBgS_GndChk* chk, f32 scale) { - cXyz scaleV; - switch (dComIfG_Bgsp()->GetAttributeCode(*chk)) { - case dBgS_Attr_WATER_e: - { - scaleV.setall(scale * 0.85f); - JPABaseEmitter* pEmtr = dComIfGp_particle_set(dPa_name::ID_AK_JN_ELEMENTSHIBUKI00, &ac->current.pos, NULL, &scaleV); - if (pEmtr != NULL) { - pEmtr->setRate(20.0f); - pEmtr->setMaxFrame(1); - pEmtr->setSpread(1.0f); - pEmtr->setDirectionalSpeed(12.0f); - } - } - break; - case dBgS_Attr_GRASS_e: - { - scaleV.setall(scale); - JPABaseEmitter* pEmtr = dComIfGp_particle_set(dPa_name::ID_AK_JN_ELEMENTKUSA00, &ac->current.pos, NULL, &scaleV); - if (pEmtr != NULL) { - pEmtr->setLifeTime(20); - pEmtr->setRate(50.0f); - pEmtr->setMaxFrame(1); - pEmtr->setSpread(1.0f); - pEmtr->setDirectionalSpeed(20.0f); - JGeometry::TVec3 trans(0.0f, 5.0f, 0.0f); - pEmtr->setEmitterTranslation(trans); - } - } - break; - case dBgS_Attr_GIANT_FLOWER_e: - case dBgS_Attr_CARPET_e: - case dBgS_Attr_ICE_e: - case dBgS_Attr_UNK1B_e: - break; - default: - { - cXyz scaleV; - scaleV.setall(scale); - scaleV *= (5.0f / 3.0f); - fopAcM_create(PROC_Obj_Eff, 3, &ac->current.pos, -1, NULL, &scaleV); - } - break; - } - } - /* 800668BC-800669E8 .text get_wind_spd__5daObjFP10fopAc_ac_cf */ - cXyz& get_wind_spd(fopAc_ac_c* param_1, f32 param_2) { - static cXyz total_spd(cXyz::Zero); - - cXyz wind = *dKyw_get_wind_vec() * dKyw_get_wind_pow(); - - cXyz pntVec; - f32 pntPow; - dKyw_pntwind_get_info(¶m_1->current.pos, &pntVec, &pntPow); - pntVec *= pntPow; - - total_spd = (wind + pntVec) * (param_2 * 0.5f); - return total_spd; - } - - /* 800669E8-80066B0C .text get_path_spd__5daObjFR13cBgS_PolyInfof */ - cXyz& get_path_spd(cBgS_PolyInfo& param_1, f32 param_2) { - static cXyz path_spd(cXyz::Zero); - - int temp; - if(dPath_GetPolyRoomPathVec(param_1, &path_spd, &temp)) { - if(path_spd.normalizeRS()) { - path_spd *= param_2 * temp * (1.0f / 255.0f); - } - else { - path_spd = cXyz::Zero; +/* 800666EC-800668BC .text make_land_effect__5daObjFP10fopAc_ac_cP11dBgS_GndChkf */ +void make_land_effect(fopAc_ac_c* ac, dBgS_GndChk* chk, f32 scale) { + cXyz scaleV; + switch (dComIfG_Bgsp()->GetAttributeCode(*chk)) { + case dBgS_Attr_WATER_e: + { + scaleV.setall(scale * 0.85f); + JPABaseEmitter* pEmtr = dComIfGp_particle_set(dPa_name::ID_AK_JN_ELEMENTSHIBUKI00, &ac->current.pos, NULL, &scaleV); + if (pEmtr != NULL) { + pEmtr->setRate(20.0f); + pEmtr->setMaxFrame(1); + pEmtr->setSpread(1.0f); + pEmtr->setDirectionalSpeed(12.0f); } } - - return path_spd; - } - - /* 80066B0C-80066B3C .text posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff */ - void posMoveF_stream(fopAc_ac_c* param_1, const cXyz* param_2, const cXyz* param_3, f32 param_4, f32 param_5) { - posMoveF_grade(param_1, param_2, param_3, param_4, param_5, 0, 0.0f, 0.0f, 0); - } - - namespace { - /* 80066B3C-80066C38 .text posMoveF_resist_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzff */ - void posMoveF_resist_acc(cXyz* pDst, const fopAc_ac_c* pActor, const cXyz* pStreamSpd, f32 param_4, f32 param_5) { - cXyz delta = pActor->speed - *pStreamSpd; - - f32 dx = delta.x; - f32 dy = delta.y; - f32 dz = delta.z; - - cXyz result(dx * param_4, dy * param_4, dz * param_4); - result.x += std::fabsf(dx) * dx * param_5; - result.y += std::fabsf(dy) * dy * param_5; - result.z += std::fabsf(dz) * dz * param_5; - - result *= -1.0f; - *pDst = result; - } - - /* 80066C38-80066D6C .text posMoveF_grade_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzffPC4cXyzPC4cXyz */ - void posMoveF_grade_acc(cXyz* pDst, const fopAc_ac_c* pActor, const cXyz* pNorm, f32 friction, f32 noGradeCos, const cXyz* pAccel0, const cXyz* pAccel1) { - *pDst = cXyz::Zero; - - if(pNorm) { - cXyz accel = *pAccel0; - accel.y = pAccel0->y + pActor->gravity; - if(pAccel1) { - accel += *pAccel1; - } - - if(accel.getDotProduct(*pNorm) < 0.0f) { - if(pNorm->y <= noGradeCos) { - cXyz temp; - cM3d_CrawVec(*pNorm, accel, &temp); - *pDst += temp; - } - - cXyz temp; - cM3d_CrawVec(*pNorm, pActor->speed, &temp); - *pDst -= temp * friction; - } + break; + case dBgS_Attr_GRASS_e: + { + scaleV.setall(scale); + JPABaseEmitter* pEmtr = dComIfGp_particle_set(dPa_name::ID_AK_JN_ELEMENTKUSA00, &ac->current.pos, NULL, &scaleV); + if (pEmtr != NULL) { + pEmtr->setLifeTime(20); + pEmtr->setRate(50.0f); + pEmtr->setMaxFrame(1); + pEmtr->setSpread(1.0f); + pEmtr->setDirectionalSpeed(20.0f); + JGeometry::TVec3 trans(0.0f, 5.0f, 0.0f); + pEmtr->setEmitterTranslation(trans); } } - } - - /* 80066D6C-8006700C .text posMoveF_grade__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzffPC4cXyzffPC4cXyz */ - void posMoveF_grade(fopAc_ac_c* i_actor, const cXyz* p_add_vel, const cXyz* stream_spd, f32 param_4, - f32 param_5, const cXyz* pNorm, f32 friction, f32 no_grade_cos, const cXyz* p_add_accel - ) { - JUT_ASSERT(280, stream_spd != NULL) - - cXyz resist_accel; - posMoveF_resist_acc(&resist_accel, i_actor, stream_spd, param_4, param_5); - - JUT_ASSERT(289, (friction >= 0.0f) && (friction < 1.0f) && (no_grade_cos >= 0.0f) && (no_grade_cos <= 1.0f)) - - cXyz vel; - posMoveF_grade_acc(&vel, i_actor, pNorm, friction, no_grade_cos, &resist_accel, p_add_accel); - - f32 speedF = fopAcM_GetSpeedF(i_actor); - f32 gravity = fopAcM_GetGravity(i_actor); - cXyz* speed_p = fopAcM_GetSpeed_p(i_actor); - - f32 speed_x = vel.x + (resist_accel.x + (speedF * cM_ssin(i_actor->current.angle.y))); - f32 speed_y = vel.y + (resist_accel.y + (speed_p->y + gravity)); - f32 speed_z = vel.z + (resist_accel.z + (speedF * cM_scos(i_actor->current.angle.y))); - - if(p_add_accel) { - speed_x += p_add_accel->x; - speed_y += p_add_accel->y; - speed_z += p_add_accel->z; + break; + case dBgS_Attr_GIANT_FLOWER_e: + case dBgS_Attr_CARPET_e: + case dBgS_Attr_ICE_e: + case dBgS_Attr_UNK1B_e: + break; + default: + { + cXyz scaleV; + scaleV.setall(scale); + scaleV *= (5.0f / 3.0f); + fopAcM_create(PROC_Obj_Eff, 3, &ac->current.pos, -1, NULL, &scaleV); } - - if(speed_y < fopAcM_GetMaxFallSpeed(i_actor)) { - speed_y = fopAcM_GetMaxFallSpeed(i_actor); - } - - fopAcM_SetSpeed(i_actor, speed_x, speed_y, speed_z); - i_actor->speedF = std::sqrtf(speed_x * speed_x + speed_z * speed_z); - i_actor->current.angle.y = cM_atan2s(speed_x, speed_z); - fopAcM_posMove(i_actor, p_add_vel); - } - - /* 8006700C-800671D4 .text quat_rotBaseY__5daObjFP10QuaternionRC4cXyz */ - void quat_rotBaseY(Quaternion*, const cXyz&) { - /* Nonmatching */ - } - - /* 800671D4-8006737C .text quat_rotBaseY2__5daObjFP10QuaternionRC4cXyz */ - void quat_rotBaseY2(Quaternion*, const cXyz&) { - /* Nonmatching */ - } - - /* 8006737C-80067524 .text quat_rotBaseZ__5daObjFP10QuaternionRC4cXyz */ - void quat_rotBaseZ(Quaternion*, const cXyz&) { - /* Nonmatching */ - } - - /* 80067524-800676EC .text quat_rotVec__5daObjFP10QuaternionRC4cXyzRC4cXyz */ - void quat_rotVec(Quaternion*, const cXyz&, const cXyz&) { - /* Nonmatching */ - } - - /* 800676EC-80067734 .text SetCurrentRoomNo__5daObjFP10fopAc_ac_cP11dBgS_GndChk */ - void SetCurrentRoomNo(fopAc_ac_c* ac, dBgS_GndChk* chk) { - s32 roomId = dComIfG_Bgsp()->GetRoomId(*chk); - if (roomId >= 0) - fopAcM_SetRoomNo(ac, roomId); - } - - /* 80067734-800678A8 .text HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl */ - void HitSeStart(const cXyz*, int, const dCcD_GObjInf*, unsigned long) { - /* Nonmatching */ - } - - /* 800678A8-800679FC .text HitEff_sub_kikuzu__5daObjFPC4cXyzPC4cXyzPC12dKy_tevstr_c */ - void HitEff_sub_kikuzu(const cXyz*, const cXyz*, const dKy_tevstr_c*) { - /* Nonmatching */ - } - - /* 800679FC-80067AE0 .text HitEff_kikuzu__5daObjFPC10fopAc_ac_cPC8dCcD_Cyl */ - void HitEff_kikuzu(const fopAc_ac_c*, const dCcD_Cyl*) { - /* Nonmatching */ - } - - /* 80067AF0-80067C40 .text HitEff_hibana__5daObjFPC4cXyzPC4cXyz */ - void HitEff_hibana(const cXyz*, const cXyz*) { - /* Nonmatching */ - } - - /* 80067C40-80067D1C .text HitEff_hibana__5daObjFPC10fopAc_ac_cPC8dCcD_Cyl */ - void HitEff_hibana(const fopAc_ac_c*, const dCcD_Cyl*) { - /* Nonmatching */ + break; } } + +/* 800668BC-800669E8 .text get_wind_spd__5daObjFP10fopAc_ac_cf */ +cXyz& get_wind_spd(fopAc_ac_c* param_1, f32 param_2) { + static cXyz total_spd(cXyz::Zero); + + cXyz wind = *dKyw_get_wind_vec() * dKyw_get_wind_pow(); + + cXyz pntVec; + f32 pntPow; + dKyw_pntwind_get_info(¶m_1->current.pos, &pntVec, &pntPow); + pntVec *= pntPow; + + total_spd = (wind + pntVec) * (param_2 * 0.5f); + return total_spd; +} + +/* 800669E8-80066B0C .text get_path_spd__5daObjFR13cBgS_PolyInfof */ +cXyz& get_path_spd(cBgS_PolyInfo& param_1, f32 param_2) { + static cXyz path_spd(cXyz::Zero); + + int temp; + if(dPath_GetPolyRoomPathVec(param_1, &path_spd, &temp)) { + if(path_spd.normalizeRS()) { + path_spd *= param_2 * temp * (1.0f / 255.0f); + } + else { + path_spd = cXyz::Zero; + } + } + + return path_spd; +} + +/* 80066B0C-80066B3C .text posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff */ +void posMoveF_stream(fopAc_ac_c* param_1, const cXyz* param_2, const cXyz* param_3, f32 param_4, f32 param_5) { + posMoveF_grade(param_1, param_2, param_3, param_4, param_5, 0, 0.0f, 0.0f, 0); +} + +namespace { + /* 80066B3C-80066C38 .text posMoveF_resist_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzff */ + void posMoveF_resist_acc(cXyz* pDst, const fopAc_ac_c* pActor, const cXyz* pStreamSpd, f32 param_4, f32 param_5) { + cXyz delta = pActor->speed - *pStreamSpd; + + f32 dx = delta.x; + f32 dy = delta.y; + f32 dz = delta.z; + + cXyz result(dx * param_4, dy * param_4, dz * param_4); + result.x += std::fabsf(dx) * dx * param_5; + result.y += std::fabsf(dy) * dy * param_5; + result.z += std::fabsf(dz) * dz * param_5; + + result *= -1.0f; + *pDst = result; + } + + /* 80066C38-80066D6C .text posMoveF_grade_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzffPC4cXyzPC4cXyz */ + void posMoveF_grade_acc(cXyz* pDst, const fopAc_ac_c* pActor, const cXyz* pNorm, f32 friction, f32 noGradeCos, const cXyz* pAccel0, const cXyz* pAccel1) { + *pDst = cXyz::Zero; + + if(pNorm) { + cXyz accel = *pAccel0; + accel.y = pAccel0->y + pActor->gravity; + if(pAccel1) { + accel += *pAccel1; + } + + if(accel.getDotProduct(*pNorm) < 0.0f) { + if(pNorm->y <= noGradeCos) { + cXyz temp; + cM3d_CrawVec(*pNorm, accel, &temp); + *pDst += temp; + } + + cXyz temp; + cM3d_CrawVec(*pNorm, pActor->speed, &temp); + *pDst -= temp * friction; + } + } + } +} + +/* 80066D6C-8006700C .text posMoveF_grade__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzffPC4cXyzffPC4cXyz */ +void posMoveF_grade(fopAc_ac_c* i_actor, const cXyz* p_add_vel, const cXyz* stream_spd, f32 param_4, + f32 param_5, const cXyz* pNorm, f32 friction, f32 no_grade_cos, const cXyz* p_add_accel +) { + JUT_ASSERT(280, stream_spd != NULL) + + cXyz resist_accel; + posMoveF_resist_acc(&resist_accel, i_actor, stream_spd, param_4, param_5); + + JUT_ASSERT(289, (friction >= 0.0f) && (friction < 1.0f) && (no_grade_cos >= 0.0f) && (no_grade_cos <= 1.0f)) + + cXyz vel; + posMoveF_grade_acc(&vel, i_actor, pNorm, friction, no_grade_cos, &resist_accel, p_add_accel); + + f32 speedF = fopAcM_GetSpeedF(i_actor); + f32 gravity = fopAcM_GetGravity(i_actor); + cXyz* speed_p = fopAcM_GetSpeed_p(i_actor); + + f32 speed_x = vel.x + (resist_accel.x + (speedF * cM_ssin(i_actor->current.angle.y))); + f32 speed_y = vel.y + (resist_accel.y + (speed_p->y + gravity)); + f32 speed_z = vel.z + (resist_accel.z + (speedF * cM_scos(i_actor->current.angle.y))); + + if(p_add_accel) { + speed_x += p_add_accel->x; + speed_y += p_add_accel->y; + speed_z += p_add_accel->z; + } + + if(speed_y < fopAcM_GetMaxFallSpeed(i_actor)) { + speed_y = fopAcM_GetMaxFallSpeed(i_actor); + } + + fopAcM_SetSpeed(i_actor, speed_x, speed_y, speed_z); + i_actor->speedF = std::sqrtf(speed_x * speed_x + speed_z * speed_z); + i_actor->current.angle.y = cM_atan2s(speed_x, speed_z); + fopAcM_posMove(i_actor, p_add_vel); +} + +/* 8006700C-800671D4 .text quat_rotBaseY__5daObjFP10QuaternionRC4cXyz */ +void quat_rotBaseY(Quaternion*, const cXyz&) { + /* Nonmatching */ +} + +/* 800671D4-8006737C .text quat_rotBaseY2__5daObjFP10QuaternionRC4cXyz */ +void quat_rotBaseY2(Quaternion*, const cXyz&) { + /* Nonmatching */ +} + +/* 8006737C-80067524 .text quat_rotBaseZ__5daObjFP10QuaternionRC4cXyz */ +void quat_rotBaseZ(Quaternion*, const cXyz&) { + /* Nonmatching */ +} + +/* 80067524-800676EC .text quat_rotVec__5daObjFP10QuaternionRC4cXyzRC4cXyz */ +void quat_rotVec(Quaternion*, const cXyz&, const cXyz&) { + /* Nonmatching */ +} + +/* 800676EC-80067734 .text SetCurrentRoomNo__5daObjFP10fopAc_ac_cP11dBgS_GndChk */ +void SetCurrentRoomNo(fopAc_ac_c* ac, dBgS_GndChk* chk) { + s32 roomId = dComIfG_Bgsp()->GetRoomId(*chk); + if (roomId >= 0) + fopAcM_SetRoomNo(ac, roomId); +} + +/* 80067734-800678A8 .text HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl */ +void HitSeStart(const cXyz*, int, const dCcD_GObjInf*, unsigned long) { + /* Nonmatching */ +} + +/* 800678A8-800679FC .text HitEff_sub_kikuzu__5daObjFPC4cXyzPC4cXyzPC12dKy_tevstr_c */ +void HitEff_sub_kikuzu(const cXyz*, const cXyz*, const dKy_tevstr_c*) { + /* Nonmatching */ +} + +/* 800679FC-80067AE0 .text HitEff_kikuzu__5daObjFPC10fopAc_ac_cPC8dCcD_Cyl */ +void HitEff_kikuzu(const fopAc_ac_c*, const dCcD_Cyl*) { + /* Nonmatching */ +} + +/* 80067AF0-80067C40 .text HitEff_hibana__5daObjFPC4cXyzPC4cXyz */ +void HitEff_hibana(const cXyz*, const cXyz*) { + /* Nonmatching */ +} + +/* 80067C40-80067D1C .text HitEff_hibana__5daObjFPC10fopAc_ac_cPC8dCcD_Cyl */ +void HitEff_hibana(const fopAc_ac_c*, const dCcD_Cyl*) { + /* Nonmatching */ +} + +} // namespace daObj