private void CreateChunk() { MapChunkMesh.Clear(); ChunkVectors = new List <Vector3>(); ChunkTriangles = new List <int>(); ChunkColors = new List <Color>(); for (int k = 0; k < ChunkTile.Count; k++) { if (BaseTiles.GetFloorType(ChunkTile[k]) == null) { continue; } Tile TheTile = BaseTiles.GetTile(ChunkTile[k]); Vector3 center = BaseTiles.TileLocation(ChunkTile[k]); if (BaseTiles.GetTile(ChunkTile[k]).solidType != null) { DrawSolid(center, TheTile.MySolidColor.Value, k); } else { Color?FloorColor = BaseTiles.GetFloorType(ChunkTile[k]).TileTypeColor; if (!FloorColor.HasValue) { FloorColor = BaseTiles.GetTile(ChunkTile[k].Below).MySolidColor; if (!FloorColor.HasValue) { continue; //this shouldnt come up but oh well } } DrawFloor(center, FloorColor.Value, k); } } MapChunkMesh.vertices = ChunkVectors.ToArray(); MapChunkMesh.triangles = ChunkTriangles.ToArray(); MapChunkMesh.colors = ChunkColors.ToArray(); MapChunkMesh.RecalculateNormals(); ChunkCollider.sharedMesh = MapChunkMesh; dFlagChunk = false; }
public TileListBase(TileListBase tilelist) //deep copy { _XDim = tilelist.XDim; _ZDim = tilelist.ZDim; _YDim = tilelist.YDim; _MapTiles = new List <Tile>(XDim * ZDim * YDim); if (_MapTiles.Capacity == 0) { throw new Exception("Don't make zero capacity tile lists please."); } for (int i = 0; i < _MapTiles.Capacity; i++) { _MapTiles.Add(null); if (tilelist.GetTile(i) != null) { //throw new Exception("Its working"); this.SetTile(i, new Tile(tilelist.GetTile(i).solidType, tilelist.GetTile(i).floorType)); } else { this.SetTile(i, new Tile()); } } }
public void AssignTiles(List <HexCoordinates> tiles, TileListBase baseTiles) { BaseTiles = baseTiles; ChunkTile = tiles; TileTriangleCount = new List <int>(); for (int i = 0; i < ChunkTile.Count; i++) { TileTriangleCount.Add(0); } MapChunkMesh.Clear(); ChunkVectors = new List <Vector3>(); ChunkTriangles = new List <int>(); ChunkColors = new List <Color>(); for (int i = 0; i < ChunkTile.Count; i++) { BaseTiles.GetTile(ChunkTile[i]).TileTypeChangedEvent += TileTypeChanged; } CreateChunk(); }