public void Stop(bool arrived_at_destination = false)
    {
        target        = null;
        targetOffsets = null;
        path.Clear();
        base.smi.sm.moveTarget.Set(null, base.smi);
        transitionDriver.EndTransition();
        HashedString        idleAnim  = NavGrid.GetIdleAnim(CurrentNavType);
        KAnimControllerBase component = GetComponent <KAnimControllerBase>();

        component.Play(idleAnim, KAnim.PlayMode.Loop, 1f, 0f);
        if (arrived_at_destination)
        {
            base.smi.GoTo(base.smi.sm.arrived);
        }
        else if (base.smi.GetCurrentState() == base.smi.sm.moving)
        {
            ClearReservedCell();
            base.smi.GoTo(base.smi.sm.failed);
        }
    }