void TaskThreadProcess()
        {
            while (true)
            {
                switch (state)
                {
                case TaskDestinationState.Arret:
                    sw.Restart();
                    UpdateTaskMode();
                    break;

                case TaskDestinationState.AvanceEnCours:
                    if (sw.ElapsedMilliseconds > 500)
                    {
                        state = TaskDestinationState.Avance;
                    }
                    break;

                case TaskDestinationState.Avance:
                    sw.Restart();
                    state = TaskDestinationState.AvanceEnCours;
                    UpdateTaskMode();
                    break;

                default:
                    break;
                }
                Thread.Sleep(100);
            }
        }
        void UpdateTaskMode()
        {
            if (parent.localWorldMap == null)
            {
                return;
            }
            switch (mode)
            {
            case TaskDestinationMode.Stop:
                if (parent.localWorldMap.DestinationLocation != null)
                {
                    mode = TaskDestinationMode.Destination;
                    UpdateAndLaunch(parent.localWorldMap.DestinationLocation);
                }
                else if (parent.localWorldMap.WaypointLocations.Count >= 1)
                {
                    mode = TaskDestinationMode.Waypoint;
                    PointD point = parent.localWorldMap.WaypointLocations[0];
                    UpdateAndLaunch(new Location(point.X, point.Y, 0, 0, 0, 0));
                }
                else
                {
                    state = TaskDestinationState.Arret;
                }
                break;

            case TaskDestinationMode.Waypoint:
                if (parent.localWorldMap.DestinationLocation != null)
                {
                    mode = TaskDestinationMode.Destination;
                }
                state = TaskDestinationState.Avance;
                break;

            case TaskDestinationMode.Destination:
                state = TaskDestinationState.Avance;
                break;

            default:
                break;
            }
        }
 public void SetTaskState(TaskDestinationState state)
 {
     this.state = state;
 }