public bool Move(Rectangle area, float distance, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled) { AbortCurrentMovement(); this.data = data; this.onMovementFinished = onMovementFinished; this.onMovementCancelled = onMovementCancelled; if (area.Contains(representable.getPosition(), 0)) { if (onMovementFinished != null) { onMovementFinished(data); } return(true); } var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory); Vector2[] intersections; if (TrajectoryHandler.TrajectoryRectangleIntersections(area, accesible, out intersections)) { var route = accesible.route(representable.getPosition(), intersections); if (route != null && route.Length > 0) { toArea = area; distanceToArea = distance; MoveRoute(route); return(true); } } return(false); }
public bool MoveFreely(Vector2 point, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled) { AbortCurrentMovement(); this.data = data; this.onMovementFinished = onMovementFinished; this.onMovementCancelled = onMovementCancelled; MovementPoint[] route = { new MovementPoint() { destination = point, distance = (this.representable.getPosition() - origin).magnitude, scale = this.representable.Context.getScale() } }; if (route != null && route.Length > 0) { toArea = null; MoveRoute(route); return(true); } return(false); }
public bool Move(Vector2 point, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled) { AbortCurrentMovement(); this.data = data; this.onMovementFinished = onMovementFinished; this.onMovementCancelled = onMovementCancelled; var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory); var route = accesible.route(representable.getPosition(), point); if (route != null && route.Length > 0) { toArea = null; MoveRoute(route); return(true); } return(false); }
// Private movement management methods private void AbortCurrentMovement() { toArea = null; if (moving) { representable.Play("stand"); // Clear the main variables moving = false; progress = 0.0f; moves.Clear(); // Notify the chidls if (onMovementCancelled != null) { onMovementCancelled(data); } onMovementCancelled = null; onMovementFinished = null; data = null; } }