public bool GetPickerPosition(Vector3 pixelCoordinates, PickMask pickMask, out Vector3 pickerPosition, out Pickable pickable) { LayerMask layerMask; switch (pickMask) { case PickMask.Floor: layerMask = constructLayerMask; break; case PickMask.Construct: layerMask = constructLayerMask; break; case PickMask.Demolish: layerMask = demolishLayerMask; break; default: throw new ArgumentOutOfRangeException(); } if (Physics.Raycast(mainCamera.ScreenPointToRay(pixelCoordinates), out RaycastHit hitInfo, 1000, layerMask)) { pickerPosition = hitInfo.point; pickable = hitInfo.collider.gameObject.GetComponent <Pickable>(); return(true); } pickerPosition = Vector3.zero; pickable = null; return(false); }
public bool GetPickerTile(Vector3 pixelCoordinates, PickMask pickMask, out Vector3Int pickerTile) { LayerMask layerMask; switch (pickMask) { case PickMask.Floor: layerMask = constructLayerMask; break; case PickMask.Construct: layerMask = constructLayerMask; break; case PickMask.Demolish: layerMask = demolishLayerMask; break; default: throw new ArgumentOutOfRangeException(); } if (Physics.Raycast(mainCamera.ScreenPointToRay(pixelCoordinates), out RaycastHit hitInfo, 1000, layerMask)) { pickerTile = hitInfo.point.RoundDown(); pickerTile.y = 0; return(true); } pickerTile = Vector3Int.zero; return(false); }