Files
ss/src/REL/d/t/d_t_sw_area.cpp
T
Elijah Thomas 9d68802507 d_a_e_sm (chu chu) start (#117)
* d_a_e_sm (chu chu) start

* progress, includes LightParam addition in BlurPaletteMgr

* oops - TBox Progress I guess

* dAcEsm_c::actorExecute and Particle Resource data moved

* step in symbols map

* Update blur_and_palette_manager.h

* m_angle cleanup pass

* Last explicit_zero_data Fixes #69

* add mQuat_c ctor
2025-05-18 18:24:58 -04:00

73 lines
2.0 KiB
C++

#include "d/t/d_t_sw_area.h"
#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();
setStoryflag = getSetStoryflag();
unsetStoryflag = getUnsetStoryflag();
rotation.x = 0;
rotation.z = 0;
matrixCreateFromPosRotYScale(area, position, rotation.y, mScale, nullptr, 0.0f);
return SUCCEEDED;
}
bool isValidStoryFlag(u16 storyflag) {
bool valid = false;
if (storyflag != 0 && storyflag < 0x7FF) {
valid = true;
}
return valid;
}
int dTgSwArea_c::actorExecute() {
if (checkIfVec3fInMatrix(area, dAcPy_c::LINK->position)) {
SceneflagManager::sInstance->setFlag(roomid, setSceneflag);
SceneflagManager::sInstance->unsetFlag(roomid, unsetSceneflag);
if (isValidStoryFlag(setStoryflag)) {
StoryflagManager::sInstance->setFlag(setStoryflag);
}
if (isValidStoryFlag(unsetStoryflag)) {
StoryflagManager::sInstance->unsetFlag(unsetStoryflag);
}
if (scale < 1.0f) {
scale = 50.0f;
matrixCreateFromPosRotYScale(area, position, rotation.y, mScale, nullptr, scale);
}
} else {
if (scale > 1.0f) {
scale = 0.0f;
matrixCreateFromPosRotYScale(area, position, rotation.y, mScale, nullptr, scale);
}
if (isTemporary) {
SceneflagManager::sInstance->unsetFlag(roomid, setSceneflag);
SceneflagManager::sInstance->setFlag(roomid, unsetSceneflag);
if (isValidStoryFlag(setStoryflag)) {
StoryflagManager::sInstance->unsetFlag(setStoryflag);
}
if (isValidStoryFlag(unsetStoryflag)) {
StoryflagManager::sInstance->setFlag(unsetStoryflag);
}
}
}
return SUCCEEDED;
}