public virtual void Move(World world, float deltaTime)
{
/*
* Assumes direction has been set
*/
if (origin == destination)
{
return;
}
/** Calculate Displacement for Current Time Unit **/
var displacement = deltaTime * speed * SPEED_MULTIPLIER;
/** Check Destination Arrival: If True, set origin = destination and pass **/
// TODO scale
if (Vector2.Distance(destination.ToVector(), position) < displacement)
{
origin = destination;
position = destination.ToVector();
return;
}
/** Ready to Move **/
position += (destination.ToVector() - origin.ToVector()).normalized * displacement;
}