public:
struct Config {
std::string name = "default";
- // initial player position
- glm::vec3 spawn = { 0.0f, 0.0f, 0.0f };
+ // chunk base where new players are spawned
+ glm::ivec3 spawn = { 0, 0, 0 };
// direction facing towards(!) the light
glm::vec3 light_direction = { -1.0f, -3.0f, -2.0f };
// fade out reaches 1/e (0.3679) at 1/fog_density,
ChunkStore &Chunks() noexcept { return chunks; }
/// add player with given name
- /// returns nullptr in entity if the name is already taken
- Player AddPlayer(const std::string &name);
+ /// returns nullptr if the name is already taken
+ Player *AddPlayer(const std::string &name);
/// add player with given name and ID
- /// returns nullptr in entity if the name or ID is already taken
- Player AddPlayer(const std::string &name, std::uint32_t id);
+ /// returns nullptr if the name or ID is already taken
+ Player *AddPlayer(const std::string &name, std::uint32_t id);
/// add an entity with an autogenerated ID
Entity &AddEntity();
/// add entity with given ID
/// returs an existing entity if ID is already taken
Entity &ForceAddEntity(std::uint32_t id);
- const std::vector<Player> &Players() const noexcept { return players; }
+ const std::list<Player> &Players() const noexcept { return players; }
std::list<Entity> &Entities() noexcept { return entities; }
const std::list<Entity> &Entities() const noexcept { return entities; }
const BlockTypeRegistry &block_type;
ChunkStore chunks;
- ChunkIndex &spawn_index;
- std::vector<Player> players;
+ std::list<Player> players;
std::list<Entity> entities;
glm::vec3 light_direction;