public void SetVisual(ShipVisual visual) { if (visual != null) { _visual = visual; _visual.SetData(this); } }
public void ClearVisual() { if (_visual != null) { GameObject.Destroy(_visual.gameObject); _visual = null; } }
public void HandleDrag(DragStatus status, Vector3 position, Vector3 last) { if (status == DragStatus.Begin) { Ray ray = _mainCamera.ScreenPointToRay(position); var hit = Physics2D.Raycast(ray.origin, ray.direction, 10000); if (hit.transform) { var shipVisual = hit.transform.GetComponent <ShipVisual>(); if (shipVisual) { _dragShipVisual = shipVisual; _dragOriginalPosition = hit.point; _dragOriginalShipPosition = shipVisual.transform.position; _dragOffset = new Vector3(hit.point.x, hit.point.y, hit.transform.position.z) - hit.transform.position; } } } else if (status == DragStatus.Moving) { if (_dragShipVisual != null) { Ray ray = _mainCamera.ScreenPointToRay(position); Vector3 newPos = new Vector3(ray.origin.x, ray.origin.y, _dragOriginalPosition.z); _dragShipVisual.transform.position = _dragOriginalShipPosition + (newPos - _dragOriginalPosition); } } else if (status == DragStatus.End) { if (_dragShipVisual != null) { MoveShip(_dragShipVisual.Data, _dragOriginalShipPosition, _dragShipVisual.transform.position); _dragShipVisual = null; } } }