X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2Fworld.cpp;h=349b82d00233e5d67fe3d6a6a1d7aa3f178ffde3;hb=f430ad789fe620ad2e8b2b2b99af868372791295;hp=750cd2d6ff31707e0613d30390bde043b2e78c95;hpb=8639a90bcbcd045c57cd489f02a25e0df4236deb;p=blank.git diff --git a/src/world/world.cpp b/src/world/world.cpp index 750cd2d..349b82d 100644 --- a/src/world/world.cpp +++ b/src/world/world.cpp @@ -45,8 +45,20 @@ void Entity::Position(const glm::vec3 &pos) noexcept { state.AdjustPosition(); } +glm::mat4 Entity::Transform(const glm::ivec3 &reference) const noexcept { + return state.Transform(reference); +} + +glm::mat4 Entity::ViewTransform(const glm::ivec3 &reference) const noexcept { + glm::mat4 transform = Transform(reference); + if (model) { + transform *= model.EyesTransform(); + } + return transform; +} + Ray Entity::Aim(const Chunk::Pos &chunk_offset) const noexcept { - glm::mat4 transform = Transform(chunk_offset); + glm::mat4 transform = ViewTransform(chunk_offset); glm::vec4 from = transform * glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); from /= from.w; glm::vec4 to = transform * glm::vec4(0.0f, 0.0f, -1.0f, 1.0f); @@ -342,7 +354,7 @@ bool World::Intersection(const Entity &e, const EntityState &s, std::vector