X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FEntity.hpp;h=0117fa9cb0d0801deb53750c54b0b93c2d236cc1;hb=b94a7dc7daad9ae9be90a39d723e332dae375325;hp=1a6fccf26f35a563441a3972a21ddfa799b14966;hpb=e4a1425dccd0ba9b106e415dd02809f4308a85ee;p=blank.git diff --git a/src/world/Entity.hpp b/src/world/Entity.hpp index 1a6fccf..0117fa9 100644 --- a/src/world/Entity.hpp +++ b/src/world/Entity.hpp @@ -2,6 +2,7 @@ #define BLANK_WORLD_ENTITY_HPP_ #include "Chunk.hpp" +#include "EntityDerivative.hpp" #include "EntityState.hpp" #include "../geometry/primitive.hpp" #include "../model/Instance.hpp" @@ -17,6 +18,7 @@ namespace blank { class DirectionalLighting; class EntityController; class Shape; +class World; class Entity { @@ -114,13 +116,14 @@ public: bool Dead() const noexcept { return dead; } bool CanRemove() const noexcept { return dead && ref_count <= 0; } - void Update(float dt); + void Update(World &, float dt); void Render(const glm::mat4 &M, DirectionalLighting &prog) noexcept { if (model) model.Render(M, prog); } private: + void UpdatePhysics(World &, float dt); void UpdateTransforms() noexcept; void UpdateHeading() noexcept; void UpdateModel(float dt) noexcept; @@ -130,6 +133,14 @@ public: private: void OrientHead(float dt) noexcept; + EntityDerivative CalculateStep( + World &, + const EntityState &cur, + float dt, + const EntityDerivative &prev + ) const; + + private: EntityController *ctrl; Instance model;