SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
FirePressure.cpp
1#include "Game/MapObj/FirePressure.hpp"
2#include "Game/MapObj/FirePressureBulletHolder.hpp"
3#include "Game/Scene/SceneObjHolder.hpp"
4#include <JSystem/JMath/JMath.hpp>
5
6FirePressure::~FirePressure() {
7
8}
9
10FirePressure::FirePressure(const char *pName) : PressureBase(pName) {
11 mDisableCollsion = false;
12}
13
14void FirePressure::init(const JMapInfoIter &rIter) {
15 PressureBase::init(rIter);
16 MR::getJMapInfoArg7NoInit(rIter, &mDisableCollsion);
17}
18
19void FirePressure::initBullet(const JMapInfoIter &rIter) {
20 MR::createSceneObj(SceneObj_FirePressureBulletHolder);
21}
22
23bool FirePressure::shotBullet(f32 a1) {
24 FirePressureBulletHolder* hldr = MR::getSceneObj<FirePressureBulletHolder*>(SceneObj_FirePressureBulletHolder);
25 FirePressureBullet* bullet = hldr->callEmptyBullet();
26
27 // do we have an empty bullet slot available?
28 if (bullet == nullptr) {
29 return false;
30 }
31 else {
32 TPos3f gunPoint;
33 calcGunPointFromCannon(&gunPoint);
34 bullet->shotFireBullet(this, gunPoint, a1, isShotTypeFollow(), mDisableCollsion);
35 return true;
36 }
37}
38
39void FirePressure::calcGunPointFromCannon(TPos3f *pOutPoint) {
40 Mtx jointMtx;
41 JMath::gekko_ps_copy12(jointMtx, MR::getJointMtx(this, "Cannon1"));
42 TVec3f stack_2C;
43 f32 z = jointMtx[2][0];
44 f32 y = jointMtx[1][0];
45 f32 x = jointMtx[0][0];
46 stack_2C.set(x, y, z);
47 TVec3f stack_20;
48 z = jointMtx[2][3];
49 y = jointMtx[1][3];
50 x = jointMtx[0][3];
51 stack_20.set(x, y, z);
52 JMAVECScaleAdd(stack_2C.toCVec(), stack_20.toCVec(), stack_20.toVec(), 200.0f);
53 JMath::gekko_ps_copy12(pOutPoint, jointMtx);
54 TVec3f stack_14;
55 z = jointMtx[2][1];
56 y = jointMtx[1][1];
57 x = jointMtx[0][1];
58 stack_14.set(x, y, z);
59 TVec3f stack_8;
60 z = jointMtx[2][2];
61 y = jointMtx[1][2];
62 x = jointMtx[0][2];
63 stack_8.set(x, y, z);
64 MR::makeMtxFrontUpPos(pOutPoint, stack_2C, stack_14, stack_20);
65}
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.