mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-28 03:24:35 +00:00
47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
#include "Library/Scene/SceneObjHolder.h"
|
|
|
|
#include "Library/Scene/ISceneObj.h"
|
|
|
|
namespace al {
|
|
|
|
SceneObjHolder::SceneObjHolder(ISceneObj* (*creator)(s32), s32 size)
|
|
: mCreator(creator), mArraySize(size) {
|
|
mSceneObjArray = new ISceneObj*[size];
|
|
|
|
for (s32 i = 0; i < mArraySize; i++)
|
|
mSceneObjArray[i] = nullptr;
|
|
}
|
|
|
|
ISceneObj* SceneObjHolder::create(s32 index) {
|
|
if (mSceneObjArray[index]) // already exists
|
|
return mSceneObjArray[index];
|
|
|
|
mSceneObjArray[index] = mCreator(index);
|
|
mSceneObjArray[index]->initSceneObj();
|
|
return mSceneObjArray[index];
|
|
}
|
|
|
|
ISceneObj* SceneObjHolder::tryGetObj(s32 index) const {
|
|
return mSceneObjArray[index];
|
|
}
|
|
|
|
ISceneObj* SceneObjHolder::getObj(s32 index) const {
|
|
return mSceneObjArray[index];
|
|
}
|
|
|
|
bool SceneObjHolder::isExist(s32 index) const {
|
|
return mSceneObjArray[index] != nullptr;
|
|
}
|
|
|
|
void SceneObjHolder::setSceneObj(ISceneObj* obj, s32 index) {
|
|
mSceneObjArray[index] = obj;
|
|
}
|
|
|
|
void SceneObjHolder::initAfterPlacementSceneObj(const ActorInitInfo& info) {
|
|
for (s32 i = 0; i < mArraySize; i++)
|
|
if (mSceneObjArray[i])
|
|
mSceneObjArray[i]->initAfterPlacementSceneObj(info);
|
|
}
|
|
|
|
} // namespace al
|