prime/include/MetroidPrime/CObjectList.hpp

53 lines
1.1 KiB
C++
Raw Normal View History

2022-08-05 10:23:49 +00:00
#ifndef __COBJECTLIST_HPP__
#define __COBJECTLIST_HPP__
2022-08-13 01:26:00 +00:00
#include "types.h"
#include "MetroidPrime/TGameTypes.hpp"
2022-08-05 10:23:49 +00:00
#define kMaxObjects 1024
2022-08-13 01:26:00 +00:00
2022-08-05 10:23:49 +00:00
enum EGameObjectList {
kGOL_Invalid = -1,
kGOL_All,
kGOL_Actor,
kGOL_PhysicsActor,
kGOL_GameCamera,
kGOL_GameLight,
kGOL_ListeningAi,
kGOL_AiWaypoint,
kGOL_PlatformAndDoor,
};
class CEntity;
class CObjectList {
struct SObjectListEntry {
CEntity* mEnt;
s16 mNext;
s16 mPrev;
SObjectListEntry();
};
public:
CObjectList(EGameObjectList list);
2022-08-13 01:26:00 +00:00
bool IsQualified(CEntity& ent);
2022-08-05 10:23:49 +00:00
void AddObject(CEntity& ent);
void RemoveObject(TUniqueId uid);
CEntity* GetObjectById();
const CEntity* GetObjectById() const;
CEntity* GetValidObjectById(TUniqueId uid);
const CEntity* GetValidObjectById(TUniqueId uid) const;
CEntity* operator[](s32 idx);
const CEntity* operator[](s32 idx) const;
const CEntity* GetValidObjectByIndex(s32 idx) const;
s32 size() const { return mCount; }
2022-08-13 01:26:00 +00:00
2022-08-05 10:23:49 +00:00
private:
SObjectListEntry mObjects[1024];
EGameObjectList mListType;
s16 mFirstId = -1;
s16 mCount = 0;
2022-08-13 01:26:00 +00:00
};
2022-08-05 10:23:49 +00:00
#endif // __COBJECTLIST_HPP__