private void Start()
        {
            _initialLoopType = _loopType;
            _state           = _waypointSystem.RegisterNewPathStateInstance(transform, _loopType, false);

            _state.SusbscribeOnWaypointReached((current, next) =>
            {
                _dest = next.transform;
            });

            _dest = _state.CurrentWaypoint.transform;
        }
 private void RegisterToNewPathState()
 {
     //we need to unregister
     _waypointSystem.UnRegisterPathState(this.transform);
     //then we create a new path state !
     _state = _waypointSystem.RegisterNewPathStateInstance(this.transform, _loopType, true);
     //recreate the events
     _state.SusbscribeOnWaypointReached((current, next) =>
     {
         _dest = next.transform;
     });
     //just in case it changed (ping pong ?)
     _dest = _state.CurrentWaypoint.transform;
 }