geometry::Vector<float> &Velocity() { return velocity; }
const geometry::Vector<float> &Velocity() const { return velocity; }
+ geometry::Vector<float> &SpriteOffset() { return spriteOffset; }
+ const geometry::Vector<float> &SpriteOffset() const { return spriteOffset; }
+
void SetAnimation(const graphics::Animation *a);
- void StartAnimation(app::Application &ctrl) { runner.Start(ctrl); }
- void StartAnimation(app::State &ctrl) { runner.Start(ctrl); }
- void StopAnimation() { runner.Stop(); }
+ void StartAnimation(app::Application &ctrl);
+ void StartAnimation(app::State &ctrl);
+ void StopAnimation();
bool AnimationRunning() const { return runner.Running(); }
void SetOrientation(Orientation);
Orientation GetOrientation() const { return orientation; }
void SetSpeed(float);
- bool TileLock(int width, int height) const;
+ Entity *Follower() { return follower; }
+ const Entity *Follower() const { return follower; }
+ void AddFollower(Entity *);
+ void RemoveFollower(Entity *);
+
+ bool TileLock(const geometry::Vector<int> &tileSize) const;
void Update(float deltaT);
void UpdateVelocity();
private:
+ Entity *follower;
const graphics::Animation *animation;
graphics::AnimationRunner runner;
+ geometry::Vector<float> spriteOffset;
geometry::Vector<float> position;
geometry::Vector<float> velocity;
Orientation orientation;