diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/behaviour_system.cpp | 15 | ||||
-rw-r--r-- | src/behaviour_system.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/behaviour_system.cpp b/src/behaviour_system.cpp index a05912c..b68cd6d 100644 --- a/src/behaviour_system.cpp +++ b/src/behaviour_system.cpp | |||
@@ -40,6 +40,21 @@ void BehaviourSystem::tick(double dt) { | |||
40 | } | 40 | } |
41 | } | 41 | } |
42 | 42 | ||
43 | overcorrectionTimer_.accumulate(dt); | ||
44 | while (overcorrectionTimer_.step()) { | ||
45 | for (int spriteId : game_.getSprites()) { | ||
46 | Sprite& sprite = game_.getSprite(spriteId); | ||
47 | if (!sprite.paused && | ||
48 | sprite.behaviourType == BehaviourType::Path && | ||
49 | !sprite.path.empty() && | ||
50 | sprite.loc != sprite.path.front().endpoint) { | ||
51 | if (directionFacingPoint(sprite.path.front().endpoint - sprite.loc) != sprite.path.front().dir) { | ||
52 | game_.getSystem<TransformSystem>().moveSprite(spriteId, sprite.path.front().endpoint); | ||
53 | } | ||
54 | } | ||
55 | } | ||
56 | } | ||
57 | |||
43 | for (int spriteId : game_.getSprites()) { | 58 | for (int spriteId : game_.getSprites()) { |
44 | Sprite& sprite = game_.getSprite(spriteId); | 59 | Sprite& sprite = game_.getSprite(spriteId); |
45 | if (!sprite.paused && sprite.behaviourType == BehaviourType::Path) { | 60 | if (!sprite.paused && sprite.behaviourType == BehaviourType::Path) { |
diff --git a/src/behaviour_system.h b/src/behaviour_system.h index 526a09b..1ddce4a 100644 --- a/src/behaviour_system.h +++ b/src/behaviour_system.h | |||
@@ -31,6 +31,7 @@ private: | |||
31 | 31 | ||
32 | Game& game_; | 32 | Game& game_; |
33 | Timer timer_ { 500 }; | 33 | Timer timer_ { 500 }; |
34 | Timer overcorrectionTimer_ { 1000/60 }; | ||
34 | }; | 35 | }; |
35 | 36 | ||
36 | #endif /* end of include guard: BEHAVIOUR_SYSTEM_H_FC908ABE */ | 37 | #endif /* end of include guard: BEHAVIOUR_SYSTEM_H_FC908ABE */ |