public void InitAutotiles() { lock (MapLock) { Autotiles.InitAutotiles(GenerateAutotileGrid()); } }
private GameTileBuffer[] CheckAutotile(int x, int y, MapBase[,] surroundingMaps) { var updated = new List <GameTileBuffer>(); for (var layer = 0; layer < 5; layer++) { if (Autotiles.UpdateAutoTile(x, y, layer, surroundingMaps)) { //Find the VBO, update it. var tileBuffer = mTileBufferDict[layer]; var tile = Layers[layer].Tiles[x, y]; if (tile.TilesetTex == null) { continue; } var tilesetTex = (GameTexture)tile.TilesetTex; if (tile.X < 0 || tile.Y < 0) { continue; } if (tile.X * Options.TileWidth >= tilesetTex.GetWidth() || tile.Y * Options.TileHeight >= tilesetTex.GetHeight()) { continue; } var platformTex = tilesetTex.GetTexture(); if (tileBuffer.ContainsKey(platformTex)) { for (var autotileFrame = 0; autotileFrame < 3; autotileFrame++) { var buffer = tileBuffer[platformTex][autotileFrame]; var xoffset = GetX(); var yoffset = GetY(); DrawAutoTile( layer, x * Options.TileWidth + xoffset, y * Options.TileHeight + yoffset, 1, x, y, autotileFrame, tilesetTex, buffer, true ); //Top Left DrawAutoTile( layer, x * Options.TileWidth + Options.TileWidth / 2 + xoffset, y * Options.TileHeight + yoffset, 2, x, y, autotileFrame, tilesetTex, buffer, true ); DrawAutoTile( layer, x * Options.TileWidth + xoffset, y * Options.TileHeight + Options.TileHeight / 2 + yoffset, 3, x, y, autotileFrame, tilesetTex, buffer, true ); DrawAutoTile( layer, +x * Options.TileWidth + Options.TileWidth / 2 + xoffset, y * Options.TileHeight + Options.TileHeight / 2 + yoffset, 4, x, y, autotileFrame, tilesetTex, buffer, true ); if (!updated.Contains(buffer)) { updated.Add(buffer); } } } } } return(updated.ToArray()); }