mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
d_a_obj_zouK almost
This commit is contained in:
+1
-1
@@ -1583,7 +1583,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_obj_vtil"),
|
||||
ActorRel(NonMatching, "d_a_obj_vyasi"),
|
||||
ActorRel(NonMatching, "d_a_obj_xfuta"),
|
||||
ActorRel(NonMatching, "d_a_obj_zouK"),
|
||||
ActorRel(NonMatching, "d_a_obj_zouK", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_oship"),
|
||||
ActorRel(NonMatching, "d_a_ph"),
|
||||
ActorRel(NonMatching, "d_a_pt"),
|
||||
|
||||
@@ -2,43 +2,51 @@
|
||||
#define D_A_OBJ_ZOUK_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_a_obj.h"
|
||||
#include "d/d_bg_s_gnd_chk.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
|
||||
class J3DAnmTransformKey;
|
||||
class mDoExt_McaMorf;
|
||||
|
||||
namespace daObjZouk {
|
||||
namespace {
|
||||
struct Attr_c {
|
||||
/* 0x00 */ f32 v[12];
|
||||
};
|
||||
}
|
||||
|
||||
class Act_c : public fopAc_ac_c {
|
||||
public:
|
||||
void param_get_arg0() const {}
|
||||
void setEffectMtx(const cXyz*, float) {}
|
||||
virtual ~Act_c() {}
|
||||
inline s32 param_get_arg0() const { return daObj::PrmAbstract<int>(this, 0x04, 0x00); }
|
||||
inline void setEffectMtx(const cXyz*, float);
|
||||
|
||||
void solidHeapCB(fopAc_ac_c*);
|
||||
void create_heap();
|
||||
static BOOL solidHeapCB(fopAc_ac_c*);
|
||||
bool create_heap();
|
||||
s32 _create();
|
||||
BOOL _delete();
|
||||
bool _delete();
|
||||
void set_mtx();
|
||||
void texture_scroll();
|
||||
void play_stop_joint_anime();
|
||||
void jokai_demo();
|
||||
BOOL _execute();
|
||||
BOOL _draw();
|
||||
BOOL jokai_demo();
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
|
||||
public:
|
||||
/* 0x290 */ void* vtbl;
|
||||
/* 0x294 */ u8 m294[0x29C - 0x294];
|
||||
/* 0x29C */ request_of_phase_process_class mpPhs;
|
||||
/* 0x2A4 */ Mtx mZeroMtx;
|
||||
/* 0x294 */ u32 field_0x294;
|
||||
/* 0x298 */ u32 field_0x298;
|
||||
/* 0x29C */ request_of_phase_process_class mPhs;
|
||||
/* 0x2A4 */ Mtx mBgMtx;
|
||||
/* 0x2D4 */ Mtx mMtx;
|
||||
/* 0x304 */ J3DAnmTransformKey* mpKeyData;
|
||||
/* 0x308 */ mDoExt_McaMorf* mpMorf;
|
||||
/* 0x304 */ J3DAnmTransformKey* M_bck_data;
|
||||
/* 0x308 */ mDoExt_McaMorf* M_anm;
|
||||
/* 0x30C */ u8 m30C[0x310 - 0x30C];
|
||||
/* 0x310 */ dBgS_GndChk mGndChk;
|
||||
/* 0x364 */ f32 m364;
|
||||
/* 0x368 */ u32 m368;
|
||||
/* 0x310 */ dBgS_ObjGndChk mGndChk;
|
||||
/* 0x364 */ f32 mGndY;
|
||||
/* 0x368 */ s32 mBgMode;
|
||||
/* 0x36C */ dBgW* mBgBefore;
|
||||
/* 0x370 */ dBgW* mBgAfter;
|
||||
/* 0x374 */ dCcD_Stts mStts0;
|
||||
@@ -46,8 +54,10 @@ namespace daObjZouk {
|
||||
/* 0x4E0 */ dCcD_Stts mStts1;
|
||||
/* 0x51C */ dCcD_Cyl mCyl1;
|
||||
/* 0x64C */ dCcD_Stts mStts2;
|
||||
/* 0x688 */ dCcD_Cyl mStts3;
|
||||
/* 0x688 */ dCcD_Cyl mCyl2;
|
||||
/* 0x7B8 */ u8 m7B8[0x7C0 - 0x7B8];
|
||||
|
||||
static const char M_arcname[6];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
+324
-18
@@ -4,59 +4,365 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_zouK.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "f_op/f_op_camera.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/d_kankyo_rain.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
namespace daObjZouk {
|
||||
namespace {
|
||||
static const Attr_c L_attr = {
|
||||
288.0f, 1200.0f, 530.0f,
|
||||
418.0f, 0.0f, 500.0f,
|
||||
26.0f, 235.0f, 1323.0f,
|
||||
0.0f, 1003.0f, 305.0f,
|
||||
};
|
||||
|
||||
inline const Attr_c & attr() { return L_attr; }
|
||||
}
|
||||
|
||||
static const dCcD_SrcCyl M_cyl_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ AT_TYPE_ALL & ~(AT_TYPE_LIGHT | AT_TYPE_UNK400000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK20000 | AT_TYPE_WATER),
|
||||
/* SrcObjTg SPrm */ 0x0F,
|
||||
/* SrcObjCo SPrm */ 0x79,
|
||||
/* SrcGObjAt Se */ 0,
|
||||
/* SrcGObjAt HitMark */ 0,
|
||||
/* SrcGObjAt Spl */ 0,
|
||||
/* SrcGObjAt Mtrl */ 0,
|
||||
/* SrcGObjAt GFlag */ 0,
|
||||
/* SrcGObjTg Se */ 0,
|
||||
/* SrcGObjTg HitMark */ 0,
|
||||
/* SrcGObjTg Spl */ 0,
|
||||
/* SrcGObjTg Mtrl */ 0,
|
||||
/* SrcGObjTg GFlag */ 0x03,
|
||||
/* SrcGObjCo GFlag */ 0,
|
||||
},
|
||||
// cM3dGCylS
|
||||
{
|
||||
/* Center */ 0.0f, 0.0f, 0.0f,
|
||||
/* Radius */ 100.0f,
|
||||
/* Height */ 200.0f,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const char daObjZouk::Act_c::M_arcname[6] = "VzouK";
|
||||
|
||||
/* 00000078-0000009C .text solidHeapCB__Q29daObjZouk5Act_cFP10fopAc_ac_c */
|
||||
void daObjZouk::Act_c::solidHeapCB(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daObjZouk::Act_c::solidHeapCB(fopAc_ac_c* i_this) {
|
||||
return ((Act_c*)i_this)->create_heap();
|
||||
}
|
||||
|
||||
/* 0000009C-00000468 .text create_heap__Q29daObjZouk5Act_cFv */
|
||||
void daObjZouk::Act_c::create_heap() {
|
||||
/* Nonmatching */
|
||||
bool daObjZouk::Act_c::create_heap() {
|
||||
J3DModelData* mdl_data = (J3DModelData*)dComIfG_getObjectRes(M_arcname, 0x08);
|
||||
JUT_ASSERT(0x171, mdl_data != 0);
|
||||
M_bck_data = (J3DAnmTransformKey*)dComIfG_getObjectRes(M_arcname, 0x05);
|
||||
JUT_ASSERT(0x175, M_bck_data != 0);
|
||||
if (mdl_data != NULL && M_bck_data != NULL) {
|
||||
M_anm = new mDoExt_McaMorf(mdl_data, NULL, NULL, M_bck_data, J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1, 1, NULL, 0, 0x11020203);
|
||||
}
|
||||
JUT_ASSERT(0x183, M_anm != 0);
|
||||
if (M_anm != NULL) {
|
||||
if (dComIfGs_isCollect(0, 1)) {
|
||||
M_anm->setPlaySpeed(0.0f);
|
||||
M_anm->setFrame(M_bck_data->getFrameMax() - 1.0f);
|
||||
} else {
|
||||
M_anm->setPlaySpeed(0.0f);
|
||||
M_anm->setFrame(0.0f);
|
||||
}
|
||||
}
|
||||
set_mtx();
|
||||
|
||||
cBgD_t* bgw_data_before = (cBgD_t*)dComIfG_getObjectRes(M_arcname, 0x0B);
|
||||
JUT_ASSERT(0x196, bgw_data_before != 0);
|
||||
if (bgw_data_before != NULL) {
|
||||
mBgBefore = new dBgW();
|
||||
if (mBgBefore != NULL) {
|
||||
if (mBgBefore->Set(bgw_data_before, dBgW::MOVE_BG_e, &mBgMtx) == 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
cBgD_t* bgw_data_after = (cBgD_t*)dComIfG_getObjectRes(M_arcname, 0x0C);
|
||||
JUT_ASSERT(0x1a4, bgw_data_after != 0);
|
||||
if (bgw_data_after != NULL) {
|
||||
mBgAfter = new dBgW();
|
||||
if (mBgAfter != NULL) {
|
||||
if (mBgAfter->Set(bgw_data_after, dBgW::MOVE_BG_e, &mBgMtx) == 1)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool ret = false;
|
||||
if (mdl_data != NULL && M_bck_data != NULL && M_anm != NULL && mBgBefore != NULL && mBgAfter != NULL)
|
||||
ret = true;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 00000468-00000724 .text _create__Q29daObjZouk5Act_cFv */
|
||||
s32 daObjZouk::Act_c::_create() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetupActor(this, Act_c);
|
||||
|
||||
s32 ret = dComIfG_resLoad(&mPhs, M_arcname);
|
||||
|
||||
if (ret == cPhs_COMPLEATE_e) {
|
||||
if (fopAcM_entrySolidHeap(this, solidHeapCB, 0x0)) {
|
||||
fopAcM_SetMtx(this, M_anm->getModel()->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox(this, -1000.0f, -0.0f, -1000.0f, 1000.0f, 2800.0f, 1000.0f);
|
||||
cXyz gndPos(current.pos.x, current.pos.y + 100.0f, current.pos.z);
|
||||
mGndChk.SetPos(&gndPos);
|
||||
mGndChk.SetActorPid(fopAcM_GetID(this));
|
||||
mGndY = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
|
||||
mStts0.Init(0xFF, 0xFF, this);
|
||||
mCyl0.Set(M_cyl_src);
|
||||
mCyl0.SetStts(&mStts0);
|
||||
mCyl0.SetTgVec((cXyz&)cXyz::Zero);
|
||||
mCyl0.OnTgNoHitMark();
|
||||
|
||||
mStts1.Init(0xFF, 0xFF, this);
|
||||
mCyl1.Set(M_cyl_src);
|
||||
mCyl1.SetStts(&mStts1);
|
||||
mCyl1.SetTgVec((cXyz&)cXyz::Zero);
|
||||
mCyl1.OnTgNoHitMark();
|
||||
|
||||
mStts2.Init(0xFF, 0xFF, this);
|
||||
mCyl2.Set(M_cyl_src);
|
||||
mCyl2.SetStts(&mStts2);
|
||||
mCyl2.SetTgVec((cXyz&)cXyz::Zero);
|
||||
mCyl2.OnTgNoHitMark();
|
||||
|
||||
field_0x294 = 0;
|
||||
field_0x298 = 0;
|
||||
|
||||
s32 arg0 = param_get_arg0();
|
||||
if (arg0 == 0) {
|
||||
if (dComIfGs_isCollect(0, 1)) {
|
||||
if (mBgAfter != NULL) {
|
||||
dComIfG_Bgsp()->Regist(mBgAfter, this);
|
||||
mBgAfter->SetCrrFunc(NULL);
|
||||
mBgMode = 1;
|
||||
}
|
||||
} else {
|
||||
if (mBgBefore != NULL) {
|
||||
dComIfG_Bgsp()->Regist(mBgBefore, this);
|
||||
mBgBefore->SetCrrFunc(NULL);
|
||||
mBgMode = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 00001094-00001164 .text _delete__Q29daObjZouk5Act_cFv */
|
||||
BOOL daObjZouk::Act_c::_delete() {
|
||||
/* Nonmatching */
|
||||
bool daObjZouk::Act_c::_delete() {
|
||||
if (heap != NULL) {
|
||||
if (mBgBefore != NULL && mBgBefore->ChkUsed())
|
||||
dComIfG_Bgsp()->Release(mBgBefore);
|
||||
if (mBgAfter != NULL && mBgAfter->ChkUsed())
|
||||
dComIfG_Bgsp()->Release(mBgAfter);
|
||||
}
|
||||
dComIfG_resDelete(&mPhs, M_arcname);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00001164-0000123C .text set_mtx__Q29daObjZouk5Act_cFv */
|
||||
void daObjZouk::Act_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
cXyz trans(0.0f, 0.0f, 0.0f);
|
||||
mDoMtx_stack_c::transS(trans);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), mBgMtx);
|
||||
M_anm->getModel()->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
||||
M_anm->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), mMtx);
|
||||
}
|
||||
|
||||
/* 0000123C-00001240 .text texture_scroll__Q29daObjZouk5Act_cFv */
|
||||
void daObjZouk::Act_c::texture_scroll() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 00001240-00001270 .text play_stop_joint_anime__Q29daObjZouk5Act_cFv */
|
||||
void daObjZouk::Act_c::play_stop_joint_anime() {
|
||||
/* Nonmatching */
|
||||
M_anm->play(NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* 00001270-000012F0 .text jokai_demo__Q29daObjZouk5Act_cFv */
|
||||
void daObjZouk::Act_c::jokai_demo() {
|
||||
/* Nonmatching */
|
||||
BOOL daObjZouk::Act_c::jokai_demo() {
|
||||
if (dComIfGp_demo_getActor(mDemoActorId) != NULL) {
|
||||
dDemo_setDemoData(this, 0x6a, M_anm, "VzouK", 0, 0, 0, 0);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* 000012F0-00001510 .text _execute__Q29daObjZouk5Act_cFv */
|
||||
BOOL daObjZouk::Act_c::_execute() {
|
||||
bool daObjZouk::Act_c::_execute() {
|
||||
/* Nonmatching */
|
||||
set_mtx();
|
||||
texture_scroll();
|
||||
fopAcM_rollPlayerCrash(this, 288.0f, 0x0D);
|
||||
if (!jokai_demo())
|
||||
play_stop_joint_anime();
|
||||
if (param_get_arg0() == 0) {
|
||||
dBgS* bgsp = dComIfG_Bgsp();
|
||||
if (dComIfGp_event_runCheck()) {
|
||||
if (mBgBefore != NULL && mBgAfter != NULL) {
|
||||
if (mBgAfter->ChkUsed())
|
||||
bgsp->Release(mBgAfter);
|
||||
if (!mBgBefore->ChkUsed()) {
|
||||
bgsp->Regist(mBgBefore, this);
|
||||
mBgBefore->SetCrrFunc(NULL);
|
||||
mBgMode = 0;
|
||||
}
|
||||
|
||||
if (mBgBefore->ChkUsed())
|
||||
mBgBefore->Move();
|
||||
}
|
||||
} else {
|
||||
if (mBgMode == 0 && dComIfGs_isCollect(0, 1) && mBgBefore != NULL && mBgAfter != NULL) {
|
||||
if (mBgBefore->ChkUsed())
|
||||
bgsp->Release(mBgBefore);
|
||||
bgsp->Regist(mBgAfter, this);
|
||||
mBgAfter->SetCrrFunc(NULL);
|
||||
mBgMode = 1;
|
||||
}
|
||||
|
||||
if (mBgMode == 0) {
|
||||
if (mBgBefore != NULL)
|
||||
mBgBefore->Move();
|
||||
} else {
|
||||
if (mBgAfter != NULL)
|
||||
mBgAfter->Move();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void dummy() {
|
||||
const f32 floats[] = {
|
||||
1200.0f, 500.0f, 26.0f,
|
||||
530.0f, 418.0f, 1003.0f,
|
||||
305.0f, 235.0f, 1323.0f,
|
||||
};
|
||||
}
|
||||
|
||||
/* 00001510-000015F0 .text _draw__Q29daObjZouk5Act_cFv */
|
||||
BOOL daObjZouk::Act_c::_draw() {
|
||||
/* Nonmatching */
|
||||
bool daObjZouk::Act_c::_draw() {
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &mTevStr);
|
||||
dComIfGd_setListBG();
|
||||
g_env_light.setLightTevColorType(M_anm->getModel(), &mTevStr);
|
||||
setEffectMtx(&mEyePos, 0.5f);
|
||||
M_anm->updateDL();
|
||||
dComIfGd_setList();
|
||||
dComIfGd_setSimpleShadow2(¤t.pos, mGndY, 388.0f, mGndChk, shape_angle.y, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
||||
return true;
|
||||
}
|
||||
|
||||
camera_class * dCam_getCamera();
|
||||
|
||||
/* 000015F0-00001804 .text setEffectMtx__Q29daObjZouk5Act_cFPC4cXyzf */
|
||||
void daObjZouk::Act_c::setEffectMtx(const cXyz*, float) {
|
||||
/* Nonmatching */
|
||||
void daObjZouk::Act_c::setEffectMtx(const cXyz* pos, f32 scale) {
|
||||
static Mtx mtx_adj = {
|
||||
0.5f, 0.0f, 0.0f, 0.5f,
|
||||
0.0f, -0.5f, 0.0f, 0.5f,
|
||||
0.0f, 0.0f, 1.0f, 0.0f,
|
||||
};
|
||||
|
||||
f32 inv = 1.0f / scale;
|
||||
camera_class * camera = dCam_getCamera();
|
||||
cXyz lookDir = *pos - camera->mLookat.mEye;
|
||||
cXyz lightDir;
|
||||
cXyz refl;
|
||||
|
||||
dKyr_get_vectle_calc(&mTevStr.mLightPosWorld, (cXyz*)pos, &lightDir);
|
||||
C_VECHalfAngle(&lookDir, &lightDir, &refl);
|
||||
Mtx lookatMtx;
|
||||
C_MTXLookAt(lookatMtx, &cXyz::Zero, &cXyz::BaseY, &refl);
|
||||
mDoMtx_stack_c::scaleS(inv, inv, 1.0f);
|
||||
mDoMtx_stack_c::concat(mtx_adj);
|
||||
mDoMtx_stack_c::concat(lookatMtx);
|
||||
mDoMtx_stack_c::get()[0][3] = 0.0f;
|
||||
mDoMtx_stack_c::get()[1][3] = 0.0f;
|
||||
mDoMtx_stack_c::get()[2][3] = 0.0f;
|
||||
|
||||
J3DModelData* modelData = M_anm->getModel()->getModelData();
|
||||
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
|
||||
J3DMaterial* mat = modelData->getMaterialNodePointer(i);
|
||||
for (u32 j = 0; j < 8; j++) {
|
||||
J3DTexMtx* texMtx = mat->getTexMtx(j);
|
||||
if (texMtx != NULL && texMtx->getTexMtxInfo().mInfo == 11) {
|
||||
texMtx->getTexMtxInfo().setEffectMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace daObjZouk {
|
||||
namespace {
|
||||
s32 Mthd_Create(void* i_this) {
|
||||
return ((Act_c*)i_this)->_create();
|
||||
}
|
||||
|
||||
BOOL Mthd_Delete(void* i_this) {
|
||||
return ((Act_c*)i_this)->_delete();
|
||||
}
|
||||
|
||||
BOOL Mthd_Execute(void* i_this) {
|
||||
return ((Act_c*)i_this)->_execute();
|
||||
}
|
||||
|
||||
BOOL Mthd_Draw(void* i_this) {
|
||||
return ((Act_c*)i_this)->_draw();
|
||||
}
|
||||
|
||||
BOOL Mthd_IsDelete(void* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static actor_method_class Mthd_Table = {
|
||||
(process_method_func)daObjZouk::Mthd_Create,
|
||||
(process_method_func)daObjZouk::Mthd_Delete,
|
||||
(process_method_func)daObjZouk::Mthd_Execute,
|
||||
(process_method_func)daObjZouk::Mthd_IsDelete,
|
||||
(process_method_func)daObjZouk::Mthd_Draw,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
actor_process_profile_definition g_profile_Obj_Zouk = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 7,
|
||||
/* ListPrio */ fpcPi_CURRENT_e,
|
||||
/* ProcName */ PROC_Obj_Zouk,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
|
||||
/* Size */ sizeof(daObjZouk::Act_c),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x00FA,
|
||||
/* Actor SubMtd */ &daObjZouk::Mthd_Table,
|
||||
/* Status */ fopAcStts_UNK40000_e | fopAcStts_CULL_e | fopAcStts_NOCULLEXEC_e,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_CUSTOM_e
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user