1#include "Game/MapObj/MapParts.hpp"
2#include "JSystem/JMath/JMath.hpp"
3#include "math_types.hpp"
9MapParts::MapParts(
const char *pName) :
LiveActor(pName) {
14 if (MR::isConnectedWithRail(rIter)) {
18 MR::initDefaultPosNoRepeat(
this, rIter);
19 initModelAndCollision(rIter);
21 MR::initMapPartsClipping(
this, rIter, &_8C,
false);
22 MR::joinToGroupArray(
this, rIter,
"MapParts", 0x40);
26void MapParts::appear() {
28 MR::tryStartAllAnim(
this, MR::getModelResName(
this));
31s32 MapParts::getSensorNumMax()
const {
35s32 MapParts::getMoveStartSignalTime() {
39void MapParts::connectToScene() {
40 MR::connectToSceneMapParts(
this);
43void MapParts::initModelAndCollision(
const JMapInfoIter &rIter) {
45 MR::getMapPartsObjectName(name, 0x30, rIter);
46 initModelManagerWithAnm(name,
nullptr,
false);
54 u32 sensorNum = getSensorNumMax();
55 HitSensor* sensor = MR::addHitSensorMapObj(
this,
"body", sensorNum, 100.0f, sensor_offs);
56 if (MR::isExistJoint(
this, cFollowjointName)) {
57 MtxPtr jointMtx = MR::getJointMtx(
this, cFollowjointName);
58 MR::initCollisionParts(
this, name, sensor, jointMtx);
59 MR::tryCreateCollisionAllOtherCategory(
this, jointMtx, sensor,
nullptr,
nullptr,
nullptr);
62 MR::initCollisionParts(
this, name, sensor,
nullptr);
63 MR::tryCreateCollisionAllOtherCategory(
this, sensor,
nullptr,
nullptr,
nullptr);
67 if (MR::getJ3DModel(
this)) {
69 MR::calcModelBoundingBox(&box,
this);
70 JMathInlineVEC::PSVECSubtract(box.mMax.toCVec(), box.mMin.toCVec(), dist.toVec());
71 sensorRange = 0.5f * PSVECMag(dist.toCVec());
72 JMAVECLerp(box.mMax.toCVec(), box.mMin.toCVec(), lerpVec.toVec(), 0.5f);
73 TVec3f trueSensorOffset;
74 trueSensorOffset.setInlinePS(lerpVec);
75 JMathInlineVEC::PSVECSubtract(trueSensorOffset.toCVec(),
mPosition.toCVec(), trueSensorOffset.toVec());
76 MR::setSensorOffset(
this,
"body", trueSensorOffset);
79 sensorRange = MR::getCollisionBoundingSphereRange(
this);
82 sensor->mRadius = sensorRange;
The basis of a drawable actor that can contain states (see: Nerve)
TVec3f mPosition
3D vector of the actor's position.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.