/// <summary> /// Transforms global world coordinates to chunk indices relative to grid origin. /// </summary> /// <param name="localPos">The position in the world.</param> /// <returns></returns> public MapIndices WorldToChunk(GridLocalCoordinates posWorld) { var local = posWorld.ConvertToGrid(this); var x = (int)Math.Floor(local.X / (TileSize * ChunkSize)); var y = (int)Math.Floor(local.Y / (TileSize * ChunkSize)); return(new MapIndices(x, y)); }
public MapIndices SnapGridCellFor(GridLocalCoordinates worldPos, SnapGridOffset offset) { var local = worldPos.ConvertToGrid(this); if (offset == SnapGridOffset.Edge) { local = local.Offset(new Vector2(TileSize / 2f, TileSize / 2f)); } var x = (int)Math.Floor(local.X / TileSize); var y = (int)Math.Floor(local.Y / TileSize); return(new MapIndices(x, y)); }