/// <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));
            }