]> git.localhorst.tv Git - blank.git/blobdiff - src/world/World.hpp
make AI entities avoid world collisions
[blank.git] / src / world / World.hpp
index c24ccf327f4a21a848a5f6db1dc4616be3aea192..e29474e99f47af5e164943a4965fd896cbc2ee17 100644 (file)
@@ -62,11 +62,16 @@ public:
                EntityCollision &);
 
        /// check if given entity intersects with the world
-//     bool Intersection(const Entity &e, std::vector<WorldCollision> &col) {
-//             return Intersection(e, e.GetState(), col);
-//     }
        bool Intersection(const Entity &e, const EntityState &, std::vector<WorldCollision> &);
 
+       /// check if given box (M * AABB) intersects with the world
+       /// M is assumed to be calculated in reference to given chunk coords
+       bool Intersection(
+               const AABB &box,
+               const glm::mat4 &M,
+               const glm::ivec3 &reference,
+               std::vector<WorldCollision> &);
+
        const BlockTypeRegistry &BlockTypes() noexcept { return block_type; }
        ChunkStore &Chunks() noexcept { return chunks; }
 
@@ -85,11 +90,14 @@ public:
        /// returs an existing entity if ID is already taken
        Entity &ForceAddEntity(std::uint32_t id);
 
+       std::list<Player> &Players() 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; }
 
+       // dt in ms
        void Update(int dt);
+       // dt in s
        void Update(Entity &, float dt);
 
        void Render(Viewport &);