SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraTargetObj.cpp
1#include "Game/AreaObj/CubeCamera.hpp"
2#include "Game/Camera/CameraTargetObj.hpp"
3#include "Game/Gravity/GravityInfo.hpp"
4#include "Game/LiveActor/LiveActor.hpp"
5#include "Game/Util/LiveActorUtil.hpp"
6
7CameraTargetObj::CameraTargetObj(const char *pName) : NameObj(pName) {
8 mCameraWall = false;
9}
10
11CameraTargetActor::CameraTargetActor(const char *pName) : CameraTargetObj(pName) {
12 mActor = nullptr;
13 mUp.x = 0.0f;
14 mUp.y = 1.0f;
15 mUp.z = 0.0f;
16 mFront.x = 0.0f;
17 mFront.y = 0.0f;
18 mFront.z = 1.0f;
19 mSide.x = 0.0f;
20 mSide.y = 0.0f;
21 mSide.z = 1.0f;
22 mCameraArea = nullptr;
23}
24
25CameraTargetActor::~CameraTargetActor() {
26
27}
28
29void CameraTargetActor::movement() {
30 if (MR::isDead(mActor) || MR::isClipped(mActor)) {
31 return;
32 }
33
34 if (mActor->getBaseMtx() != nullptr) {
35 MR::calcUpVec(&mUp, mActor);
36 MR::calcFrontVec(&mFront, mActor);
37 MR::calcSideVec(&mSide, mActor);
38 }
39 else {
40 TRot3f matrix;
41 MR::makeMtxRotate(reinterpret_cast<MtxPtr>(&matrix), mActor->mRotation.x, mActor->mRotation.y, mActor->mRotation.z);
42
43 matrix.getYDir(mUp);
44 matrix.getZDir(mFront);
45 matrix.getXDir(mSide);
46 }
47
48 CubeCameraArea *area = reinterpret_cast<CubeCameraArea *>(MR::getAreaObj("CubeCamera", mActor->mPosition));
49
50 if (area == nullptr) {
51 mCameraArea = nullptr;
52 }
53 else {
54 mCameraArea = area;
55 }
56}
57
58const TVec3f *CameraTargetActor::getPosition() const {
59 return &mActor->mPosition;
60}
61
62const TVec3f *CameraTargetActor::getUpVec() const {
63 return &mUp;
64}
65
66const TVec3f *CameraTargetActor::getFrontVec() const {
67 return &mFront;
68}
69
70const TVec3f *CameraTargetActor::getSideVec() const {
71 return &mSide;
72}
73
74const TVec3f *CameraTargetActor::getLastMove() const {
75 return &mActor->mVelocity;
76}
77
78const TVec3f *CameraTargetActor::getGroundPos() const {
79 return &mActor->mPosition;
80}
81
82const TVec3f *CameraTargetActor::getGravityVector() const {
83 if (getGravityInfo() != nullptr) {
84 return &getGravityInfo()->mGravityVector;
85 }
86 else {
87 return &mUp;
88 }
89}
90
91f32 CameraTargetActor::getRadius() const {
92 return 150.0f;
93}
94
95CubeCameraArea *CameraTargetActor::getCubeCameraArea() const {
96 return mCameraArea;
97}
98
99Triangle *CameraTargetActor::getGroundTriangle() const {
100 return nullptr;
101}
102
103CameraTargetPlayer::CameraTargetPlayer(const char *pName) : CameraTargetObj(pName) {
104 mGravity.x = 0.0f;
105 mGravity.y = -1.0f;
106 mGravity.z = 0.0f;
107 mGroundPos.x = 0.0f;
108 mGroundPos.y = 0.0f;
109 mGroundPos.z = 0.0f;
110 mCameraArea = nullptr;
111 mGroundTriangle = nullptr;
112 _58 = 0;
113 _5A = true;
114}
115
116CameraTargetPlayer::~CameraTargetPlayer() {
117
118}
119
120const TVec3f *CameraTargetPlayer::getUpVec() const {
121 return &mUp;
122}
123
124const TVec3f *CameraTargetPlayer::getFrontVec() const {
125 return &mFront;
126}
127
128const TVec3f *CameraTargetPlayer::getSideVec() const {
129 return &mSide;
130}
131
132const TVec3f *CameraTargetPlayer::getGroundPos() const {
133 return &mGroundPos;
134}
135
136const TVec3f *CameraTargetPlayer::getGravityVector() const {
137 return &mGravity;
138}
TVec3f mRotation
3D vector of the actor's rotation.
Definition LiveActor.hpp:96
TVec3f mPosition
3D vector of the actor's position.
Definition LiveActor.hpp:95
TVec3f mVelocity
3D vector of the actor's velocity.
Definition LiveActor.hpp:98
virtual MtxPtr getBaseMtx() const
Gets the base matrix of the model used for the actor.
The most basic form of an object.
Definition NameObj.hpp:11