[TestCase(2U, 2U, 1.0f, 2.0f, 1, 1)] // 1.0 and 2.0f considered inside the 1 tile public void TestGivenTileInGrid_GetTileContainingWorldPosition_ReturnsCoordinate( uint numTilesX, uint numTilesY, float x, float y, int expectedCoordX, int expectedCoordY) { _grid.NumTilesX.Returns(numTilesX); _grid.NumTilesY.Returns(numTilesY); _grid.OriginWorldPosition.Returns(new Vector2(0, 0)); IntVector2?position = _positionCalculator.GetTileContainingWorldPosition(new Vector2(x, y)); Assert.NotNull(position); Assert.AreEqual(IntVector2.Of(expectedCoordX, expectedCoordY), position); }
private IntVector2?GetTileAtMousePositionInternal() { Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0); Vector3 curPosition = _camera.ScreenToWorldPoint(curScreenPoint); return(_gridPositionCalculator.GetTileContainingWorldPosition(curPosition)); }
public Vector2?GetLocalPosition(Vector2 worldPosition) { IntVector2?tileCoords = _gridPositionCalculator.GetTileContainingWorldPosition(worldPosition); if (tileCoords == null) { _logger.Log(LoggedFeature.Drawing, "TileCoords not found for world position: {0}", worldPosition); return(null); } IntVector2 bottomLeftTileCoords = GetBottomLeftGridTileCoords(tileCoords.Value); Vector2 tileOrigin = _gridPositionCalculator.GetTileOriginWorldPosition(bottomLeftTileCoords); return(worldPosition - tileOrigin); }