public void OnBeginDrag(PointerEventData eventData)
    {
        if (PlayerCombatController.Instance.OurTurn == false)
        {
            return;
        }

        if (PlayerCombatController.Instance.FocusedShip != ShipController)
        {
            SelectionController.Instance.SetSelection(ShipController);
        }

        _flightPath = new PathUtils.BezierCurve3();

        CameraDragController.Instance.DragEnabled = false;
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        if (PlayerCombatController.Instance.OurTurn == false || PlayerCombatController.Instance.FocusedShip != ShipController)
        {
            return;
        }

        if (_isFlightPathValid == false)
        {
            _flightPath = new PathUtils.BezierCurve3();
            _flightPathRenderer.positionCount = 0;

            _ghostShipGO.transform.position = Vector3.up * 1000;
        }

        CameraDragController.Instance.DragEnabled = true;
    }
    public void OnDrag(PointerEventData eventData)
    {
        if (PlayerCombatController.Instance.OurTurn == false || PlayerCombatController.Instance.FocusedShip != ShipController)
        {
            return;
        }

        Vector3 navPlanePoint = NavigationPlane.RaycastNavPlane();

        _flightPath = PathUtils.GetBezierCurve(transform.position, transform.position + transform.forward * _forwardHandleOffset, navPlanePoint, 12);
        _flightPathRenderer.positionCount = 12;
        _flightPathRenderer.SetPositions(_flightPath.curve);

        _forwardHandleOffset = _flightPath.Length() / 2f;
        Vector3 _flightPathEndDirection = PathUtils.GetDirectionOnBezierCurve(_flightPath.Start, _flightPath.Mid, _flightPath.End, 1f);

        _isFlightPathValid = _flightPath.Length() <= _maxFlightDistancePerTurn && Vector3.Angle(transform.forward, _flightPathEndDirection) <= _maxAngleDeltaPerTurn;

        _flightPathRenderer.material = _isFlightPathValid ? _validFlightPathMaterial : _invalidFlightPathMaterial;

        _ghostShipGO.transform.position = _flightPath.End;
        _ghostShipGO.transform.forward  = _flightPathEndDirection;
    }