mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-17 21:03:35 -04:00
520 lines
15 KiB
C++
520 lines
15 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: d_a_warphr.cpp
|
|
//
|
|
|
|
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
|
#include "d/actor/d_a_warphr.h"
|
|
#include "d/actor/d_a_player.h"
|
|
#include "d/actor/d_a_ship.h"
|
|
#include "res/Object/Ghrwp.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "m_Do/m_Do_graphic.h"
|
|
|
|
namespace daWarphr_prm {
|
|
static inline u8 getType(daWarphr_c* i_this) {
|
|
return (fopAcM_GetParam(i_this) >> 0x1C) & 0xFF;
|
|
}
|
|
} // namespace daWarphr_prm
|
|
|
|
const char daWarphr_c::m_arcname[] = "Ghrwp";
|
|
const s16 daWarphr_c::m_residxA[] = {dRes_INDEX_GHRWP_BDL_GHRWPA00_e, dRes_INDEX_GHRWP_BTK_GHRWPA00_e, -1};
|
|
const s16 daWarphr_c::m_residxB[] = {dRes_INDEX_GHRWP_BDL_GHRWPB00_e, dRes_INDEX_GHRWP_BTK_GHRWPB00_e, dRes_INDEX_GHRWP_BRK_GHRWPB00_e};
|
|
const u32 daWarphr_c::m_heapsize = 0x3000;
|
|
|
|
typedef void (daWarphr_c::*EventInitFunc)(int);
|
|
EventInitFunc event_init_tbl[] = {
|
|
&daWarphr_c::initWait,
|
|
&daWarphr_c::initWarp,
|
|
&daWarphr_c::initWarpArrive,
|
|
&daWarphr_c::initWarpArriveEnd,
|
|
&daWarphr_c::initStartWarp,
|
|
};
|
|
|
|
typedef BOOL (daWarphr_c::*EventActionFunc)(int);
|
|
EventActionFunc event_action_tbl[] = {
|
|
&daWarphr_c::actWait,
|
|
&daWarphr_c::actWarp,
|
|
&daWarphr_c::actWarpArrive,
|
|
&daWarphr_c::actWarpArriveEnd,
|
|
&daWarphr_c::actStartWarp,
|
|
};
|
|
|
|
/* 000000EC-0000016C .text _delete__10daWarphr_cFv */
|
|
bool daWarphr_c::_delete() {
|
|
if (m2AC != NULL) {
|
|
m2AC->becomeInvalidEmitter();
|
|
m2AC = NULL;
|
|
}
|
|
|
|
#if VERSION > VERSION_JPN
|
|
if (m2B0 != NULL) {
|
|
m2B0->becomeInvalidEmitter();
|
|
m2B0 = NULL;
|
|
}
|
|
#endif
|
|
|
|
dComIfG_resDeleteDemo(&mPhase, m_arcname);
|
|
return true;
|
|
}
|
|
|
|
/* 0000016C-0000018C .text CheckCreateHeap__FP10fopAc_ac_c */
|
|
static BOOL CheckCreateHeap(fopAc_ac_c* a_this) {
|
|
return ((daWarphr_c*)a_this)->CreateHeap();
|
|
}
|
|
|
|
/* 0000018C-0000059C .text CreateHeap__10daWarphr_cFv */
|
|
BOOL daWarphr_c::CreateHeap() {
|
|
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname, m_residxA[0]);
|
|
JUT_ASSERT(VERSION_SELECT(208, 212, 221, 221), modelData != NULL);
|
|
|
|
mpModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222);
|
|
if (mpModel1 == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
mpBtkAnm1 = NULL;
|
|
if (m_residxA[1] != -1) {
|
|
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname, m_residxA[1]);
|
|
JUT_ASSERT(VERSION_SELECT(226, 230, 239, 239), pbtk != NULL);
|
|
|
|
mpBtkAnm1 = new mDoExt_btkAnm();
|
|
if (mpBtkAnm1 == NULL || !mpBtkAnm1->init(modelData, pbtk, true, J3DFrameCtrl::EMode_LOOP)) {
|
|
return FALSE;
|
|
}
|
|
mpBtkAnm1->setPlaySpeed(1.0f);
|
|
}
|
|
|
|
modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname, m_residxB[0]);
|
|
JUT_ASSERT(VERSION_SELECT(243, 247, 256, 256), modelData != NULL);
|
|
|
|
mpModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000222);
|
|
if (mpModel2 == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
mpBtkAnm2 = NULL;
|
|
if (m_residxB[1] != -1) {
|
|
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(m_arcname, m_residxB[1]);
|
|
JUT_ASSERT(VERSION_SELECT(261, 265, 274, 274), pbtk != NULL);
|
|
|
|
mpBtkAnm2 = new mDoExt_btkAnm();
|
|
|
|
if (mpBtkAnm2 == NULL || !mpBtkAnm2->init(modelData, pbtk, true, J3DFrameCtrl::EMode_NONE)) {
|
|
return FALSE;
|
|
}
|
|
mpBtkAnm2->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
mpBrkAnm = NULL;
|
|
if (m_residxB[2] != -1) {
|
|
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(m_arcname, m_residxB[2]);
|
|
JUT_ASSERT(VERSION_SELECT(282, 286, 295, 295), pbrk != NULL);
|
|
|
|
mpBrkAnm = new mDoExt_brkAnm();
|
|
|
|
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, true, J3DFrameCtrl::EMode_NONE)) {
|
|
return FALSE;
|
|
}
|
|
mpBrkAnm->setPlaySpeed(0.0f);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/* 000005E4-000006BC .text CreateInit__10daWarphr_cFv */
|
|
void daWarphr_c::CreateInit() {
|
|
fopAcM_SetMtx(this, mpModel1->getBaseTRMtx());
|
|
fopAcM_setCullSizeBox(this, -300.0f, 0.0f, -300.0f, 300.0f, 5000.0f, 300.0f);
|
|
fopAcM_setCullSizeFar(this, 1.0f);
|
|
set_mtx();
|
|
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D08)) {
|
|
m2F8 = dComIfGp_evmng_getEventIdx("TO_SEA_WARP_2");
|
|
} else {
|
|
m2F8 = dComIfGp_evmng_getEventIdx("TO_SEA_WARP_1");
|
|
}
|
|
}
|
|
|
|
/* 000006BC-00000768 .text _create__10daWarphr_cFv */
|
|
cPhs_State daWarphr_c::_create() {
|
|
fopAcM_ct(this, daWarphr_c);
|
|
|
|
m2FA = daWarphr_prm::getType(this);
|
|
cPhs_State PVar1 = dComIfG_resLoad(&mPhase, m_arcname);
|
|
if (PVar1 == cPhs_COMPLEATE_e) {
|
|
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x3000)) {
|
|
return cPhs_ERROR_e;
|
|
}
|
|
CreateInit();
|
|
}
|
|
return PVar1;
|
|
}
|
|
|
|
/* 00000768-00000808 .text set_mtx__10daWarphr_cFv */
|
|
void daWarphr_c::set_mtx() {
|
|
mpModel1->setBaseScale(scale);
|
|
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
|
mpModel1->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
mpModel2->setBaseScale(scale);
|
|
mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
|
|
/* 00000808-00000A58 .text _execute__10daWarphr_cFv */
|
|
bool daWarphr_c::_execute() {
|
|
if (demoActorID == 0) {
|
|
checkOrder();
|
|
demo_proc();
|
|
eventOrder();
|
|
} else {
|
|
#if VERSION > VERSION_JPN
|
|
if (dComIfGp_event_runCheck() && dComIfGp_evmng_startCheck("warp_out")) {
|
|
dDemo_manager_c* manager = dComIfGp_demo_get();
|
|
if (m2B0 != NULL) {
|
|
if (manager != NULL && manager->getFrame() >= 0x225u && !m2E4) {
|
|
m2B0->stopCreateParticle();
|
|
mDoGph_gInf_c::onMonotone();
|
|
|
|
bool bVar1 = strcmp(dComIfGp_getStartStageName(), "Hyrule") == 0 && dComIfGp_getStartStageLayer() == 8;
|
|
if (bVar1) {
|
|
mDoGph_gInf_c::mMonotoneRate = -600;
|
|
} else {
|
|
mDoGph_gInf_c::mMonotoneRate = 400;
|
|
}
|
|
mDoGph_gInf_c::mMonotoneRateSpeed = 0;
|
|
m2E4 = true;
|
|
}
|
|
} else {
|
|
m2B0 = dComIfGp_particle_setProjection(dPa_name::ID_IT_SP_DEMO20_INDWP00, ¤t.pos);
|
|
mDoGph_gInf_c::offMonotone();
|
|
}
|
|
}
|
|
#endif
|
|
m2F0 = 0;
|
|
demo_execute();
|
|
}
|
|
|
|
fopAcM_seStart(this, JA_SE_OBJ_HL_WAPR_EFF, 0);
|
|
|
|
set_mtx();
|
|
return true;
|
|
}
|
|
|
|
/* 00000A58-00000AC8 .text normal_execute__10daWarphr_cFv */
|
|
BOOL daWarphr_c::normal_execute() {
|
|
if (check_warp() != 0) {
|
|
if (get_return_count() == 0) {
|
|
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3810);
|
|
}
|
|
m2F0 = 2;
|
|
}
|
|
anim_play(2);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000AC8-00000B50 .text demo_execute__10daWarphr_cFv */
|
|
BOOL daWarphr_c::demo_execute() {
|
|
dDemo_actor_c* pdVar1 = dComIfGp_demo_getActor(demoActorID);
|
|
if (pdVar1 != NULL) {
|
|
m300 = pdVar1->getShapeId();
|
|
if (m300 == 0) {
|
|
anim_play(0);
|
|
return TRUE;
|
|
}
|
|
|
|
if (m300 == 1) {
|
|
anim_play(1);
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000B50-00000C6C .text demo_proc__10daWarphr_cFv */
|
|
void daWarphr_c::demo_proc() {
|
|
static char* action_table[] = {"WAIT", "WARP", "WARP_ARRIVE", "WARP_ARRIVE_END", "START_WARP"};
|
|
|
|
m304 = dComIfGp_evmng_getMyStaffId("Ghrwp");
|
|
if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk() && m304 != -1) {
|
|
s32 iVar1 = dComIfGp_evmng_getMyActIdx(m304, action_table, ARRAY_SIZE(action_table), FALSE, 0);
|
|
if (iVar1 == -1) {
|
|
dComIfGp_evmng_cutEnd(m304);
|
|
} else {
|
|
if (dComIfGp_evmng_getIsAddvance(m304)) {
|
|
(this->*event_init_tbl[iVar1])(m304);
|
|
}
|
|
|
|
if ((this->*event_action_tbl[iVar1])(m304)) {
|
|
dComIfGp_evmng_cutEnd(m304);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 00000C6C-00000C70 .text initWait__10daWarphr_cFi */
|
|
void daWarphr_c::initWait(int) {
|
|
}
|
|
|
|
/* 00000C70-00000C98 .text actWait__10daWarphr_cFi */
|
|
BOOL daWarphr_c::actWait(int) {
|
|
anim_play(0);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000C98-00000CCC .text initStartWarp__10daWarphr_cFi */
|
|
void daWarphr_c::initStartWarp(int) {
|
|
dComIfGp_evmng_setGoal(¤t.pos);
|
|
}
|
|
|
|
/* 00000CCC-00000CF4 .text actStartWarp__10daWarphr_cFi */
|
|
BOOL daWarphr_c::actStartWarp(int) {
|
|
anim_play(-1);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000CF4-00000DEC .text initWarp__10daWarphr_cFi */
|
|
void daWarphr_c::initWarp(int) {
|
|
dComIfGp_particle_set(dPa_name::ID_IT_SN_HRWARPA00, ¤t.pos);
|
|
m2AC = dComIfGp_particle_set(dPa_name::ID_IT_SN_HRWARPB00, ¤t.pos);
|
|
mDoAud_seStart(JA_SE_LK_HL_WAPR_U_IN);
|
|
}
|
|
|
|
/* 00000DEC-00000E14 .text actWarp__10daWarphr_cFi */
|
|
BOOL daWarphr_c::actWarp(int) {
|
|
anim_play(0);
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000E14-00000F70 .text initWarpArrive__10daWarphr_cFi */
|
|
void daWarphr_c::initWarpArrive(int) {
|
|
dComIfGp_particle_set(dPa_name::ID_IT_SN_HRWARPA00, ¤t.pos);
|
|
m2AC = dComIfGp_particle_set(dPa_name::ID_IT_SN_HRWARPB00, ¤t.pos);
|
|
|
|
set_end_anim();
|
|
|
|
static cXyz arrive_target(-500.0f, 0.0f, 650.0f);
|
|
dComIfGp_evmng_setGoal(&arrive_target);
|
|
#if VERSION <= VERSION_JPN
|
|
mDoAud_seStart(JA_SE_LK_HL_WAPR_U_OUT);
|
|
#else
|
|
mDoAud_seStart(JA_SE_LK_HL_WAPR_D_OUT);
|
|
#endif
|
|
}
|
|
|
|
/* 00000FAC-00000FB4 .text actWarpArrive__10daWarphr_cFi */
|
|
BOOL daWarphr_c::actWarpArrive(int) {
|
|
return TRUE;
|
|
}
|
|
|
|
/* 00000FB4-00000FE0 .text initWarpArriveEnd__10daWarphr_cFi */
|
|
void daWarphr_c::initWarpArriveEnd(int) {
|
|
if (m2AC != NULL) {
|
|
m2AC->becomeInvalidEmitter();
|
|
m2AC = NULL;
|
|
}
|
|
}
|
|
|
|
/* 00000FE0-00001048 .text actWarpArriveEnd__10daWarphr_cFi */
|
|
BOOL daWarphr_c::actWarpArriveEnd(int arg1) {
|
|
BOOL ret = FALSE;
|
|
anim_play(1);
|
|
if (mpBrkAnm != NULL && mpBrkAnm->getFrame() < 0.5f) {
|
|
ret = TRUE;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 00001048-000010A4 .text eventOrder__10daWarphr_cFv */
|
|
void daWarphr_c::eventOrder() {
|
|
if (m2F0 == 2) {
|
|
fopAcM_orderOtherEventId(this, m2F8);
|
|
eventInfo.onCondition(2);
|
|
}
|
|
}
|
|
|
|
/* 000010A4-0000115C .text checkOrder__10daWarphr_cFv */
|
|
void daWarphr_c::checkOrder() {
|
|
if (eventInfo.checkCommandDemoAccrpt()) {
|
|
if (dComIfGp_evmng_startCheck(m2F8) && m2F0 != 0) {
|
|
m2F0 = 0;
|
|
}
|
|
|
|
if (dComIfGp_evmng_endCheck(m2F8)) {
|
|
dComIfGp_event_reset();
|
|
}
|
|
} else if (m2F0 == 0 && !dComIfGp_event_runCheck()) {
|
|
normal_execute();
|
|
}
|
|
}
|
|
|
|
/* 0000115C-0000127C .text anim_play__10daWarphr_cFi */
|
|
void daWarphr_c::anim_play(int arg1) {
|
|
if (arg1 == 0) {
|
|
if (mpBtkAnm2 != NULL) {
|
|
mpBtkAnm2->setPlaySpeed(1.0f);
|
|
mpBtkAnm2->play();
|
|
}
|
|
|
|
if (mpBrkAnm != NULL) {
|
|
mpBrkAnm->setPlaySpeed(1.0f);
|
|
mpBrkAnm->play();
|
|
}
|
|
} else if (arg1 == 1) {
|
|
if (mpBtkAnm2 != NULL) {
|
|
mpBtkAnm2->setPlaySpeed(1.0f);
|
|
mpBtkAnm2->play();
|
|
}
|
|
|
|
if (mpBrkAnm != NULL) {
|
|
mpBrkAnm->setPlaySpeed(-2.0f);
|
|
mpBrkAnm->play();
|
|
}
|
|
} else if (arg1 == 2 && mpBrkAnm != NULL) {
|
|
mpBrkAnm->setPlaySpeed(-2.0f);
|
|
mpBrkAnm->play();
|
|
}
|
|
|
|
if (mpBtkAnm1 != NULL) {
|
|
mpBtkAnm1->setPlaySpeed(1.0f);
|
|
mpBtkAnm1->play();
|
|
}
|
|
}
|
|
|
|
/* 0000127C-000012F8 .text set_end_anim__10daWarphr_cFv */
|
|
void daWarphr_c::set_end_anim() {
|
|
if (mpBtkAnm2 != NULL) {
|
|
mpBtkAnm2->setFrame(mpBtkAnm2->getEndFrame());
|
|
}
|
|
|
|
if (mpBrkAnm != NULL) {
|
|
mpBrkAnm->setFrame(mpBrkAnm->getEndFrame());
|
|
}
|
|
}
|
|
|
|
/* 000012F8-0000134C .text get_return_count__10daWarphr_cFv */
|
|
s32 daWarphr_c::get_return_count() {
|
|
if (!dComIfGs_isStageBossEnemy(dSv_save_c::STAGE_FF)) {
|
|
return 0;
|
|
}
|
|
|
|
return dComIfGs_isEventBit(dSv_event_flag_c::UNK_1001) ? 2 : 1;
|
|
}
|
|
|
|
/* 0000134C-000014F0 .text check_warp__10daWarphr_cFv */
|
|
BOOL daWarphr_c::check_warp() {
|
|
daPy_py_c* player = daPy_getPlayerActorClass();
|
|
f32 abs = (player->current.pos - current.pos).absXZ();
|
|
|
|
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
|
|
daShip_c* ship = dComIfGp_getShipActor();
|
|
if (ship != NULL) {
|
|
f32 abs = (ship->current.pos - current.pos).absXZ();
|
|
if (abs < 500.0f) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/* 000014F0-000016E0 .text _draw__10daWarphr_cFv */
|
|
bool daWarphr_c::_draw() {
|
|
#if VERSION > VERSION_JPN
|
|
dDemo_camera_c* demoCamera = dComIfGp_demo_getCamera();
|
|
cXyz sp1C;
|
|
cXyz sp10;
|
|
csXyz sp08;
|
|
|
|
if (demoCamera != NULL) {
|
|
demoCamera->JSGGetViewPosition(&sp1C);
|
|
demoCamera->JSGGetViewTargetPosition(&sp10);
|
|
sp08.y = cLib_targetAngleY(&sp1C, &sp10);
|
|
}
|
|
|
|
mDoMtx_stack_c::transS(sp1C.x, sp1C.y, sp1C.z);
|
|
mDoMtx_stack_c::YrotM(sp08.y);
|
|
MTXCopy(mDoMtx_stack_c::get(), m2B4);
|
|
|
|
if (m2B0 != NULL) {
|
|
m2B0->setGlobalRTMatrix(m2B4);
|
|
}
|
|
#endif
|
|
|
|
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr);
|
|
g_env_light.setLightTevColorType(mpModel1, &tevStr);
|
|
g_env_light.setLightTevColorType(mpModel2, &tevStr);
|
|
|
|
if (mpBtkAnm1 != NULL) {
|
|
mpBtkAnm1->entry(mpModel1->getModelData());
|
|
}
|
|
|
|
if (mpBtkAnm2 != NULL) {
|
|
mpBtkAnm2->entry(mpModel2->getModelData());
|
|
}
|
|
|
|
if (mpBrkAnm != NULL) {
|
|
mpBrkAnm->entry(mpModel2->getModelData());
|
|
}
|
|
|
|
if (mDoGph_gInf_c::isMonotone()) {
|
|
dComIfGd_setListP1();
|
|
}
|
|
|
|
mDoExt_modelUpdateDL(mpModel1);
|
|
mDoExt_modelUpdateDL(mpModel2);
|
|
|
|
if (mDoGph_gInf_c::isMonotone()) {
|
|
dComIfGd_setList();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/* 000016E0-00001700 .text daWarphr_Create__FPv */
|
|
static cPhs_State daWarphr_Create(void* i_this) {
|
|
return ((daWarphr_c*)i_this)->_create();
|
|
}
|
|
|
|
/* 00001700-00001724 .text daWarphr_Delete__FPv */
|
|
static BOOL daWarphr_Delete(void* i_this) {
|
|
return ((daWarphr_c*)i_this)->_delete();
|
|
}
|
|
|
|
/* 00001724-00001748 .text daWarphr_Draw__FPv */
|
|
static BOOL daWarphr_Draw(void* i_this) {
|
|
return ((daWarphr_c*)i_this)->_draw();
|
|
}
|
|
|
|
/* 00001748-0000176C .text daWarphr_Execute__FPv */
|
|
static BOOL daWarphr_Execute(void* i_this) {
|
|
return ((daWarphr_c*)i_this)->_execute();
|
|
}
|
|
|
|
/* 0000176C-00001774 .text daWarphr_IsDelete__FPv */
|
|
static BOOL daWarphr_IsDelete(void*) {
|
|
return TRUE;
|
|
}
|
|
|
|
static actor_method_class daWarphrMethodTable = {
|
|
(process_method_func)daWarphr_Create,
|
|
(process_method_func)daWarphr_Delete,
|
|
(process_method_func)daWarphr_Execute,
|
|
(process_method_func)daWarphr_IsDelete,
|
|
(process_method_func)daWarphr_Draw,
|
|
};
|
|
|
|
actor_process_profile_definition g_profile_WARPHYRULE = {
|
|
/* Layer ID */ fpcLy_CURRENT_e,
|
|
/* List ID */ 0x0003,
|
|
/* List Prio */ fpcPi_CURRENT_e,
|
|
/* Proc Name */ fpcNm_WARPHYRULE_e,
|
|
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
|
/* Size */ sizeof(daWarphr_c),
|
|
/* Size Other */ 0,
|
|
/* Parameters */ 0,
|
|
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
|
/* Draw Prio */ fpcDwPi_WARPHYRULE_e,
|
|
/* Actor SubMtd */ &daWarphrMethodTable,
|
|
/* Status */ fopAcStts_CULL_e | fopAcStts_UNK4000_e | fopAcStts_UNK40000_e,
|
|
/* Group */ fopAc_ACTOR_e,
|
|
/* Cull Type */ fopAc_CULLBOX_CUSTOM_e,
|
|
};
|