public override void OnFrame(Entity entity) { if (Vector3.Distance(entity.GetState <PositionState>().Position, targetPosition) < PositionTolerance) { pathfindingState = entity.GetState <PathfindingState>(); pathfindingState.ClearTarget(); ActionStatus = ActionStatus.Succeeded; } //TODO: Add timeout. }
public override void OnFrame(Entity entity) { pathfindingState.SetNewTarget(targetWaypoint.GetState <PositionState>().Position); if (Vector3.Distance(entity.GetState <PositionState>().Position, pathfindingState.GetTargetPosition().GetValueOrDefault()) < pathfindingState.GetStoppingDistance() + PositionTolerance) { pathfindingState = entity.GetState <PathfindingState>(); pathfindingState.ClearTarget(); ActionStatus = ActionStatus.Succeeded; } //TODO: Add timeout => Failure. }
public void Cancel() { pathfindingState.ClearTarget(); }
private void RotationFinished() { pathfindingState.ClearTarget(); ActionStatus = ActionStatus.Succeeded; }