]> git.localhorst.tv Git - blank.git/blob - src/ai/Spawner.hpp
glm backwards compatibility
[blank.git] / src / ai / Spawner.hpp
1 #ifndef BLANK_AI_SPAWNER_HPP_
2 #define BLANK_AI_SPAWNER_HPP_
3
4 #include "../app/IntervalTimer.hpp"
5 #include "../graphics/glm.hpp"
6
7 #include <vector>
8
9
10 namespace blank {
11
12 class Entity;
13 class Model;
14 class ModelRegistry;
15 class World;
16
17 class Spawner {
18
19 public:
20         Spawner(World &, ModelRegistry &);
21         ~Spawner();
22
23         void LimitModels(std::size_t begin, std::size_t end);
24
25         void Update(int dt);
26
27 private:
28         void CheckDespawn() noexcept;
29         void TrySpawn();
30         void Spawn(Entity &reference, const glm::ivec3 &, const glm::vec3 &);
31
32         Model &RandomModel() noexcept;
33
34 private:
35         World &world;
36         ModelRegistry &models;
37         std::vector<Entity *> entities;
38
39         CoarseTimer timer;
40         float despawn_range;
41         float spawn_distance;
42         unsigned int max_entities;
43         int chunk_range;
44
45         std::size_t model_offset;
46         std::size_t model_length;
47
48 };
49
50 }
51
52 #endif