func (laser *Laser) Position() Coordinate {
	difference := time.Now().Sub(laser.StartTime)
	moves := int(math.Floor(float64(difference.Milliseconds()) / float64(laserSpeed)))
	position := laser.InitialPosition
	switch laser.Direction {
	case DirectionUp:
		position.Y -= moves
	case DirectionDown:
		position.Y += moves
	case DirectionLeft:
		position.X -= moves
	case DirectionRight:
		position.X += moves
	}
	return position
}
Position returns the laser position, which is calculated at runtime based on
when the laser was fired.
package backend
import (
	"fmt"
	"math"
	"time"
	"github.com/google/uuid"
)
type Laser struct {
	IdentifierBase
	Positioner
	InitialPosition Coordinate
	Direction       Direction
	StartTime       time.Time
	OwnerID         uuid.UUID
}