summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-10-15 14:29:12 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-10-15 14:32:29 -0400
commit8be39579f62ece80fd77dba4cf9714bea1f1d2b4 (patch)
tree011fa175c687df99297dc743f9934bf1dac08033 /src
parent7c9b59ffedcad3655f98b55898d5f980c86792d9 (diff)
dArea_c + various cleanups in passing
Diffstat (limited to 'src')
-rw-r--r--src/REL/d/t/d_t_action.cpp17
-rw-r--r--src/REL/d/t/d_t_beetle.cpp17
-rw-r--r--src/REL/d/t/d_t_gate_to_ground.cpp31
-rw-r--r--src/REL/d/t/d_t_heat_resist.cpp11
-rw-r--r--src/REL/d/t/d_t_restart_time_stone.cpp5
-rw-r--r--src/REL/d/t/d_t_scene_change.cpp9
-rw-r--r--src/REL/d/t/d_t_stream.cpp3
-rw-r--r--src/REL/d/t/d_t_sw_area.cpp53
-rw-r--r--src/REL/d/t/d_t_time_door_beam.cpp9
-rw-r--r--src/REL/d/t/d_t_touch.cpp6
-rw-r--r--src/d/d_area.cpp33
-rw-r--r--src/d/tg/d_t_alldie.cpp6
-rw-r--r--src/d/tg/d_t_event.cpp5
-rw-r--r--src/d/tg/d_t_event_f.cpp25
-rw-r--r--src/d/tg/d_t_view_clip.cpp5
15 files changed, 124 insertions, 111 deletions
diff --git a/src/REL/d/t/d_t_action.cpp b/src/REL/d/t/d_t_action.cpp
index 5ea4bf52..a3abb492 100644
--- a/src/REL/d/t/d_t_action.cpp
+++ b/src/REL/d/t/d_t_action.cpp
@@ -7,15 +7,14 @@
#include "f/f_base.h"
#include "f/f_profile_name.h"
#include "m/m_angle.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(ACTION_TAG, dTgAction_c, fProfile::ACTION_TAG, 0x20, 0, 0);
int dTgAction_c::create() {
- mEnableFlag1 = (mParams >> 6) & 0xFF;
- mEnableFlag2 = (mParams >> 14) & 0xFF;
- mType = (mParams >> 0) & 0x3F;
- matrixCreateFromPosRotYScale(mActiveMtx, mPosition, mRotation.y, mScale, nullptr, 0.f);
+ mEnableFlag1 = getFromParams(6, 0xFF);
+ mEnableFlag2 = getFromParams(14, 0xFF);
+ mType = getFromParams(0, 0x3F);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.f);
return SUCCEEDED;
}
@@ -26,14 +25,14 @@ int dTgAction_c::doDelete() {
void dTgAction_c::setActiveArea(f32 scale) {
if (mScaleIncrease < 0.1f) {
mScaleIncrease = scale;
- matrixCreateFromPosRotYScale(mActiveMtx, mPosition, mRotation.y, mScale, nullptr, mScaleIncrease);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, mScaleIncrease);
}
}
void dTgAction_c::resetActiveArea() {
if (mScaleIncrease > 0.f) {
mScaleIncrease = 0.f;
- matrixCreateFromPosRotYScale(mActiveMtx, mPosition, mRotation.y, mScale, nullptr, 0.f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.f);
field_0x134 = 0;
}
}
@@ -51,7 +50,7 @@ int dTgAction_c::actorExecute() {
break;
}
if (pObj->mProfileName == fProfile::BOMB) {
- if (checkAreaBox(mActiveMtx, pObj->getPosition())) {
+ if (mArea.checkAreaBox(pObj->getPosition())) {
reinterpret_cast<dAcBomb_c *>(pObj)->setFlag(dAcBomb_c::FLAG_0x20000000);
}
}
@@ -59,7 +58,7 @@ int dTgAction_c::actorExecute() {
}
// Check For Player Within Area
- if (enabled && checkAreaBox(mActiveMtx, player->getPosition())) {
+ if (enabled && mArea.checkAreaBox(player->getPosition())) {
if (mType == FORCE_FADE_RESTART) {
player->onFlags_0x358(0x10000000);
setActiveArea(50.f);
diff --git a/src/REL/d/t/d_t_beetle.cpp b/src/REL/d/t/d_t_beetle.cpp
index 9ba5b33d..0e49a08f 100644
--- a/src/REL/d/t/d_t_beetle.cpp
+++ b/src/REL/d/t/d_t_beetle.cpp
@@ -5,7 +5,6 @@
#include "d/a/obj/d_a_obj_boomerang.h"
#include "d/d_sc_game.h"
#include "d/flag/sceneflag_manager.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/time_area_mgr.h"
SPECIAL_ACTOR_PROFILE(BEETLE_TAG, dTgBeetle_c, fProfile::BEETLE_TAG, 0x297, 0, 0);
@@ -14,7 +13,7 @@ extern const f32 unused_ = 0.0f;
int dTgBeetle_c::create() {
if (dScGame_c::currentSpawnInfo.stageName == "F103") { // flooded faron woods
- if (mActorSubtype) {
+ if (mActorSubtype != 0) {
mScale *= 0.01f;
}
// Haven't verfied but I think CO_TEST is an invisible sphere created around leaves
@@ -23,7 +22,7 @@ int dTgBeetle_c::create() {
return FAILED;
} else {
- if (!mActorSubtype) { // BtlTg
+ if (mActorSubtype == 0) { // BtlTg
mZoneType = getFromParams(0, 0xF);
mZoneShape = getFromParams(4, 0x3);
mUnknown = getFromParams(6, 0xFF);
@@ -39,7 +38,7 @@ int dTgBeetle_c::create() {
mZoneShape = SphereShape;
}
}
- matrixCreateFromPosRotYScale(mMatrix1, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
}
@@ -56,20 +55,18 @@ int dTgBeetle_c::actorExecute() {
}
if (!SceneflagManager::sInstance->checkBoolFlag(mRoomID, mBeetleFlag) || mActorSubtype) {
- dAcBoomerang_c *beetlePtr =
- (dAcBoomerang_c *)dAcPy_c::GetLink()
- ->getBeetleInFlight(); // boomerang pointer cast required because function currently returns void*
+ dAcBoomerang_c *beetlePtr = static_cast<dAcBoomerang_c *>(dAcPy_c::GetLink()->getBeetleInFlight());
if (mZoneShape == RectangularPrismShape) { // rectangular prism
- if (beetlePtr && checkAreaBox(mMatrix1, beetlePtr->mPosition)) {
+ if (beetlePtr && mArea.checkAreaBox(beetlePtr->mPosition)) {
updateBeetle(*beetlePtr);
}
} else if (mZoneShape == CylinderShape) { // cylinder
- if (beetlePtr && isWithinCylinder((beetlePtr->mPosition))) {
+ if (beetlePtr && isWithinCylinder(beetlePtr->mPosition)) {
updateBeetle(*beetlePtr);
}
} else if (mZoneShape == SphereShape) { // sphere
- if (beetlePtr && isWithinSphere((beetlePtr->mPosition))) {
+ if (beetlePtr && isWithinSphere(beetlePtr->mPosition)) {
updateBeetle(*beetlePtr);
}
}
diff --git a/src/REL/d/t/d_t_gate_to_ground.cpp b/src/REL/d/t/d_t_gate_to_ground.cpp
index 4f0b47e1..26d679ea 100644
--- a/src/REL/d/t/d_t_gate_to_ground.cpp
+++ b/src/REL/d/t/d_t_gate_to_ground.cpp
@@ -7,15 +7,14 @@
#include "d/flag/storyflag_manager.h"
#include "f/f_base.h"
#include "toBeSorted/actor_event.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/event.h"
SPECIAL_ACTOR_PROFILE(GATE2GND_TAG, dTgGateToGround_c, fProfile::GATE2GND_TAG, 0x22, 0, 0);
int dTgGateToGround_c::create() {
- matrixCreateFromPosRotYScale(matrix, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
- delayFrames = 0;
+ mDelayFrameCount = 0;
union {
u32 val;
@@ -26,9 +25,9 @@ int dTgGateToGround_c::create() {
};
} v;
v.val = mParams;
- params_FF_FF_00_00 = v.a;
- params_00_00_FF_00 = v.b;
- params_00_00_00_FF = v.c;
+ mStoryflag = v.a;
+ field_0x182 = v.b;
+ mCameraID = v.c;
return SUCCEEDED;
}
@@ -38,31 +37,29 @@ int dTgGateToGround_c::doDelete() {
}
int dTgGateToGround_c::actorExecute() {
- dAcPy_c *player;
-
- if (params_FF_FF_00_00 != -1 && StoryflagManager::sInstance->getCounterOrFlag(params_FF_FF_00_00) == 0) {
+ if (mStoryflag != -1 && StoryflagManager::sInstance->getCounterOrFlag(mStoryflag) == 0) {
return SUCCEEDED;
}
- player = dAcPy_c::LINK;
+ dAcPy_c *player = dAcPy_c::GetLinkM();
- if (checkAreaBox(matrix, player->mPosition)) {
+ if (mArea.checkAreaBox(player->mPosition)) {
if (player->getRidingActorType() != dAcPy_c::RIDING_LOFTWING) {
- if (delayFrames > 15) {
+ if (mDelayFrameCount > 15) {
Event e("CloudHole", 100, 0, nullptr, nullptr);
mEventRelated.scheduleEvent(e, 0);
} else {
- delayFrames++;
+ mDelayFrameCount++;
}
} else {
- if (params_00_00_00_FF != -1) {
+ if (mCameraID != -1) {
// TODO Cast is maybe fake but I can't get overrideCam to match otherwise
- dScGame_c::getCamera(0)->getGameCam1()->overrideCam(params_00_00_00_FF, 0, (u16)mRoomID, false);
+ dScGame_c::getCamera(0)->getGameCam1()->overrideCam(mCameraID, 0, (u16)mRoomID, false);
}
- delayFrames = 0;
+ mDelayFrameCount = 0;
}
} else {
- delayFrames = 0;
+ mDelayFrameCount = 0;
}
return SUCCEEDED;
diff --git a/src/REL/d/t/d_t_heat_resist.cpp b/src/REL/d/t/d_t_heat_resist.cpp
index 045cce17..2bdc802d 100644
--- a/src/REL/d/t/d_t_heat_resist.cpp
+++ b/src/REL/d/t/d_t_heat_resist.cpp
@@ -2,14 +2,13 @@
#include "d/a/d_a_player.h"
#include "f/f_base.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(TAG_HEAT_RESIST, dTgHeatResist_c, fProfile::TAG_HEAT_RESIST, 0x223, 0, 4);
int dTgHeatResist_c::create() {
- mInverted = static_cast<u8>(mParams & 0x3);
+ mInverted = getFromParams(0, 0x3);
- matrixCreateFromPosRotYScale(matrix, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
@@ -18,14 +17,14 @@ int dTgHeatResist_c::doDelete() {
}
int dTgHeatResist_c::actorExecute() {
- dAcPy_c *player = dAcPy_c::LINK;
+ dAcPy_c *player = dAcPy_c::GetLinkM();
if (mInverted == 1) {
- if (!checkAreaBox(matrix, player->mPosition)) {
+ if (!mArea.checkAreaBox(player->mPosition)) {
player->onForceOrPreventActionFlags(0x8000000);
}
} else {
- if (checkAreaBox(matrix, player->mPosition)) {
+ if (mArea.checkAreaBox(player->mPosition)) {
player->onForceOrPreventActionFlags(0x8000000);
}
}
diff --git a/src/REL/d/t/d_t_restart_time_stone.cpp b/src/REL/d/t/d_t_restart_time_stone.cpp
index 118f4986..94e1c1f4 100644
--- a/src/REL/d/t/d_t_restart_time_stone.cpp
+++ b/src/REL/d/t/d_t_restart_time_stone.cpp
@@ -1,16 +1,15 @@
#include "d/t/d_t_restart_time_stone.h"
#include "f/f_base.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/d_path.h"
SPECIAL_ACTOR_PROFILE(TAG_RESTART_TIME_STONE, dTgRestartTimeStone_c, fProfile::TAG_RESTART_TIME_STONE, 0x29A, 0, 0);
int dTgRestartTimeStone_c::create() {
- matrixCreateFromPosRotYScale(mMtx, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
ActorOnRail3 rail;
- u8 pathIdx = mParams & 0xFF;
+ u8 pathIdx = getFromParams(0, 0xFF);
if (pathIdx != 0xFF) {
rail.init(pathIdx, mRoomID, 0, 0, false);
mPathStartPos.copyFrom(rail.getPath().getPoint(0));
diff --git a/src/REL/d/t/d_t_scene_change.cpp b/src/REL/d/t/d_t_scene_change.cpp
index 972d2406..35c05fa4 100644
--- a/src/REL/d/t/d_t_scene_change.cpp
+++ b/src/REL/d/t/d_t_scene_change.cpp
@@ -10,7 +10,6 @@
#include "f/f_profile_name.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/d_path.h"
#include "toBeSorted/event.h"
#include "toBeSorted/event_manager.h"
@@ -31,7 +30,7 @@ int dTgSceneChange_c::create() {
mEnableSceneflag = getFromParams(24, 0xFF);
mEnableStoryflag = (mRotation.x >> 0) & 0x7FF;
- field_0x134 = ((mRotation.x >> 11) & 0x3) == 1;
+ mbAreaCyl = ((mRotation.x >> 11) & 0x3) == 1;
mRotation.x = 0;
mDisableStoryflag = mRotation.z & 0x7FF;
@@ -39,7 +38,7 @@ int dTgSceneChange_c::create() {
mRotation.z = 0;
- matrixCreateFromPosRotYScale(mArea, mPosition, mRotation.y, mScale, nullptr, 0.f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.f);
return SUCCEEDED;
}
@@ -71,8 +70,8 @@ int dTgSceneChange_c::actorExecute() {
}
dAcPy_c *pPlayer = dAcPy_c::GetLinkM();
- if ((field_0x134 && checkAreaCyl(mArea, pPlayer->mPosition)) ||
- (!field_0x134 && checkAreaBox(mArea, pPlayer->mPosition))) {
+ if ((mbAreaCyl && mArea.checkAreaCyl(pPlayer->mPosition)) ||
+ (!mbAreaCyl && mArea.checkAreaBox(pPlayer->mPosition))) {
if (!(field_0x136 && checkScrapper())) {
pPlayer->triggerExitRelated(mSceneLink, mPathId, mSceneType);
}
diff --git a/src/REL/d/t/d_t_stream.cpp b/src/REL/d/t/d_t_stream.cpp
index 80990f61..5d4d0e92 100644
--- a/src/REL/d/t/d_t_stream.cpp
+++ b/src/REL/d/t/d_t_stream.cpp
@@ -3,7 +3,6 @@
#include "d/a/d_a_base.h"
#include "f/f_base.h"
#include "f/f_list_mg.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(TAG_STREAM, dTgStream_c, fProfile::TAG_STREAM, 0x29D, 0, 0);
@@ -47,7 +46,7 @@ int dTgStream_c::create() {
addToList(sStreamList);
}
- matrixCreateFromPosRotYScale(mArea, mPosition, mRotation.y, mScale, nullptr, 0.f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.f);
return SUCCEEDED;
}
diff --git a/src/REL/d/t/d_t_sw_area.cpp b/src/REL/d/t/d_t_sw_area.cpp
index cc9cbee1..da503d9f 100644
--- a/src/REL/d/t/d_t_sw_area.cpp
+++ b/src/REL/d/t/d_t_sw_area.cpp
@@ -3,21 +3,20 @@
#include "d/a/d_a_player.h"
#include "d/flag/sceneflag_manager.h"
#include "d/flag/storyflag_manager.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(SW_AREA_TAG, dTgSwArea_c, fProfile::SW_AREA_TAG, 0x292, 0, 0);
int dTgSwArea_c::create() {
- setSceneflag = getSetSceneflag();
- unsetSceneflag = getUnsetSceneflag();
- isTemporary = !getIsPersistent();
+ mSetSceneflag = getFromParams(0, 0xFF);
+ mUnsetSceneflag = getFromParams(8, 0xFF);
+ mbTemporary = !getFromParams(16, 0x1);
- setStoryflag = getSetStoryflag();
- unsetStoryflag = getUnsetStoryflag();
+ mSetStoryflag = mRotation.x & 0x7FF;
+ mUnsetStoryflag = mRotation.z & 0x7FF;
mRotation.x = 0;
mRotation.z = 0;
- matrixCreateFromPosRotYScale(area, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
@@ -32,38 +31,38 @@ bool isValidStoryFlag(u16 storyflag) {
}
int dTgSwArea_c::actorExecute() {
- if (checkAreaBox(area, dAcPy_c::LINK->mPosition)) {
- SceneflagManager::sInstance->setFlag(mRoomID, setSceneflag);
- SceneflagManager::sInstance->unsetFlag(mRoomID, unsetSceneflag);
+ if (mArea.checkAreaBox(dAcPy_c::GetLink()->mPosition)) {
+ SceneflagManager::sInstance->setFlag(mRoomID, mSetSceneflag);
+ SceneflagManager::sInstance->unsetFlag(mRoomID, mUnsetSceneflag);
- if (isValidStoryFlag(setStoryflag)) {
- StoryflagManager::sInstance->setFlag(setStoryflag);
+ if (isValidStoryFlag(mSetStoryflag)) {
+ StoryflagManager::sInstance->setFlag(mSetStoryflag);
}
- if (isValidStoryFlag(unsetStoryflag)) {
- StoryflagManager::sInstance->unsetFlag(unsetStoryflag);
+ if (isValidStoryFlag(mUnsetStoryflag)) {
+ StoryflagManager::sInstance->unsetFlag(mUnsetStoryflag);
}
- if (scale < 1.0f) {
- scale = 50.0f;
- matrixCreateFromPosRotYScale(area, mPosition, mRotation.y, mScale, nullptr, scale);
+ if (mScaleModify < 1.0f) {
+ mScaleModify = 50.0f;
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, mScaleModify);
}
} else {
- if (scale > 1.0f) {
- scale = 0.0f;
- matrixCreateFromPosRotYScale(area, mPosition, mRotation.y, mScale, nullptr, scale);
+ if (mScaleModify > 1.0f) {
+ mScaleModify = 0.0f;
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, mScaleModify);
}
- if (isTemporary) {
- SceneflagManager::sInstance->unsetFlag(mRoomID, setSceneflag);
- SceneflagManager::sInstance->setFlag(mRoomID, unsetSceneflag);
+ if (mbTemporary) {
+ SceneflagManager::sInstance->unsetFlag(mRoomID, mSetSceneflag);
+ SceneflagManager::sInstance->setFlag(mRoomID, mUnsetSceneflag);
- if (isValidStoryFlag(setStoryflag)) {
- StoryflagManager::sInstance->unsetFlag(setStoryflag);
+ if (isValidStoryFlag(mSetStoryflag)) {
+ StoryflagManager::sInstance->unsetFlag(mSetStoryflag);
}
- if (isValidStoryFlag(unsetStoryflag)) {
- StoryflagManager::sInstance->setFlag(unsetStoryflag);
+ if (isValidStoryFlag(mUnsetStoryflag)) {
+ StoryflagManager::sInstance->setFlag(mUnsetStoryflag);
}
}
}
diff --git a/src/REL/d/t/d_t_time_door_beam.cpp b/src/REL/d/t/d_t_time_door_beam.cpp
index bc9b2aa6..a33aa523 100644
--- a/src/REL/d/t/d_t_time_door_beam.cpp
+++ b/src/REL/d/t/d_t_time_door_beam.cpp
@@ -1,12 +1,11 @@
#include "d/t/d_t_time_door_beam.h"
#include "d/a/d_a_player.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(TAG_TIME_DOOR_BEAM, dTgTimeDoorBeam_c, fProfile::TAG_TIME_DOOR_BEAM, 0x252, 0, 0);
int dTgTimeDoorBeam_c::create() {
- matrixCreateFromPosRotYScale(matrix, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
@@ -22,10 +21,10 @@ int dTgTimeDoorBeam_c::draw() {
return SUCCEEDED;
}
-bool dTgTimeDoorBeam_c::checkPlayerPosInMtx() {
- if (dAcPy_c::LINK == nullptr) {
+bool dTgTimeDoorBeam_c::isPlayerInArea() {
+ if (dAcPy_c::GetLink() == nullptr) {
return false;
}
- return checkAreaBox(matrix, dAcPy_c::LINK->mPosition);
+ return mArea.checkAreaBox(dAcPy_c::GetLink()->mPosition);
}
diff --git a/src/REL/d/t/d_t_touch.cpp b/src/REL/d/t/d_t_touch.cpp
index 99b46ad2..208564fc 100644
--- a/src/REL/d/t/d_t_touch.cpp
+++ b/src/REL/d/t/d_t_touch.cpp
@@ -1,9 +1,7 @@
#include "d/t/d_t_touch.h"
-#include "c/c_math.h"
#include "d/flag/sceneflag_manager.h"
#include "s/s_Math.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(TOUCH_TAG, dTgTouchTag, fProfile::TOUCH_TAG, 0x028E, 0, 0);
@@ -18,7 +16,7 @@ int dTgTouchTag::create() {
mActivatorIndex = !(getActivatorIndex() == 0xF) ? getActivatorIndex() : 0;
mZoneFlag = getZoneFlag();
mChkFlag = getChkFlag();
- matrixCreateFromPosRotYScale(mAreaOfEffect, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mAreaOfEffect.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
mStateMgr.changeState(StateID_Wait);
return SUCCEEDED;
}
@@ -48,7 +46,7 @@ void dTgTouchTag::executeState_Wait() {
dAcBase_c *actor = static_cast<dAcBase_c *>(fManager_c::searchBaseByProfName(ACTIVATORS[mActivatorIndex], nullptr));
while (actor != nullptr) {
- if (actor->mRoomID == mRoomID && checkAreaBox(mAreaOfEffect, actor->mPosition)) {
+ if (actor->mRoomID == mRoomID && mAreaOfEffect.checkAreaBox(actor->mPosition)) {
mFlagTimer = 5;
if (mZoneFlag != 0xFF) {
SceneflagManager::sInstance->setFlag(mRoomID, mZoneFlag);
diff --git a/src/d/d_area.cpp b/src/d/d_area.cpp
new file mode 100644
index 00000000..6e9929fa
--- /dev/null
+++ b/src/d/d_area.cpp
@@ -0,0 +1,33 @@
+#include "d/d_area.h"
+
+#include "common.h"
+#include "m/m_mtx.h"
+#include "m/m_vec.h"
+#include "rvl/MTX/mtx.h"
+
+void dArea_c::set(const mVec3_c &position, const mAng rotY, const mVec3_c &scale, mMtx_c *pSrc, f32 scaleTerm) {
+ mMtx_c src;
+ if (pSrc == nullptr) {
+ pSrc = &src;
+ }
+ pSrc->transS(position.x, position.y + scale.y * 0.5f, position.z);
+ pSrc->YrotM(rotY);
+ pSrc->scaleM(scale.x + scaleTerm, scale.y + scaleTerm, scale.z + scaleTerm);
+ mArea.copyFrom(*pSrc);
+ MTXInverse(mArea, mArea);
+}
+
+bool dArea_c::checkAreaBox(const mVec3_c &position) {
+ mVec3_c pos;
+ mArea.multVec(position, pos);
+ return (-0.5f <= pos.x && pos.x <= 0.5f) && //
+ (-0.5f <= pos.y && pos.y <= 0.5f) && //
+ (-0.5f <= pos.z && pos.z <= 0.5f);
+}
+
+bool dArea_c::checkAreaCyl(const mVec3_c &position) {
+ mVec3_c pos;
+ mArea.multVec(position, pos);
+ return (-0.5f <= pos.y && pos.y <= 0.5f) && //
+ pos.squareMagXZ() <= 1.0f;
+}
diff --git a/src/d/tg/d_t_alldie.cpp b/src/d/tg/d_t_alldie.cpp
index a205ce09..f3bb8610 100644
--- a/src/d/tg/d_t_alldie.cpp
+++ b/src/d/tg/d_t_alldie.cpp
@@ -3,14 +3,12 @@
#include "common.h"
#include "d/a/d_a_player.h"
#include "d/a/e/d_a_en_base.h"
-#include "d/a/obj/d_a_obj_base.h"
#include "d/d_stage.h"
#include "d/flag/sceneflag_manager.h"
#include "f/f_base.h"
#include "f/f_manager.h"
#include "f/f_profile_name.h"
#include "s/s_Math.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/event_manager.h"
SPECIAL_ACTOR_PROFILE(ALLDIE_TAG, dTgAllDie_c, fProfile::ALLDIE_TAG, 0x23, 0, 4);
@@ -22,7 +20,7 @@ int dTgAllDie_c::create() {
field_0x148 = 0;
field_0x144 = getFromParams(30, 0xFF);
mRotation.x.set(0);
- matrixCreateFromPosRotYScale(mArea, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
@@ -55,7 +53,7 @@ int dTgAllDie_c::actorExecute() {
while ((pEnemy = dAcEnBase_c::GetNextEnemy(pEnemy))) {
if (pEnemy->mRoomID == mRoomID && !pEnemy->checkInteractionFlags(0x2)) {
if (pEnemy->checkProcControl(DISABLE_EXECUTE) == 0 && pEnemy->mLifecycleState != TO_BE_DELETED) {
- if (checkAreaBox(mArea, pEnemy->mPosition)) {
+ if (mArea.checkAreaBox(pEnemy->mPosition)) {
mNumEnemiesInArea++;
}
}
diff --git a/src/d/tg/d_t_event.cpp b/src/d/tg/d_t_event.cpp
index add4cac5..41091907 100644
--- a/src/d/tg/d_t_event.cpp
+++ b/src/d/tg/d_t_event.cpp
@@ -3,13 +3,12 @@
#include "d/a/d_a_player.h"
#include "d/flag/sceneflag_manager.h"
#include "f/f_base.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/event.h"
SPECIAL_ACTOR_PROFILE(EVENT_TAG, dTgEvent_c, fProfile::EVENT_TAG, 0X13, 0, 0);
int dTgEvent_c::create() {
- matrixCreateFromPosRotYScale(mMatrix, mPosition, mRotation.y, mScale, 0x0, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, 0x0, 0.0f);
mEventId = getFromParams(0, 0xFF);
mSetSceneflag = getFromParams(8, 0xFF);
mTrigSceneflag = getFromParams(16, 0xFF);
@@ -42,7 +41,7 @@ int dTgEvent_c::actorExecute() {
if (!isValidFlag(mTrigSceneflag) || checkUncommittedFlag(mTrigSceneflag)) {
if ((mSubtype != 0 && !(isValidFlag(mSetSceneflag) && checkUncommittedFlag(mSetSceneflag))) ||
(mSubtype == 0 && (isValidFlag(mSetSceneflag) && checkUncommittedFlag(mSetSceneflag)))) {
- if (checkAreaBox(mMatrix, dAcPy_c::LINK->mPosition)) {
+ if (mArea.checkAreaBox(dAcPy_c::GetLink()->mPosition)) {
Event EStack_48 = Event(mEventId, mRoomID, fun(mUnkParamFlag, 0x1), 0, 0);
mActorEvent.scheduleEvent(EStack_48, 0);
}
diff --git a/src/d/tg/d_t_event_f.cpp b/src/d/tg/d_t_event_f.cpp
index 3300eda0..17457f87 100644
--- a/src/d/tg/d_t_event_f.cpp
+++ b/src/d/tg/d_t_event_f.cpp
@@ -3,20 +3,19 @@
#include "d/a/d_a_player.h"
#include "d/flag/storyflag_manager.h"
#include "f/f_base.h"
-#include "toBeSorted/area_math.h"
SPECIAL_ACTOR_PROFILE(EVENTF_TAG, dTgEventF_c, fProfile::EVENTF_TAG, 0x14, 0, 0);
int dTgEventF_c::create() {
- matrixCreateFromPosRotYScale(mMatrix, mPosition, mRotation.y, mScale, 0x0, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, 0x0, 0.0f);
mEventId = getFromParams(0, 0xFF);
mSetStoryflag = getFromParams(8, 0x7FF);
- if ((s32)mSetStoryflag == 0x3FF) {
- mSetStoryflag = 0xFFFFFFFF;
+ if (mSetStoryflag == 0x3FF) {
+ mSetStoryflag = -1;
}
mTrigStoryflag = getFromParams(19, 0x7FF);
- if ((s32)mTrigStoryflag == 0x3FF) {
- mTrigStoryflag = 0xFFFFFFFF;
+ if (mTrigStoryflag == 0x3FF) {
+ mTrigStoryflag = -1;
}
mSubtype = getFromParams(30, 0x3);
return SUCCEEDED;
@@ -26,19 +25,19 @@ int dTgEventF_c::doDelete() {
return SUCCEEDED;
}
-int dTgEventF_c::checkStoryflagValid(u32 counterIdx) {
+int dTgEventF_c::checkStoryflagValid(s32 counterIdx) {
return StoryflagManager::sInstance->checkFlagValid(counterIdx);
}
-bool dTgEventF_c::checkUncommitedStoryFlagValue(u32 flag) {
+bool dTgEventF_c::checkUncommitedStoryFlagValue(s32 flag) {
return StoryflagManager::sInstance->getUncommittedValue(flag);
}
-void dTgEventF_c::setStoryFlag(StoryFlags_e flag) {
+void dTgEventF_c::setStoryFlag(s32 flag) {
StoryflagManager::sInstance->setFlag(flag);
}
-void dTgEventF_c::unsetStoryFlag(StoryFlags_e flag) {
+void dTgEventF_c::unsetStoryFlag(s32 flag) {
StoryflagManager::sInstance->unsetFlag(flag);
}
@@ -46,7 +45,7 @@ int dTgEventF_c::actorExecute() {
if ((!checkStoryflagValid(mTrigStoryflag) || checkUncommitedStoryFlagValue(mTrigStoryflag))) {
if ((mSubtype != 0 && !(checkStoryflagValid(mSetStoryflag) && checkUncommitedStoryFlagValue(mSetStoryflag))) ||
(mSubtype == 0 && checkStoryflagValid(mSetStoryflag) && checkUncommitedStoryFlagValue(mSetStoryflag))) {
- if (checkAreaBox(mMatrix, dAcPy_c::LINK->mPosition)) {
+ if (mArea.checkAreaBox(dAcPy_c::GetLink()->mPosition)) {
Event EStack_48 = Event(mEventId, (int)mRoomID, 0x100001, 0, 0);
mActorEvent.scheduleEvent(EStack_48, 0);
}
@@ -58,10 +57,10 @@ int dTgEventF_c::actorExecuteInEvent() {
if (mActorEvent.isThisActorInEvent()) {
mActorEvent.advanceNext();
if (!(mSubtype == 0 || !checkStoryflagValid(mSetStoryflag) || checkUncommitedStoryFlagValue(mSetStoryflag))) {
- setStoryFlag((StoryFlags_e)mSetStoryflag);
+ setStoryFlag(mSetStoryflag);
} else if ((mSubtype == 0 && checkStoryflagValid(mSetStoryflag)) &&
checkUncommitedStoryFlagValue(mSetStoryflag)) {
- unsetStoryFlag((StoryFlags_e)mSetStoryflag);
+ unsetStoryFlag(mSetStoryflag);
}
}
return SUCCEEDED;
diff --git a/src/d/tg/d_t_view_clip.cpp b/src/d/tg/d_t_view_clip.cpp
index 30ef9cba..c88f80b1 100644
--- a/src/d/tg/d_t_view_clip.cpp
+++ b/src/d/tg/d_t_view_clip.cpp
@@ -4,7 +4,6 @@
#include "d/d_camera.h"
#include "d/d_sc_game.h"
#include "f/f_base.h"
-#include "toBeSorted/area_math.h"
#include "toBeSorted/area_utils.h"
SPECIAL_ACTOR_PROFILE(VIEW_CLIP_TAG, dTgViewClip_c, fProfile::VIEW_CLIP_TAG, 0xB, 0, 0);
@@ -19,7 +18,7 @@ int dTgViewClip_c::create() {
}
mAreaIndex = getFromParams(12, 0xFF);
- matrixCreateFromPosRotYScale(mArea, mPosition, mRotation.y, mScale, nullptr, 0.0f);
+ mArea.set(mPosition, mRotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
@@ -34,7 +33,7 @@ int dTgViewClip_c::actorExecute() {
int dTgViewClip_c::draw() {
dCamera_c *pCamera = dScGame_c::getCamera();
- if (!checkAreaBox(mArea, pCamera->getPosition())) {
+ if (!mArea.checkAreaBox(pCamera->getPosition())) {
if (mAreaIndex == 0xFF) {
return SUCCEEDED;
}