+ void RenderDebug(Viewport &);
+
+private:
+ using EntityHandle = std::list<Entity>::iterator;
+ EntityHandle RemoveEntity(EntityHandle &);
+
+ EntityDerivative CalculateStep(
+ const Entity &,
+ const EntityState &cur,
+ float dt,
+ const EntityDerivative &prev
+ );
+ glm::vec3 CalculateForce(
+ const Entity &,
+ const EntityState &cur
+ );
+ glm::vec3 ControlForce(
+ const Entity &,
+ const EntityState &
+ );
+ glm::vec3 CollisionForce(
+ const Entity &,
+ const EntityState &
+ );
+ glm::vec3 Gravity(
+ const Entity &,
+ 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
+ );