1#include "Game/LiveActor/PartsModel.hpp"
2#include "Game/NameObj/NameObjExecuteHolder.hpp"
4PartsModel::PartsModel(
LiveActor *pActor,
const char *pName,
const char *pModelName, MtxPtr mtx,
int a5,
bool a6) :
LiveActor(pName) {
17 mPosition.set<f32>(mMtx[0][3], mMtx[1][3], mMtx[2][3]);
24 mScale.set<f32>(pActor->
mScale);
26 initModelManagerWithAnm(pModelName,
nullptr, a6);
31 if ((a5 - 21) <= (u32)2) {
36 if (a5 == 16 || a5 == 27) {
40 MR::connectToScene(
this, v14, v15, a5, -1);
43void PartsModel::makeActorAppeared() {
44 LiveActor::makeActorAppeared();
48void PartsModel::makeActorDead() {
49 LiveActor::makeActorDead();
55 initEffectKeeper(8,
nullptr,
false);
57 MR::isInvalidClipping(
this);
62void PartsModel::movement() {
63 if (MR::isDead(
this) || MR::isDead(mHost) || MR::isClipped(mHost) || !_99 && MR::isHiddenModel(mHost)) {
66 MR::invalidateHitSensors(
this);
68 if (!MR::isHiddenModel(
this)) {
69 MR::disconnectToDrawTemporarily(
this);
76 MR::validateHitSensors(
this);
78 if (!MR::isHiddenModel(
this)) {
79 MR::connectToDrawTemporarily(
this);
82 LiveActor::movement();
87void PartsModel::calcAnim() {
88 if (mIsDead || MR::isDead(
this) || MR::isNoCalcAnim(
this) || MR::isClipped(
this)) {
95 LiveActor::calcAnim();
99void PartsModel::calcViewAndEntry() {
101 LiveActor::calcViewAndEntry();
105void PartsModel::initFixedPosition(
const TVec3f &rLocalTrans,
const TVec3f &a2,
const char *pJointName) {
107 mFixedPos =
new FixedPosition(mHost, pJointName, rLocalTrans, a2);
112 mMtx = (MtxPtr)&mFixedPos->_1C;
115void PartsModel::initFixedPosition(
const char *pJointName) {
116 initFixedPosition(TVec3f(0.0f, 0.0f, 0.0f), TVec3f(0.0f, 0.0f, 0.0f), pJointName);
119void PartsModel::initFixedPosition(MtxPtr mtx,
const TVec3f &rLocalTrans,
const TVec3f &a3) {
121 mMtx = (MtxPtr)&mFixedPos->_1C;
124void PartsModel::loadFixedPosition(
const char *pJointName) {
126 mMtx = (MtxPtr)&mFixedPos->_1C;
129void PartsModel::offFixedPosNormalizeScale() {
130 mFixedPos->mNormalizeScale =
false;
134 if (mMtx && mCalcOwnMtx) {
135 mPosition.set<f32>(mMtx[0][3], mMtx[1][3], mMtx[2][3]);
136 MR::setBaseTRMtx(
this, mMtx);
The basis of a drawable actor that can contain states (see: Nerve)
TVec3f mRotation
3D vector of the actor's rotation.
TVec3f mPosition
3D vector of the actor's position.
TVec3f mScale
3D vector of the actor's scale.
virtual void calcAndSetBaseMtx()
Calculates and sets the base matrix of the actor.
virtual void calcAndSetBaseMtx()
Calculates and sets the base matrix of the actor.
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.