SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
AreaObjContainer.cpp
1#include "Game/AreaObj/AreaObjContainer.hpp"
2#include "Game/AreaObj/AreaObj.hpp"
3#include "Game/Scene/SceneObjHolder.hpp"
4#include <cstring>
5
6AreaObjContainer::AreaObjContainer(const char *pName) : NameObj(pName) {
7 mNumManagers = 0;
8}
9
11 for (u32 i = 0; i < 0x43; i++) {
12 AreaObjEntry* entry = &cCreateTable[i];
13 AreaObjMgr* mgr = entry->mFuncPtr(entry->_4, entry->mName);
14 JMapInfoIter iter;
15 iter.mInfo = nullptr;
16 iter._4 = -1;
17 mgr->init(iter);
18 s32 num = mNumManagers;
19 mNumManagers++;
20 mManagerArray[num] = mgr;
21 }
22}
23
24/* this function is nearly impossible to match without context behind the random stack storages */
25AreaObjMgr* AreaObjContainer::getManager(const char *pName) const {
26 const char * str;
27 AreaObjMgr** first = (AreaObjMgr**)&mManagerArray[0];
28 AreaObjMgr** last = (AreaObjMgr**)&mManagerArray[mNumManagers];
29
30 while ((str && str == pName) == false) {
31 if (++first == last)
32 break;
33
34 str = strstr(pName, (*first)->mName);
35 }
36
37 return *first;
38}
39
40AreaObj* AreaObjContainer::getAreaObj(const char *pName, const TVec3f &rVec) const {
41 return getManager(pName)->find_in(rVec);
42}
43
44namespace MR {
45 AreaObjContainer* getAreaObjContainer() {
46 return reinterpret_cast<AreaObjContainer*>(MR::getSceneObjHolder()->getObj(SceneObj_AreaObjContainer));
47 }
48};
49
50AreaObjContainer::~AreaObjContainer() {
51
52}
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
The most basic form of an object.
Definition NameObj.hpp:11
virtual void init(const JMapInfoIter &rIter)
Intializes the NameObj and can set various settings and construct necessary classes.
Definition NameObj.cpp:17