d_a_obj_utajima OK (#72)

This commit is contained in:
robojumper
2024-10-19 20:27:02 +02:00
committed by GitHub
parent b96e6ee19f
commit 01b132f934
22 changed files with 136 additions and 42 deletions
+2 -2
View File
@@ -13,8 +13,8 @@ STATE_DEFINE(dAcTWoodArea_c, Wait);
int dAcTWoodArea_c::actorCreate() {
mStateMgr.changeState(StateID_Init);
PSMTXTrans(mWorldMtx.m, position.x, position.y, position.z);
boundingBox.min = mVec3_c(-0.0f, -0.0f, -0.0f);
boundingBox.max = mVec3_c(0.0f, 0.0f, 0.0f);
boundingBox.mMin = mVec3_c(-0.0f, -0.0f, -0.0f);
boundingBox.mMax = mVec3_c(0.0f, 0.0f, 0.0f);
return SUCCEEDED;
}
+1 -1
View File
@@ -21,7 +21,7 @@ bool dAcEhb_leaf_c::createHeap() {
int dAcEhb_leaf_c::create() {
CREATE_ALLOCATOR(dAcEhb_leaf_c);
setBoundingBox(mVec3_c(-100.0f, -100.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
boundingBox.Set(mVec3_c(-100.0f, -100.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
rotation.y = cM::rndF(65535.0f);
someRot = rotation.y.mVal;
+2 -2
View File
@@ -28,7 +28,7 @@ bool dAcOappearBridge_c::createHeap() {
PLC *plc = (PLC *)getOarcFile("TongueStage", "dat/TongueStage.plc");
updateMatrix();
mModel.setLocalMtx(mWorldMtx);
TRY_CREATE(!mCollision.Set(dzb, plc, 1, &mWorldMtx, &mScale));
TRY_CREATE(!mCollision.Set(dzb, plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mCollision.Lock();
return true;
}
@@ -48,7 +48,7 @@ int dAcOappearBridge_c::create() {
mStateMgr.changeState(StateID_Wait);
mModel.setPriorityDraw(0x1C, 0x9);
setBoundingBox(mVec3_c(-3000.0f, -200.0f, -600.0f), mVec3_c(50.0f, 800.0f, 600.0f));
boundingBox.Set(mVec3_c(-3000.0f, -200.0f, -600.0f), mVec3_c(50.0f, 800.0f, 600.0f));
return SUCCEEDED;
}
+2 -2
View File
@@ -34,7 +34,7 @@ bool dAcObambooIsland_c::createHeap() {
for (int i = 0; i < 2; i++) {
mModels[i].setLocalMtx(mWorldMtx);
}
TRY_CREATE(!mCollision.Set(dzb, plc, 1, &mWorldMtx, &mScale));
TRY_CREATE(!mCollision.Set(dzb, plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mCollision.Lock();
return true;
}
@@ -45,7 +45,7 @@ int dAcObambooIsland_c::create() {
dBgS::GetInstance()->Regist(&mCollision, this);
mModels[0].setPriorityDraw(0x1C, 9);
mModels[1].setPriorityDraw(0x22, 9);
setBoundingBox(mVec3_c(-2400.0f, -1600.0f, -2300.0f), mVec3_c(2400.0f, 3900.0f, 2400.0f));
boundingBox.Set(mVec3_c(-2400.0f, -1600.0f, -2300.0f), mVec3_c(2400.0f, 3900.0f, 2400.0f));
mCullingDistance = 500000.0f;
mCollision.SetRideCallback(rideCallback);
return SUCCEEDED;
+1 -1
View File
@@ -39,7 +39,7 @@ int dAcOJunkRep_c::create() {
mStateMgr.changeState(StateID_Wait);
setBoundingBox(mVec3_c(-30.0f, -0.0f, -20.0f), mVec3_c(30.0f, 120.0f, 20.0f));
boundingBox.Set(mVec3_c(-30.0f, -0.0f, -20.0f), mVec3_c(30.0f, 120.0f, 20.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -41,7 +41,7 @@ int dAcOlavaF200_c::create() {
mModels[0].setPriorityDraw(0x1C, 9);
mModels[1].setPriorityDraw(0x22, 9);
setBoundingBox(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
boundingBox.Set(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -35,7 +35,7 @@ int dAcOmoleSoil_c::create() {
dAcBase_c::mScale.set(sHalfScale, sHalfScale, sHalfScale);
mStateMgr.changeState(StateID_Wait);
setBoundingBox(mVec3_c(-100.0f, -0.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
boundingBox.Set(mVec3_c(-100.0f, -0.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -34,7 +34,7 @@ int dAcOPoolCock_c::actorCreate() {
mStateMgr.changeState(StateID_Wait);
setBoundingBox(mVec3_c(-300.0f, -100.0f, -300.0f), mVec3_c(300.0f, 100.0f, 300.0f));
boundingBox.Set(mVec3_c(-300.0f, -100.0f, -300.0f), mVec3_c(300.0f, 100.0f, 300.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -23,7 +23,7 @@ int dAcOPumpkinLeaf_c::create() {
forwardMaxSpeed = -40.0f;
updateMatrix();
mStateMgr.changeState(StateID_Wait);
setBoundingBox(mVec3_c(-50.0f, -10.0f, -50.0f), mVec3_c(50.0f, 50.0f, 50.0f));
boundingBox.Set(mVec3_c(-50.0f, -10.0f, -50.0f), mVec3_c(50.0f, 50.0f, 50.0f));
dAcObjBase_c::create(
"PmpknBd", getRoomId(), 0, &position, &rotation, &mScale, getParams2_ignoreLower(), -1, viewclip_index
);
+1 -1
View File
@@ -20,7 +20,7 @@ int dAcOring_c::create() {
field_0x388 = getArgFromParams();
setBoundingBox(mVec3_c(-100.0f, -100.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
boundingBox.Set(mVec3_c(-100.0f, -100.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
updateMatrix();
mModel.setScale(mScale);
mModel.setLocalMtx(mWorldMtx);
+1 -1
View File
@@ -32,7 +32,7 @@ int dAcOsmoke_c::create() {
mModel.setLocalMtx(mWorldMtx);
mStateMgr.changeState(StateID_Wait);
mModel.setPriorityDraw(0x1C, 9);
setBoundingBox(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
boundingBox.Set(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -65,7 +65,7 @@ int dAcOspike_c::create() {
mCollision.Set(tmp2, tmp3);
mStateMgr.changeState(StateID_Wait);
setBoundingBox(mVec3_c(-10.0f, -250.0f, -480.0f), mVec3_c(80.0f, 260.0f, 490.0f));
boundingBox.Set(mVec3_c(-10.0f, -250.0f, -480.0f), mVec3_c(80.0f, 260.0f, 490.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -19,7 +19,7 @@ int dAcOstageCover_c::create() {
mStateMgr.changeState(StateID_Wait);
mModel.setPriorityDraw(0x1C, 9);
setBoundingBox(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
boundingBox.Set(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f));
return SUCCEEDED;
}
+1 -1
View File
@@ -26,7 +26,7 @@ int dAcOsunLight_c::create() {
mModel.setAnm(mTexAnm);
mStateMgr.changeState(StateID_Wait);
mModel.setPriorityDraw(0x1C, 9);
setBoundingBox(mVec3_c(-200.0f, -100.0f, -200.0f), mVec3_c(200.0f, 600.0f, 500.0f));
boundingBox.Set(mVec3_c(-200.0f, -100.0f, -200.0f), mVec3_c(200.0f, 600.0f, 500.0f));
return SUCCEEDED;
}
+81
View File
@@ -1,3 +1,84 @@
#include "d/a/obj/d_a_obj_utajima.h"
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/c/c_m3d_g_aab.h"
#include "toBeSorted/item_story_flag_manager.h"
#include "toBeSorted/room_manager.h"
static const char *const mMdlNames[] = {
"IslSon",
"IslSon_s",
};
SPECIAL_ACTOR_PROFILE(OBJ_UTAJIMA, dAcOutajima_c, fProfile::OBJ_UTAJIMA, 0x1D4, 0, 3);
void dAcOutajima_c::rideCallback(dBgW *bg, dAcObjBase_c *o1, dAcObjBase_c *o2) {
if (o2->isActorPlayer() && o1 != nullptr) {
if (StoryflagManager::sInstance->getCounterOrFlag(285) == 0) {
StoryflagManager::sInstance->setFlag(285);
}
}
}
bool dAcOutajima_c::createHeap() {
mRes = getOarcResFile("IslSon");
RoomManager::bindStageResToFile(&mRes);
RoomManager::bindSkyCmnToResFile(&mRes);
nw4r::g3d::ResMdl m = nullptr;
for (int i = 0; i < 2; i++) {
m = mRes.GetResMdl(mMdlNames[i]);
TRY_CREATE(mMdls[i].create(m, &heap_allocator, 0x120));
}
m = mRes.GetResMdl(mMdlNames[0]);
void *dzb = getOarcFile("IslSon", "dzb/IslSon.dzb");
void *plc = getOarcFile("IslSon", "dat/IslSon.plc");
updateMatrix();
for (int i = 0; i < 2; i++) {
mMdls[i].setLocalMtx(mWorldMtx);
}
TRY_CREATE(!mBgW.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBgW.Lock();
mMdls[0].calc(true);
nw4r::g3d::ResNode nd = m.GetResNode("SetLineGoal");
mMdls[0].getNodeWorldMtxMultVecZero(nd.GetID(), mVec);
return true;
}
int dAcOutajima_c::create() {
CREATE_ALLOCATOR(dAcOutajima_c);
dBgS::GetInstance()->Regist(&mBgW, this);
mMdls[0].setPriorityDraw(0x1C, 9);
mMdls[1].setPriorityDraw(0x22, 9);
mVec3_c min;
mVec3_c max;
mMdls[0].getBounds(&min, &max);
boundingBox.Set(min, max);
mCullingDistance = 500000.0f;
mBgW.SetRideCallback(rideCallback);
return SUCCEEDED;
}
int dAcOutajima_c::doDelete() {
return SUCCEEDED;
}
int dAcOutajima_c::actorExecute() {
return SUCCEEDED;
}
int dAcOutajima_c::draw() {
for (int i = 0; i < 2; i++) {
drawModelType1(&mMdls[i]);
}
return SUCCEEDED;
}
+1 -1
View File
@@ -28,7 +28,7 @@ int dAcObjFairy_c::create() {
mStateMgr.changeState(StateID_CureStart);
mStateMgr.changeState(StateID_Wait);
mModel.getModel().setPriorityDraw(0x7F, 0x7F);
setBoundingBox(mVec3_c(-20.0f, -200.0f, -20.0f), mVec3_c(20.0f, 20.0f, 20.0f));
boundingBox.Set(mVec3_c(-20.0f, -200.0f, -20.0f), mVec3_c(20.0f, 20.0f, 20.0f));
return SUCCEEDED;
}
+2 -2
View File
@@ -77,7 +77,7 @@ bool dAcOsw_c::createHeap() {
field_0x5B8.set(mWorldMtx);
mModel.setLocalMtx(mWorldMtx);
bool set = mCollision.Set(dbzData, plcData, 1, &field_0x5B8, &mScale);
bool set = mCollision.Set(dbzData, plcData, cBgW::MOVE_BG_e, &field_0x5B8, &mScale);
mCollision.SetCrrFunc(dBgS_MoveBGProc_TypicalRotY);
return !set;
}
@@ -101,7 +101,7 @@ int dAcOsw_c::actorCreate() {
} else {
mStateMgr.changeState(StateID_OnWait);
}
setBoundingBox(mVec3_c(-90.0f, -10.0f, -90.0f), mVec3_c(90.0f, 70.0f, 90.0f));
boundingBox.Set(mVec3_c(-90.0f, -10.0f, -90.0f), mVec3_c(90.0f, 70.0f, 90.0f));
return SUCCEEDED;
}