40 lines
709 B
C++
40 lines
709 B
C++
|
#pragma once
|
||
|
|
||
|
#include <json.hpp>
|
||
|
|
||
|
class GameInstance;
|
||
|
class Entity;
|
||
|
class Map;
|
||
|
|
||
|
/*
|
||
|
* Worlds are a collection of entities - but they only reference the entity's ids so they are technically still held by
|
||
|
* the entity pool.
|
||
|
*/
|
||
|
class World
|
||
|
{
|
||
|
friend class GameInstance;
|
||
|
public:
|
||
|
World(GameInstance* gameInstance) : m_gameInstance(gameInstance) {}
|
||
|
~World();
|
||
|
|
||
|
void LoadFromMap(Map* map);
|
||
|
|
||
|
void AddEntity(Entity* entity);
|
||
|
void AddEntity(int id);
|
||
|
|
||
|
nlohmann::json DumpToJSON();
|
||
|
|
||
|
std::string GetPath()
|
||
|
{
|
||
|
return m_path;
|
||
|
}
|
||
|
|
||
|
int skyboxID = 0;
|
||
|
|
||
|
protected:
|
||
|
std::vector<int> m_associatedEntities;
|
||
|
|
||
|
private:
|
||
|
std::string m_path;
|
||
|
GameInstance* m_gameInstance;
|
||
|
};
|