public void SetTile(int chunkX, int chunkY, int x, int y, TileString blockID, MapLayers layer,
                            bool callEvent = true, bool refreshSurronding = true, bool ignoreSameTile = false)
        {
            TileBase        tb;
            short           chunkBlockID = 0;
            ChunkDefinition chun         = map.chunks[chunkX, chunkY];
            int             X            = x - (chunkX * chunkWidth);
            int             Y            = y - (chunkY * chunkHeight);

            if (ignoreSameTile)
            {
                if (chun.GetTile(X, Y, layer) == blockID)
                {
                    return;
                }
            }
            //Update pallete
            if (!ReferenceEquals(blockID, null))
            {
                if (!chun.chunkPallete.Contains(blockID))
                {
                    chun.chunkPallete.Add(blockID);
                    chunkBlockID = (short)(chun.chunkPallete.Count);
                }
                else
                {
                    chunkBlockID = (short)(chun.chunkPallete.IndexOf(blockID) + 1);
                }
            }
            //Place block
            if (ReferenceEquals(chun.tileLayers[layer][X, Y], null))
            {
                chun.tileLayers[layer][X, Y] = new TileDefinition();
            }
            chun.tileLayers[layer][X, Y].tile = chunkBlockID;
            tb = null;
            if (refreshSurronding)
            {
                if (!ReferenceEquals(blockID, null))
                {
                    tb = MapManager.instance.GetTileFromCollection(chun.chunkPallete[chunkBlockID - 1]);
                    tb.RefreshTile(new Vector2Int(x, y), layer);
                }
                RefreshTilesAround(new Vector2Int(x, y), layer);
            }
            if (callEvent)
            {
                OnPlaceTile(new Vector2Int(chunkX, chunkY), new Vector2Int(X, Y), tb, layer);
            }
        }
        public void SetBitmask(int chunkX, int chunkY, int x, int y, byte mask, MapLayers layer, bool callEvent = true)
        {
            ChunkDefinition chun = map.chunks[chunkX, chunkY];

            map.chunks[chunkX, chunkY].tileLayers[layer][x, y].bitmask = mask;
        }