// // Generated by dtk // Translation Unit: d_a_obj_homensmoke.cpp // #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_homensmoke.h" #include "d/d_particle.h" #include "m_Do/m_Do_mtx.h" #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; } /* 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) #else 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 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 = { /* Layer ID */ fpcLy_CURRENT_e, /* List ID */ 0x0003, /* List Prio */ fpcPi_CURRENT_e, /* Proc Name */ fpcNm_Obj_Homensmk_e, /* Proc SubMtd */ &g_fpcLf_Method.base, /* Size */ sizeof(daObjHomensmoke::Act_c), /* Size Other */ 0, /* Parameters */ 0, /* Leaf SubMtd */ &g_fopAc_Method.base, /* Draw Prio */ fpcDwPi_Obj_Homensmk_e, /* Actor SubMtd */ &daObjHomensmoke::Mthd_Table, /* Status */ fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK4000_e | fopAcStts_UNK40000_e, /* Group */ fopAc_ACTOR_e, /* Cull Type */ fopAc_CULLBOX_CUSTOM_e, };