Beispiel #1
0
        public bool Init(LayerTerrainColor color, LayerTerrainGroups.Chunk data, TerrainFile file, Material mat)
        {
            chunkData   = data;
            filedata    = file;
            ChunkColumn = (file.terrainWidth / data.ChunkWidth);
            //2 *2 or 3*3 4*4
            ChunkRow   = (file.terrainLength / data.ChunkLenght);
            ChunkCount = ChunkColumn * ChunkRow;
            //create Chunk
            Chunks.Capacity = ChunkCount;
            float WorldChunkSize = file.worldSize.x / ChunkColumn;



            for (int idy = 0; idy < ChunkRow; ++idy)
            {
                for (int idx = 0; idx < ChunkColumn; ++idx)
                {
                    GameObject Chunk = new GameObject(this.gameObject.name + "Chunk[" + idy.ToString() + ":" + idx.ToString() + "]");
                    Chunk.transform.parent = transform;
                    Chunk.tag   = "Terrain";
                    Chunk.layer = 8;
                    MeshFilter meshfilter = Chunk.AddComponent <MeshFilter>();
                    meshfilter.hideFlags = HideFlags.HideAndDontSave;
                    MeshRenderer render = Chunk.AddComponent <MeshRenderer>();
                    render.hideFlags = HideFlags.DontSave;

                    TerrainChunk terrainChunkItem = Chunk.AddComponent <TerrainChunk>();
                    terrainChunkItem.hideFlags = HideFlags.HideAndDontSave;

                    Vector2Int index = new Vector2Int();
                    index.x = idx;
                    index.y = idy;

                    Vector3 offset = new Vector3();
                    offset.x = WorldChunkSize * idx;
                    offset.z = WorldChunkSize * idy;
                    offset.y = 0.0f;

                    terrainChunkItem.Init(new Vector2Int(idx, idy), offset,
                                          new Vector2(WorldChunkSize, WorldChunkSize),
                                          file, color, data, mat);
                    Chunks.Add(terrainChunkItem);
                }
            }
            return(true);
        }