Files
tww/src/d/d_bg_s_movebg_actor.cpp
T
2025-03-17 22:26:56 -04:00

101 lines
2.7 KiB
C++

//
// Generated by dtk
// Translation Unit: d_bg_s_movebg_actor.cpp
//
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_bg_w.h"
#include "d/d_com_inf_game.h"
#include "m_Do/m_Do_mtx.h"
/* 800A56B8-800A56FC .text __ct__16dBgS_MoveBgActorFv */
dBgS_MoveBgActor::dBgS_MoveBgActor() {
mpBgW = NULL;
}
/* 800A56FC-800A571C .text CheckCreateHeap__FP10fopAc_ac_c */
static int CheckCreateHeap(fopAc_ac_c* i_actor) {
return static_cast<dBgS_MoveBgActor*>(i_actor)->MoveBGCreateHeap();
}
const char* dBgS_MoveBgActor::m_name;
int dBgS_MoveBgActor::m_dzb_id;
MoveBGActor_SetFunc dBgS_MoveBgActor::m_set_func;
/* 800A571C-800A57F4 .text MoveBGCreateHeap__16dBgS_MoveBgActorFv */
BOOL dBgS_MoveBgActor::MoveBGCreateHeap() {
if (!CreateHeap()) {
return FALSE;
}
mpBgW = new dBgW();
if (mpBgW && !mpBgW->Set((cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id), cBgW::MOVE_BG_e, &mBgMtx)) {
if (m_set_func != NULL) {
mpBgW->SetCrrFunc(m_set_func);
}
} else {
mpBgW = NULL;
return FALSE;
}
return TRUE;
}
/* 800A57F4-800A58F4 .text MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvR13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl */
cPhs_State dBgS_MoveBgActor::MoveBGCreate(const char* i_arcName, int i_dzb_id,
MoveBGActor_SetFunc i_setFunc, u32 i_heapSize) {
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.x, scale.y, scale.z);
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
m_name = i_arcName;
m_dzb_id = i_dzb_id;
m_set_func = i_setFunc;
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, i_heapSize)) {
return cPhs_ERROR_e;
}
if (dComIfG_Bgsp()->Regist(mpBgW, this)) {
return cPhs_ERROR_e;
}
if (Create()) {
return cPhs_COMPLEATE_e;
} else {
return cPhs_ERROR_e;
}
}
/* 800A58F4-800A5980 .text MoveBGDelete__16dBgS_MoveBgActorFv */
BOOL dBgS_MoveBgActor::MoveBGDelete() {
BOOL ret = Delete();
if (mpBgW != NULL && mpBgW->ChkUsed()) {
dComIfG_Bgsp()->Release(mpBgW);
}
return ret;
}
/* 800A5980-800A5A3C .text MoveBGExecute__16dBgS_MoveBgActorFv */
BOOL dBgS_MoveBgActor::MoveBGExecute() {
Mtx* new_mtx = NULL;
BOOL ret = Execute(&new_mtx);
if (new_mtx == NULL) {
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.x, scale.y, scale.z);
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
} else {
MTXCopy(*new_mtx, mBgMtx);
}
mpBgW->Move();
return ret;
}