bool Intersection(
const Ray &,
const glm::mat4 &M,
- const Chunk::Pos &reference,
+ const ExactLocation::Coarse &reference,
WorldCollision &);
/// check if this ray hits an entity
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; }
void Update(Entity &, float dt);
void Render(Viewport &);
+ void RenderDebug(Viewport &);
private:
using EntityHandle = std::list<Entity>::iterator;
const EntityState &
);
+ /// calculate light direction and intensity at entity's location
+ void GetLight(
+ const Entity &entity,
+ glm::vec3 &direction,
+ glm::vec3 &color,
+ glm::vec3 &ambient
+ );
+
private:
Config config;