1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace al {
6class IUseSceneObjHolder;
7class ISceneObj;
8
9ISceneObj* createSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
10void setSceneObj(const IUseSceneObjHolder* user, ISceneObj*, s32 sceneObjId);
11ISceneObj* getSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
12ISceneObj* tryGetSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
13bool isExistSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
14void deleteSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
15bool tryDeleteSceneObj(const IUseSceneObjHolder* user, s32 sceneObjId);
16
17template <typename T>
18inline T* getSceneObj(const IUseSceneObjHolder* user) {
19 return static_cast<T*>(getSceneObj(user, T::sSceneObjId));
20}
21
22template <typename T>
23inline T* tryGetSceneObj(const IUseSceneObjHolder* user) {
24 return static_cast<T*>(tryGetSceneObj(user, T::sSceneObjId));
25}
26
27} // namespace al
28