summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-04 18:28:09 -0500
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-04 18:28:09 -0500
commitcddc3efdcd2d199732caa275584e0ef714fe41f7 (patch)
tree06d0bbb005673ee826678f546bad8c7422c461d2 /src
parent47f60f27333873609a15e5e60cf112da4d0a1559 (diff)
Started copying JStudio progress from pikmin2
Diffstat (limited to 'src')
-rw-r--r--src/JSystem/JMessage/processor.cpp2
-rw-r--r--src/JSystem/JStudio/JStudio_JMessage/control.cpp67
-rw-r--r--src/JSystem/JStudio/JStudio_JMessage/object-message.cpp20
-rw-r--r--src/JSystem/JStudio/JStudio_JParticle/control.cpp52
-rw-r--r--src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp212
-rw-r--r--src/d/actor/d_a_obj_pbka.cpp12
6 files changed, 289 insertions, 76 deletions
diff --git a/src/JSystem/JMessage/processor.cpp b/src/JSystem/JMessage/processor.cpp
index 36976313..0a9a1b55 100644
--- a/src/JSystem/JMessage/processor.cpp
+++ b/src/JSystem/JMessage/processor.cpp
@@ -3,7 +3,7 @@
// Translation Unit: processor.cpp
//
-#include "processor.h"
+#include "JSystem/JMessage/processor.h"
#include "dolphin/types.h"
diff --git a/src/JSystem/JStudio/JStudio_JMessage/control.cpp b/src/JSystem/JStudio/JStudio_JMessage/control.cpp
index 12d7277c..eab317f3 100644
--- a/src/JSystem/JStudio/JStudio_JMessage/control.cpp
+++ b/src/JSystem/JStudio/JStudio_JMessage/control.cpp
@@ -3,27 +3,72 @@
// Translation Unit: control.cpp
//
-#include "control.h"
+#include "JSystem/JStudio/JStudio_JMessage/control.h"
#include "dolphin/types.h"
+namespace JStudio_JMessage {
-/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
-JStudio_JMessage::TCreateObject_base::~TCreateObject_base() {
- /* Nonmatching */
+namespace {
+
+// Fake inline.
+// TODO: supposed to use JStudio::TObject::createFromAdaptor instead of this somehow
+inline JStudio::TObject_message* message_creator(const JStudio::stb::data::TParse_TBlock_object& data,
+ TAdaptor_message* adaptor)
+{
+ JStudio::TObject_message* object = new JStudio::TObject_message(data, adaptor);
+
+ if (!object) {
+ return NULL;
+ }
+ if (object->mpAdaptor) {
+ object->mpAdaptor->adaptor_do_prepare(object);
+ }
+ return object;
}
+/* 8027A3F4-8027A4A8 .text createObject_MESSAGE_JMS___Q216JStudio_JMessage21@unnamed@control_cpp@FRCQ47JStudio3stb4data20TParse_TBlock_objectPQ28JMessage8TControl */
+JStudio::TObject_message* createObject_MESSAGE_JMS_(const JStudio::stb::data::TParse_TBlock_object& data, JMessage::TControl* system)
+{
+ TAdaptor_message* adaptor = new TAdaptor_message(system);
+ if (!adaptor) {
+ return NULL;
+ }
+
+ return message_creator(data, adaptor);
+}
+
+} // namespace
+
+/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
+TCreateObject_base::~TCreateObject_base() {}
+
/* 8027A508-8027A5AC .text create__Q216JStudio_JMessage18TCreateObject_baseFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */
-void JStudio_JMessage::TCreateObject_base::create(JStudio::TObject**, const JStudio::stb::data::TParse_TBlock_object&) {
- /* Nonmatching */
+bool TCreateObject_base::create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data) {
+ JStudio::TObject_message* (*func)(const JStudio::stb::data::TParse_TBlock_object&, JMessage::TControl*);
+ switch (data.get()->type) {
+ case 'JMSG':
+ func = &createObject_MESSAGE_JMS_;
+ break;
+ default:
+ return false;
+ }
+
+ JMessage::TControl* system = find(data);
+
+ if (!system) {
+ return false;
+ }
+
+ *newObject = func(data, system);
+ return true;
}
/* 8027A5AC-8027A60C .text __dt__Q216JStudio_JMessage13TCreateObjectFv */
-JStudio_JMessage::TCreateObject::~TCreateObject() {
- /* Nonmatching */
-}
+TCreateObject::~TCreateObject() {}
/* 8027A60C-8027A614 .text find__Q216JStudio_JMessage13TCreateObjectFRCQ47JStudio3stb4data20TParse_TBlock_object */
-void JStudio_JMessage::TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
- /* Nonmatching */
+JMessage::TControl* TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
+ return mControl;
}
+} // namespace JStudio_JMessage
diff --git a/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp b/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp
index 507a475c..0bd3c8bc 100644
--- a/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp
+++ b/src/JSystem/JStudio/JStudio_JMessage/object-message.cpp
@@ -3,21 +3,25 @@
// Translation Unit: object-message.cpp
//
-#include "object-message.h"
+#include "JSystem/JStudio/JStudio_JMessage/object-message.h"
#include "dolphin/types.h"
/* 8027A614-8027A64C .text __ct__Q216JStudio_JMessage16TAdaptor_messageFPQ28JMessage8TControl */
-JStudio_JMessage::TAdaptor_message::TAdaptor_message(JMessage::TControl*) {
- /* Nonmatching */
+JStudio_JMessage::TAdaptor_message::TAdaptor_message(JMessage::TControl* control)
+ : JStudio::TAdaptor_message()
+ , mControl(control)
+{
}
/* 8027A64C-8027A6AC .text __dt__Q216JStudio_JMessage16TAdaptor_messageFv */
-JStudio_JMessage::TAdaptor_message::~TAdaptor_message() {
- /* Nonmatching */
-}
+JStudio_JMessage::TAdaptor_message::~TAdaptor_message() {}
/* 8027A6AC-8027A6EC .text adaptor_do_MESSAGE__Q216JStudio_JMessage16TAdaptor_messageFQ37JStudio4data15TEOperationDataPCvUl */
-void JStudio_JMessage::TAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData, const void*, unsigned long) {
+void JStudio_JMessage::TAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData operation, const void* param_2, u32 param_3) {
/* Nonmatching */
+ switch (operation) {
+ case JStudio::data::UNK_0x19:
+ mControl->setMessageCode((*(u32*)param_2) >> 0x10, (*(u32*)param_3));
+ break;
+ }
}
-
diff --git a/src/JSystem/JStudio/JStudio_JParticle/control.cpp b/src/JSystem/JStudio/JStudio_JParticle/control.cpp
index 9df80cf6..a5cae225 100644
--- a/src/JSystem/JStudio/JStudio_JParticle/control.cpp
+++ b/src/JSystem/JStudio/JStudio_JParticle/control.cpp
@@ -3,17 +3,57 @@
// Translation Unit: control.cpp
//
-#include "control.h"
+#include "JSystem/JStudio/JStudio_JParticle/control.h"
#include "dolphin/types.h"
+namespace JStudio_JParticle {
-/* 802797A0-80279800 .text __dt__Q217JStudio_JParticle13TCreateObjectFv */
-JStudio_JParticle::TCreateObject::~TCreateObject() {
- /* Nonmatching */
+namespace {
+// Fake inline.
+// TODO: supposed to use JStudio::TObject::createFromAdaptor instead of this somehow
+static inline JStudio::TObject_particle* create(const JStudio::stb::data::TParse_TBlock_object& data, TAdaptor_particle* adaptor)
+{
+ JStudio::TObject_particle* object = new JStudio::TObject_particle(data, adaptor);
+ if (object == NULL) {
+ // TODO: This should probably delete the adaptor in NONMATCHING builds, if the object couldn't get created.
+ return NULL;
+ } else {
+ if (object->mpAdaptor != NULL) {
+ object->mpAdaptor->adaptor_do_prepare(object);
+ }
+ }
+ return object;
+}
+
+/* 802796E4-802797A0 .text createObject_PARTICLE_JPA___Q217JStudio_JParticle21@unnamed@control_cpp@FRCQ47JStudio3stb4data20TParse_TBlock_objectP17JPAEmitterManagerPCQ26JStage7TSystem */
+JStudio::TObject_particle* createObject_PARTICLE_JPA_(const JStudio::stb::data::TParse_TBlock_object& data, JPAEmitterManager* manager,
+ const JStage::TSystem* system)
+{
+ TAdaptor_particle* adaptor = new TAdaptor_particle(manager, system);
+ if (adaptor == NULL) {
+ return NULL;
+ }
+ JStudio::TObject_particle* object = create(data, adaptor);
+ return object;
}
+} // namespace
+
+/* 802797A0-80279800 .text __dt__Q217JStudio_JParticle13TCreateObjectFv */
+TCreateObject::~TCreateObject() {}
/* 80279800-80279878 .text create__Q217JStudio_JParticle13TCreateObjectFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */
-void JStudio_JParticle::TCreateObject::create(JStudio::TObject**, const JStudio::stb::data::TParse_TBlock_object&) {
- /* Nonmatching */
+bool TCreateObject::create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data) {
+ JStudio::TObject_particle* (*func)(const JStudio::stb::data::TParse_TBlock_object&, JPAEmitterManager*, const JStage::TSystem*);
+ switch (data.get()->type) {
+ case 'JPTC': {
+ func = &createObject_PARTICLE_JPA_;
+ break;
+ }
+ default:
+ return false;
+ }
+ *newObject = func(data, pJPAEmitterManager_, pJSGSystem_);
+ return true;
}
+} // namespace JStudio_JParticle
diff --git a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp
index 4c09c4c1..1f66448e 100644
--- a/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp
+++ b/src/JSystem/JStudio/JStudio_JParticle/object-particle.cpp
@@ -3,81 +3,209 @@
// Translation Unit: object-particle.cpp
//
-#include "object-particle.h"
+#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
+#include "JSystem/JParticle/JPAEmitterManager.h"
+#include "JSystem/JStudio/JStudio/jstudio-math.h"
#include "dolphin/types.h"
/* 80279878-80279954 .text __ct__Q217JStudio_JParticle17TAdaptor_particleFP17JPAEmitterManagerPCQ26JStage7TSystem */
-JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(JPAEmitterManager*, const JStage::TSystem*) {
- /* Nonmatching */
-}
-
-/* 80279954-802799B0 .text __dt__Q317JStudio_JParticle17TAdaptor_particle13TJPACallback_Fv */
-JStudio_JParticle::TAdaptor_particle::TJPACallback_::~TJPACallback_() {
- /* Nonmatching */
+JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(JPAEmitterManager* emitterManager, const JStage::TSystem* system)
+ : mEmitterManager(emitterManager)
+ , mEmitter(NULL)
+ , mCallback(this)
+ , _188(-1)
+ , _18C(0)
+ , _190(0)
+ , _194(0)
+ , mSystem(system)
+ , _19C(NULL)
+ , _1A0(0xFFFFFFFF)
+ , _1A4(0)
+{
}
/* 802799B0-80279A50 .text __dt__Q217JStudio_JParticle17TAdaptor_particleFv */
JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
- /* Nonmatching */
+ if (mEmitter != NULL) {
+ mEmitterManager->forceDeleteEmitter(mEmitter);
+ }
}
/* 80279A50-80279BD4 .text adaptor_do_prepare__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObject */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare(const JStudio::TObject*) {
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare(const JStudio::TObject* param_1) {
/* Nonmatching */
+ static TSetVariableValue_immediate aoData[18] = {
+ TSetVariableValue_immediate(0, 0.0f), TSetVariableValue_immediate(1, 0.0f), TSetVariableValue_immediate(2, 0.0f),
+ TSetVariableValue_immediate(3, 0.0f), TSetVariableValue_immediate(4, 0.0f), TSetVariableValue_immediate(5, 0.0f),
+ TSetVariableValue_immediate(6, 1.0f), TSetVariableValue_immediate(7, 1.0f), TSetVariableValue_immediate(8, 1.0f),
+ TSetVariableValue_immediate(9, 255.0f), TSetVariableValue_immediate(10, 255.0f), TSetVariableValue_immediate(11, 255.0f),
+ TSetVariableValue_immediate(12, 255.0f), TSetVariableValue_immediate(13, 255.0f), TSetVariableValue_immediate(14, 255.0f),
+ TSetVariableValue_immediate(15, 255.0f), TSetVariableValue_immediate(16, 255.0f), TSetVariableValue_immediate(0xFFFFFFFF, NAN)
+ };
+ adaptor_setVariableValue_immediate(aoData);
+ mCallback.mObject = param_1;
}
/* 80279BD4-80279BD8 .text adaptor_do_end__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObject */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_end(const JStudio::TObject*) {
- /* Nonmatching */
-}
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_end(const JStudio::TObject*) {}
/* 80279BD8-80279C2C .text adaptor_do_update__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObjectUl */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(const JStudio::TObject*, unsigned long) {
- /* Nonmatching */
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(const JStudio::TObject* param_1, u32 param_2) {
+ if (_190 == 0) {
+ return;
+ }
+ if (_194 >= _190) {
+ return;
+ }
+ _194 += param_2;
+ if (_194 < _190) {
+ return;
+ }
+ switch (_18C) {
+ case 2:
+ break;
+ default:
+ _18C = 0;
+ break;
+ }
+ _190 = 0;
+ _194 = 0;
}
/* 80279C2C-80279C40 .text adaptor_do_PARTICLE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(JStudio::data::TEOperationData, const void*, unsigned long) {
- /* Nonmatching */
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(JStudio::data::TEOperationData operation, const void* r5, u32) {
+ switch (operation) {
+ case JStudio::data::UNK_0x19:
+ _188 = *(int*)r5;
+ break;
+ }
}
/* 80279C40-80279CA4 .text adaptor_do_PARENT__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(JStudio::data::TEOperationData, const void*, unsigned long) {
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(JStudio::data::TEOperationData operation, const void* param_2, u32) {
/* Nonmatching */
+ switch (operation) {
+ case JStudio::data::UNK_0x18:
+ _19C = NULL;
+ JStage::TObject* object = NULL;
+ if (mSystem->JSGFindObject((const char*)param_2, JStage::TOBJ_ACTOR_UNK) == 0) {
+ _19C = object;
+ }
+ break;
+ }
}
/* 80279CA4-80279D24 .text adaptor_do_PARENT_NODE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, const void*, unsigned long) {
- /* Nonmatching */
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(JStudio::data::TEOperationData operation, const void* param_2, u32) {
+ switch (operation) {
+ case JStudio::data::UNK_0x18:
+ if (_19C != NULL) {
+ _1A0 = _19C->JSGFindNodeID((const char*)param_2);
+ if (_1A0 == 0xFFFFFFFF) {
+ return;
+ }
+ }
+ break;
+ case JStudio::data::UNK_0x19:
+ _1A0 = *(u32*)param_2;
+ break;
+ }
}
/* 80279D24-80279D40 .text adaptor_do_PARENT_ENABLE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, const void*, unsigned long) {
- /* Nonmatching */
+void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData operation, const void* param_2, u32 param_3) {
+ switch (operation) {
+ case JStudio::data::UNK_0x2:
+ _1A4 = *(u32*)param_2;
+ break;
+ }
}
-/* 80279D40-80279E2C .text __cl__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_CFfPQ27JStudio8TAdaptor */
-void JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::operator()(float, JStudio::TAdaptor*) const {
- /* Nonmatching */
-}
+// /* 80279D40-80279E2C .text __cl__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_CFfPQ27JStudio8TAdaptor */
+// void JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::operator()(float, JStudio::TAdaptor*) const {
+// /* Nonmatching */
+// }
-/* 80279E2C-80279F08 .text __cl__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_CFfPQ27JStudio8TAdaptor */
-void JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::operator()(float, JStudio::TAdaptor*) const {
- /* Nonmatching */
-}
+// /* 80279E2C-80279F08 .text __cl__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_CFfPQ27JStudio8TAdaptor */
+// void JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::operator()(float, JStudio::TAdaptor*) const {
+// /* Nonmatching */
+// }
/* 80279F08-8027A2B8 .text execute__Q317JStudio_JParticle17TAdaptor_particle13TJPACallback_FP14JPABaseEmitter */
-void JStudio_JParticle::TAdaptor_particle::TJPACallback_::execute(JPABaseEmitter*) {
+void JStudio_JParticle::TAdaptor_particle::TJPACallback_::execute(JPABaseEmitter* emitter) {
/* Nonmatching */
+ bool check = false;
+ if (emitter->isEnableDeleteEmitter()) {
+ check = true;
+ }
+
+ if (check) {
+ mAdaptor->mEmitterManager->forceDeleteEmitter(emitter);
+ mAdaptor->mEmitter = NULL;
+ mAdaptor->_18C = 0;
+ mAdaptor->_190 = 0;
+ mAdaptor->_194 = 0;
+ return;
+ }
+
+ f64 val1 = mAdaptor->_190; // u32 stored as f64
+ f64 val2 = mAdaptor->_194; // u32 stored as f64
+
+ f64 alpha = 1.0;
+ switch (mAdaptor->_18C) {
+ case 1:
+ alpha = val2 / val1;
+ break;
+ case 3:
+ alpha = (val1 - val2) / val1;
+ break;
+ }
+
+ const JStudio::TControl* ctrl = static_cast<const JStudio::TControl*>(mObject->getControl()); // r28
+
+ Vec srts[3]; // 0x64
+ mAdaptor->adaptor_getVariableValue_Vec(&srts[2], sauVariableValue_3_TRANSLATION_XYZ);
+ mAdaptor->adaptor_getVariableValue_Vec(&srts[1], sauVariableValue_3_ROTATION_XYZ);
+ mAdaptor->adaptor_getVariableValue_Vec(&srts[0], sauVariableValue_3_SCALING_XYZ);
+
+ Vec* pos; // r29
+
+ if (!mAdaptor->_1A4) {
+ if (!ctrl->transformOnGet_isEnabled()) {
+ pos = srts;
+ } else {
+ Vec outVec[3];
+ PSMTXMultVec(ctrl->transformOnSet_getMatrix(), &srts[2], &outVec[0]);
+ outVec[1].x = srts[1].x;
+ outVec[1].y = ctrl->transformOnSet_getRotationY() + srts[1].y;
+ outVec[1].z = srts[1].z;
+ pos = outVec;
+ }
+ emitter->setGlobalTranslation(pos[0]);
+
+ emitter->setGlobalRotation(JGeometry::TVec3<s16>(65536.0 * (pos[1].x / 360.0), 65536.0 * (pos[1].y / 360.0), 65536.0 * (pos[1].z / 360.0)));
+ JGeometry::TVec3<f32> scaleVec(((JGeometry::TVec3<f32>*)pos)[2]);
+ emitter->setGlobalScale(scaleVec);
+ } else {
+ Mtx mtx1;
+ JStudio::math::getTransformation_SRxyzT(mtx1, srts[0], srts[1], srts[2]);
+ Mtx mtx2;
+ MTXConcat(NULL, mtx1, mtx2);
+ emitter->setGlobalSRTMatrix(mtx2);
+ }
+
+ GXColor color;
+ mAdaptor->adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR_RGBA);
+ emitter->setGlobalPrmColor(color.r, color.g, color.b);
+
+ alpha *= (f64)color.a;
+ u8 emitAlpha = 255;
+ if (alpha < 255.0) {
+ emitAlpha = (u8)alpha;
+ }
+
+ emitter->setGlobalAlpha(emitAlpha);
+
+ mAdaptor->adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR1_RGBA);
+ emitter->setGlobalEnvColor(color.r, color.g, color.b);
}
-
-/* 8027A2B8-8027A318 .text __dt__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_Fv */
-JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::~TVVOOn_END_FADE_OUT_() {
- /* Nonmatching */
-}
-
-/* 8027A318-8027A378 .text __dt__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_Fv */
-JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::~TVVOOn_BEGIN_FADE_IN_() {
- /* Nonmatching */
-}
-
diff --git a/src/d/actor/d_a_obj_pbka.cpp b/src/d/actor/d_a_obj_pbka.cpp
index 012b8861..e8f36a9f 100644
--- a/src/d/actor/d_a_obj_pbka.cpp
+++ b/src/d/actor/d_a_obj_pbka.cpp
@@ -35,14 +35,10 @@ void daObjPbka_c::CreateInit() {
/* 000001CC-0000024C .text set_mtx__11daObjPbka_cFv */
void daObjPbka_c::set_mtx() {
- J3DModel* model;
- model = mpModel;
- model->mBaseScale.x = mScale.x;
- model->mBaseScale.y = mScale.y;
- model->mBaseScale.z = mScale.z;
- mDoMtx_trans(mDoMtx_stack_c::get(), current.pos.x, current.pos.y, current.pos.z);
- mDoMtx_YrotM(mDoMtx_stack_c::get(), current.angle.y);
- mDoMtx_copy(mDoMtx_stack_c::get(), mpModel->mBaseTransformMtx);
+ mpModel->setBaseScale(mScale);
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
s32 daObjPbka_c::_create() {