1#include "Game/AreaObj/CollisionArea.hpp"
2#include "Game/MapObj/DynamicCollisionObj.hpp"
3#include "Game/Util/JMapUtil.hpp"
4#include "Game/Util/LiveActorUtil.hpp"
5#include "Game/Util/PlayerUtil.hpp"
8DynamicCollisionObj::~DynamicCollisionObj() {
12bool AreaObj::isValid()
const {
15 if (mValid && _15 && mAwake) {
28AreaPolygon::~AreaPolygon() {
72void AreaPolygon::setMtx(MtxPtr matrix,
const TVec3f &a2,
float a3) {
78void AreaPolygon::setSurfaceAndSync(
long a1) {
86void AreaPolygon::invalidate() {
87 MR::invalidateCollisionParts(mParts);
90void AreaPolygon::validate() {
91 MR::validateCollisionParts(mParts);
94CollisionArea::CollisionArea(
int type,
const char *pName) :
AreaObj(type, pName) {
107CollisionArea::~CollisionArea() {
113 MR::connectToSceneAreaObj(
this);
122 MR::getJMapInfoArg0NoInit(rIter, &_50);
123 MR::getJMapInfoArg1NoInit(rIter, &_54);
124 MR::getJMapInfoArg2NoInit(rIter, &_5C);
125 MR::getJMapInfoArg3NoInit(rIter, &_60);
134 mPolygon->mForm = mForm;
135 mPolygon->
init(rIter);
136 MR::validateCollisionParts(mPolygon->mParts);
139 MR::invalidateCollisionParts(mPolygon->mParts);
143 mIsValid = isValid();
146void CollisionArea::movement() {
149 if (mPolygon !=
nullptr) {
150 MR::invalidateCollisionParts(mPolygon->mParts);
158 if (mPolygon !=
nullptr) {
159 MR::validateCollisionParts(mPolygon->mParts);
165 if (_54 == -1 && MR::isPlayerTeresaDisappear()) {
168 if (mPolygon !=
nullptr) {
169 MR::invalidateCollisionParts(mPolygon->mParts);
173 TVec3f playerPos = *MR::getPlayerCenterPos();
174 f32 dVar4 =
static_cast<f32
>(_5C);
177 dVar4 = MR::getPlayerHitRadius();
187 if (!hitCheck(playerPos, dVar4, &tStack60, &tStack72)) {
191 if (mPolygon !=
nullptr) {
192 MR::validateCollisionParts(mPolygon->mParts);
196 else if (!_58 && _50 == -1) {
201 tStack84.setLength(dVar4 + _40);
205 TVec3f tStack108 = playerPos;
206 tStack108.sub(tStack60);
208 tStack84 = tStack108;
209 tStack84.setLength(dVar4);
212 tStack96.add(tStack84);
214 TVec3f tStack120 = tStack96;
215 tStack120.sub(playerPos);
216 tStack84 = tStack120;
219 if (tStack84.dot(tStack72) > 0) {
220 MR::pushPlayerFromArea(tStack84);
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.