Beispiel #1
0
    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;
    }
Beispiel #2
0
 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());
         }
     }
 }
Beispiel #3
0
    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();
    }