aboutsummaryrefslogtreecommitdiff
path: root/move.go
diff options
context:
space:
mode:
Diffstat (limited to 'move.go')
-rw-r--r--move.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/move.go b/move.go
index 916e580..f2cee2b 100644
--- a/move.go
+++ b/move.go
@@ -4,3 +4,16 @@ type Move struct {
IsActive bool
Destination Point
}
+
+func (m *Move) Update(position Point, speed int) Point {
+ if !m.IsActive {
+ return position
+ }
+ remainingMove := m.Destination.Sub(position)
+ delta := remainingMove.Mul(speed).Div(int(Length(remainingMove)))
+ next := position.Add(delta)
+ if Distance(next, m.Destination) < float64(speed) {
+ m.IsActive = false
+ }
+ return next
+}