SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
NPCActor.cpp
1#include "Game/NPC/NPCActor.hpp"
2#include "Game/Util.hpp"
3
4NPCActorCaps::NPCActorCaps(const char *pName) {
5 _0 = pName;
6 _C = 0;
7 _D = 0;
8 _28 = 0;
9 mConnectsToScene = 0;
10 mUseLightCtrl = 0;
11 mUseEffect = 0;
12 mUseSounds = 0;
13 mCanBeHitByShell = 0;
14 _35 = 0;
15 _36 = 0;
16 mUsesNerves = 0;
17 mUseHitSensors = 0;
18 _38 = 0;
19 _5C = 0;
20 mUseShadow = 0;
21 mUseRail = 0;
22 _65 = 1;
23 _66 = 0;
24 _67 = 0;
25 _3C = 50.0f;
26 mSensorSize = 50.0f;
27 _60 = 50.0f;
28 _80 = 80.0f;
29 _30 = 4;
30 mSceneConnectionType = 0;
31 mUseStarPointer = 0;
32 mStarPointerOffs.x = 0.0f;
33 mStarPointerOffs.y = 0.0f;
34 mStarPointerOffs.z = 0.0f;
35 mInitModel = 0;
36 _E = 0;
37 _F = 0;
38 mMessageOffset.x = 0.0f;
39 mMessageOffset.y = 150.0f;
40 mMessageOffset.z = 0.0f;
41 mSensorOffset.set<f32>(0.0f, 50.0f, 0.0f);
42 _10 = pName;
43 mTalkMtx = 0;
44 mTalkJointName = 0;
45 mObjectName = pName;
46 _44 = 0;
47 _58 = 1;
48 mWaitNerve = &NrvNPCActor::NPCActorNrvWait::sInstance;
49 mTalkNerve = &NrvNPCActor::NPCActorNrvTalk::sInstance;
50 mReactionNerve = &NrvNPCActor::NPCActorNrvReaction::sInstance;
51 _70 = 0;
52 _6C = 0;
53}
54
55void NPCActorCaps::setDefault() {
56 _C = 1;
57 _D = 1;
58 _28 = 1;
59 mConnectsToScene = 1;
60 mUseLightCtrl = 1;
61 mUseEffect = 1;
62 mUseSounds = 1;
63 mCanBeHitByShell = 1;
64 _35 = 1;
65 _36 = 1;
66 mUsesNerves = 1;
67 mUseHitSensors = 1;
68 _38 = 1;
69 _5C = 1;
70 mUseRail = 1;
71 _65 = 1;
72 _66 = 1;
73 mUseStarPointer = 1;
74 mInitModel = 1;
75 _E = 1;
76}
77
78void NPCActorCaps::setIndirect() {
79 mSceneConnectionType = 2;
80}
81
82#ifdef NON_MATCHING
83NPCActor::NPCActor(const char *pName) : LiveActor(pName) {
84 _8C = 0;
85 _90 = 0;
86 _94 = 0;
87 _98 = 0;
88 _9C = 0;
89 _D8 = 0;
90 _D9 = 0;
91 _DA = 0;
92 _DB = 0;
93 _DC = 0;
94 _DD = 0;
95 _DE = 0;
96 _DF = 0;
97 _E0 = 0;
98 _E1 = 0;
99 _E2 = 0;
100 _E3 = 0;
101 _E4 = 0;
102 _E5 = 0;
103 _E6 = 0;
104 _E8 = 1;
105 _E9 = 1;
106 _EC = 2000.0f;
107 _F0 = 4.0f;
108 _F4 = 0.0f;
109 _F8 = 0.0f;
110 _FC = 0;
111 _100 = 0;
112 _104 = 0;
113 _108 = 0;
114 _11C = 0;
115 _120 = 0;
116 _10C = 2.0f;
117 _110 = 0.1f;
118 _114 = 0.079999998f;
119 _118 = 1.0f;
120 _124 = 0;
121 _128 = 1;
122 _12C = 0.0f;
123 _130 = 0;
124 _134 = 0;
125 _138 = 0;
126 _13C = 0;
127 _140 = 0;
128 _144 = 0;
129 _148 = 0;
130 _158 = 0x400;
131 _A0.set(0.0f, 0.0f, 0.0f, 1.0f);
132 _B0.set(0.0f, 0.0f, 0.0f, 1.0f);
133 _C0.zero();
134 _CC.zero();
135 mWaitNerve = &NrvNPCActor::NPCActorNrvWait::sInstance;
136 mTalkNerve = &NrvNPCActor::NPCActorNrvTalk::sInstance;
137 mReactionNerve = &NrvNPCActor::NPCActorNrvReaction::sInstance;
138}
139#endif
140
141void NPCActor::makeArchiveList(NameObjArchiveListCollector *pCollector, const JMapInfoIter &rIter) {
142 const char* name;
143 MR::getObjectName(&name, rIter);
144 NPCActorItem item(name);
145 s32 item_type = -1;
146 MR::getJMapInfoArg7NoInit(rIter, &item_type);
147
148 bool ret = MR::getNPCItemData(&item, item_type);
149
150 if (ret) {
151 NPCActor::addArchive(pCollector, item);
152 }
153}
154
155void NPCActor::addArchive(NameObjArchiveListCollector *pCollector, const NPCActorItem &rItem) {
156 if (!MR::isNullOrEmptyString(rItem.mName) && MR::isNPCItemFileExist(rItem.mName)) {
157 pCollector->addArchive(rItem.mName);
158 }
159
160 if (!MR::isNullOrEmptyString(rItem._C) && MR::isNPCItemFileExist(rItem._C)) {
161 pCollector->addArchive(rItem._C);
162 }
163}
164
165void NPCActor::makeArchiveListDefault(NameObjArchiveListCollector *pCollector, const JMapInfoIter &rIter) {
166 const char* name;
167 MR::getObjectName(&name, rIter);
168 NPCActorItem item(name);
169 bool ret = MR::getNPCItemData(&item, 0);
170
171 if (ret) {
172 NPCActor::addArchive(pCollector, item);
173 }
174}
175
176void NPCActor::setInitPose() {
177 _B0.x = _A0.x;
178 _B0.y = _A0.y;
179 _B0.z = _A0.z;
180 _B0.h = _A0.h;
181 _C0.set<f32>(mPosition);
182}
183
184void NPCActor::init(const JMapInfoIter &rIter) {
185 LiveActor::init(rIter);
186}
187
188void NPCActor::initAfterPlacement() {
189 MR::calcGravity(this);
190
191 if (!MR::isNullOrEmptyString(_FC)) {
192 MR::startAction(this, _FC);
193
194 if (MR::isExistBck(this, _FC)) {
195 MR::startBckNoInterpole(this, _FC);
196 }
197
198 MR::setBckFrameAtRandom(this);
199 MR::calcAnimDirect(this);
200 }
201}
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
TVec3f mPosition
3D vector of the actor's position.
Definition LiveActor.hpp:95
virtual void init(JMapInfoIter const &)
Intializes the NameObj and can set various settings and construct necessary classes.
Definition LiveActor.cpp:26
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
Definition NPCActor.cpp:184
Stores archive names of NameObjs.