mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
231 lines
7.2 KiB
C++
231 lines
7.2 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: d_a_obj_gtaki.cpp
|
|
//
|
|
|
|
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
|
#include "d/actor/d_a_obj_gtaki.h"
|
|
#include "d/d_procname.h"
|
|
#include "d/d_priority.h"
|
|
#include "d/d_cc_d.h"
|
|
#include "d/res/res_gtaki.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
|
|
static dCcD_SrcCyl l_cyl_src = {
|
|
// dCcD_SrcGObjInf
|
|
{
|
|
/* Flags */ 0,
|
|
/* SrcObjAt Type */ 0,
|
|
/* SrcObjAt Atp */ 0,
|
|
/* SrcObjAt SPrm */ 0,
|
|
/* SrcObjTg Type */ 0,
|
|
/* SrcObjTg SPrm */ 0,
|
|
/* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsOther_e | cCcD_CoSPrm_VsEnemy_e | cCcD_CoSPrm_NoCrr_e,
|
|
/* SrcGObjAt Se */ 0,
|
|
/* SrcGObjAt HitMark */ dCcG_AtHitMark_None_e,
|
|
/* SrcGObjAt Spl */ dCcG_At_Spl_UNK0,
|
|
/* SrcGObjAt Mtrl */ 0,
|
|
/* SrcGObjAt SPrm */ 0,
|
|
/* SrcGObjTg Se */ 0,
|
|
/* SrcGObjTg HitMark */ 0,
|
|
/* SrcGObjTg Spl */ dCcG_Tg_Spl_UNK0,
|
|
/* SrcGObjTg Mtrl */ 0,
|
|
/* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e,
|
|
/* SrcGObjCo SPrm */ 0,
|
|
},
|
|
// cM3dGCylS
|
|
{{
|
|
/* Center */ {0.0f, 0.0f, 0.0f},
|
|
/* Radius */ 70.0f,
|
|
/* Height */ 1000.0f,
|
|
}},
|
|
};
|
|
|
|
|
|
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
|
|
static BOOL CheckCreateHeap(fopAc_ac_c* i_actor) {
|
|
return ((daObjGtaki_c*)i_actor)->CreateHeap();
|
|
}
|
|
|
|
/* 00000098-00000280 .text setDummyTexture__12daObjGtaki_cFv */
|
|
void daObjGtaki_c::setDummyTexture() {
|
|
J3DModelData* modeldata = mpModel->getModelData();
|
|
J3DTexture* texture = modeldata->getTexture();
|
|
JUTNameTab* textureName = modeldata->getTextureName();
|
|
JUT_ASSERT(DEMO_SELECT(178, 180), texture != NULL);
|
|
JUT_ASSERT(DEMO_SELECT(179, 181), textureName != NULL);
|
|
|
|
for (u16 i = 0; i<texture->getNum(); i++) {
|
|
if(!strcmp(textureName->getName(i), "B_dummy")){
|
|
texture->setResTIMG(i,*mDoGph_gInf_c::getFrameBufferTimg());
|
|
}
|
|
}
|
|
mDoExt_modelTexturePatch(modeldata);
|
|
}
|
|
|
|
/* 00000280-00000484 .text CreateHeap__12daObjGtaki_cFv */
|
|
BOOL daObjGtaki_c::CreateHeap() {
|
|
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Gtaki", GTAKI_BDL_GTAKI);
|
|
JUT_ASSERT(DEMO_SELECT(265, 267), modelData != NULL);
|
|
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
|
if(mpModel == NULL) return FALSE;
|
|
|
|
J3DAnmTextureSRTKey* btk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes("Gtaki", GTAKI_BTK_GTAKI));
|
|
JUT_ASSERT(DEMO_SELECT(275, 277), btk != NULL);
|
|
mBtkAnm.init(modelData, btk, true, J3DFrameCtrl::EMode_LOOP, 1.0, 0, -1, false, 0);
|
|
setDummyTexture();
|
|
|
|
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
|
mDoMtx_stack_c::YrotM(shape_angle.y);
|
|
mDoMtx_stack_c::scaleM(scale);
|
|
MTXCopy(mDoMtx_stack_c::get(), mMtx);
|
|
|
|
mpBgW = new dBgW();
|
|
|
|
if(!mpBgW || mpBgW->Set(static_cast<cBgD_t*>(dComIfG_getObjectRes("Gtaki", GTAKI_DZB_ITAKI)), cBgW::MOVE_BG_e, &mMtx)){
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void daObjGtaki_c::set_effect() {
|
|
JPABaseEmitter* emitter = dComIfGp_particle_setP1(dPa_name::ID_AK_SN_GANONFALLSSPLASH00, ¤t.pos, NULL, NULL, 0xff, NULL, -1, NULL, NULL, NULL);
|
|
if(emitter != NULL){
|
|
JGeometry::TVec3<f32> p_scale;
|
|
p_scale.set(scale.x, scale.y, scale.z);
|
|
emitter->setGlobalDynamicsScale(p_scale);
|
|
|
|
p_scale.set(scale.x, scale.x, scale.x);
|
|
emitter->setGlobalParticleScale(p_scale);
|
|
|
|
emitter->setGlobalPrmColor(mTevStr.mColorC0.r, mTevStr.mColorC0.g, mTevStr.mColorC0.b);
|
|
}
|
|
set_mtx();
|
|
}
|
|
|
|
/* 00000484-00000604 .text CreateInit__12daObjGtaki_cFv */
|
|
bool daObjGtaki_c::CreateInit() {
|
|
/* Nonmatching */
|
|
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
|
fopAcM_setCullSizeBox(this, -600.0f, -0.0f, -600.0f,600.0f,10000.0f,600.0f);
|
|
fopAcM_setCullSizeFar(this, 1.0f);
|
|
mStts.Init(0xff, 0xff, this);
|
|
|
|
mCyl.Set(l_cyl_src);
|
|
mCyl.SetR(scale.x * 70.0f);
|
|
mCyl.SetStts(&mStts);
|
|
|
|
dKy_tevstr_init(&mTevStr, home.roomNo, 0xff);
|
|
g_env_light.settingTevStruct(TEV_TYPE_BG1, ¤t.pos, &mTevStr);
|
|
|
|
set_effect();
|
|
return dComIfG_Bgsp()->Regist(mpBgW, this);
|
|
}
|
|
|
|
/* 00000604-00000684 .text set_mtx__12daObjGtaki_cFv */
|
|
void daObjGtaki_c::set_mtx() {
|
|
mpModel->setBaseScale(scale);
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::YrotM(current.angle.y);
|
|
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
|
|
/* 00000684-000006A4 .text daObjGtaki_Create__FPv */
|
|
static cPhs_State daObjGtaki_Create(void* i_this) {
|
|
return ((daObjGtaki_c*)i_this)->_create();
|
|
}
|
|
|
|
/* 000006A4-0000087C .text _create__12daObjGtaki_cFv */
|
|
cPhs_State daObjGtaki_c::_create() {
|
|
fopAcM_ct(this, daObjGtaki_c);
|
|
cPhs_State state = dComIfG_resLoad(&mPhase, "Gtaki");
|
|
if(state == cPhs_COMPLEATE_e){
|
|
if(!fopAcM_entrySolidHeap(this, CheckCreateHeap, DEMO_SELECT(0xD20, 0x3450))){
|
|
state = cPhs_ERROR_e;
|
|
return state;
|
|
}
|
|
else CreateInit();
|
|
}
|
|
return state;
|
|
}
|
|
|
|
bool daObjGtaki_c::_delete(){
|
|
#if VERSION > VERSION_DEMO
|
|
if(heap != NULL)
|
|
#endif
|
|
{
|
|
dComIfG_Bgsp()->Release(mpBgW);
|
|
}
|
|
dComIfG_resDeleteDemo(&mPhase, "Gtaki");
|
|
return true;
|
|
}
|
|
|
|
/* 00000AD8-00000B38 .text daObjGtaki_Delete__FPv */
|
|
static BOOL daObjGtaki_Delete(void* i_this) {
|
|
return ((daObjGtaki_c*)i_this)->_delete();
|
|
}
|
|
|
|
bool daObjGtaki_c::_draw(){
|
|
g_env_light.settingTevStruct(TEV_TYPE_BG3, ¤t.pos, &tevStr);
|
|
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
|
|
|
dComIfGd_setListInvisisble();
|
|
|
|
mBtkAnm.entry(mpModel->getModelData());
|
|
mDoExt_modelUpdateDL(mpModel);
|
|
mBtkAnm.remove(mpModel->getModelData());
|
|
|
|
dComIfGd_setList();
|
|
|
|
return true;
|
|
}
|
|
|
|
/* 00000B38-00000C08 .text daObjGtaki_Draw__FPv */
|
|
static BOOL daObjGtaki_Draw(void* i_this) {
|
|
return ((daObjGtaki_c*)i_this)->_draw();
|
|
}
|
|
|
|
bool daObjGtaki_c::_execute(){
|
|
mCyl.SetC(current.pos);
|
|
dComIfG_Ccsp()->Set(&mCyl);
|
|
mBtkAnm.play();
|
|
set_mtx();
|
|
return true;
|
|
}
|
|
|
|
/* 00000C08-00000C64 .text daObjGtaki_Execute__FPv */
|
|
static BOOL daObjGtaki_Execute(void* i_this) {
|
|
return ((daObjGtaki_c*)i_this)->_execute();
|
|
}
|
|
|
|
/* 00000C64-00000C6C .text daObjGtaki_IsDelete__FPv */
|
|
static BOOL daObjGtaki_IsDelete(void*) {
|
|
return TRUE;
|
|
}
|
|
|
|
static actor_method_class daObj_GtakiMethodTable = {
|
|
(process_method_func)daObjGtaki_Create,
|
|
(process_method_func)daObjGtaki_Delete,
|
|
(process_method_func)daObjGtaki_Execute,
|
|
(process_method_func)daObjGtaki_IsDelete,
|
|
(process_method_func)daObjGtaki_Draw,
|
|
};
|
|
|
|
actor_process_profile_definition g_profile_Obj_Gtaki = {
|
|
/* LayerID */ fpcLy_CURRENT_e,
|
|
/* ListID */ 0x0007,
|
|
/* ListPrio */ fpcPi_CURRENT_e,
|
|
/* ProcName */ PROC_Obj_Gtaki,
|
|
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
|
/* Size */ sizeof(daObjGtaki_c),
|
|
/* SizeOther */ 0,
|
|
/* Parameters */ 0,
|
|
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
|
/* Priority */ PRIO_Obj_Gtaki,
|
|
/* Actor SubMtd */ &daObj_GtakiMethodTable,
|
|
/* Status */ fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK40000_e,
|
|
/* Group */ fopAc_ACTOR_e,
|
|
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
|
|
};
|