public void SetTileInArray(MapTile.MapTileType type, int x, int y, int z) { int index = x + (y * mapDepth) + (z * mapHeight * mapWidth); if(index > tileTypeArray.Count) { Util.Log("Index out of range!"); return; } tileTypeArray[index] = type; }
public void SetTile(MapTile.MapTileType type, int x, int y, int z) { int index = 0; index |= x; index |= y << 24; index |= z << 48; MapTile haveCurrentTile; if (visibleTiles.TryGetValue(index, out haveCurrentTile)) { if (type == MapTile.MapTileType.TILE_EMPTY) { haveCurrentTile.RemoveSelf(); visibleTiles.Remove(index); } else { haveCurrentTile.myType = type; } } else if (type != MapTile.MapTileType.TILE_EMPTY) { haveCurrentTile = new MapTile(type, x, y, z); haveCurrentTile.Graphic = new Image(Assets.GFX_TEST_TILE); haveCurrentTile.Graphic.CenterOrigin(); haveCurrentTile.X = X + (x * (mapTileSizeX / 2) + y * (mapTileSizeX / 2)); haveCurrentTile.Y = Y - (z * (mapTileSizeY / 2) + y * (mapTileSizeY / 2) - x * (mapTileSizeY / 2)); haveCurrentTile.Layer = -(2 * z) + y - (x / 2); visibleTiles.Add(index, haveCurrentTile); Scene.Add(haveCurrentTile); } }