diff --git a/include/simpleengine/entity.h b/include/simpleengine/entity.h index 1a2febf..5f1f9d2 100644 --- a/include/simpleengine/entity.h +++ b/include/simpleengine/entity.h @@ -22,13 +22,13 @@ namespace simpleengine { friend class Game; friend class Event; public: - Entity() = default; + explicit Entity(sf::Sprite& sprite); virtual ~Entity() = default; Entity(const Entity& entity) = delete; - virtual void Move(const float& delta_time, const float& dir_x, const float& dir_y) {}; - virtual void Move(const float& delta_time, const sf::Vector2f& offset) {}; - virtual void Move(const sf::Vector2f& offset) {}; + virtual void Move(const float& delta_time, const float& dir_x, const float& dir_y); + virtual void Move(const float& delta_time, const sf::Vector2f& offset); + virtual void Move(const sf::Vector2f& offset); virtual void Render(sf::RenderTarget* target); virtual void Update(const float& delta_time); @@ -54,6 +54,7 @@ namespace simpleengine { void RenderComponents(sf::RenderTarget* target); void AddComponent(std::unique_ptr component); protected: + sf::Sprite& sprite; std::vector> components; bool destroying = false; }; diff --git a/src/entity.cpp b/src/entity.cpp index f6fc504..eb16ddc 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -7,6 +7,22 @@ #include "entity.h" #include "component.h" +simpleengine::Entity::Entity(sf::Sprite &sprite) : sprite(sprite) { + +} + +void simpleengine::Entity::Move(const float &delta_time, const float &dir_x, const float &dir_y) { + sprite.setPosition(dir_x * delta_time, dir_y * delta_time); +} + +void simpleengine::Entity::Move(const float &delta_time, const sf::Vector2f &offset) { + sprite.move(offset * delta_time); +} + +void simpleengine::Entity::Move(const sf::Vector2f &offset) { + sprite.move(offset); +} + void simpleengine::Entity::Render(sf::RenderTarget *target) { RenderComponents(target); }