Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public bool Init(Vector2Int ChunkId, Vector3 vOffset, Vector2 vRealSize, TerrainFile _groupInfo, LayerTerrainColor colorConfig, LayerTerrainGroups.Chunk chunkConfig, Material mat)
        {
            _boxRect = new Rect(new Vector2(vOffset.x, vOffset.z), vRealSize);

            // Material matrial = Resources.Load<Material>("Terrain/TerainShader");
            //matrial.
            //LayerTerrain.terrainMatrial;
            meshFilter = this.gameObject.GetComponent <MeshFilter>();
            if (meshFilter.sharedMesh == null)
            {
                meshFilter.mesh = new Mesh();
                meshFilter.sharedMesh.MarkDynamic();
            }

            meshRender = gameObject.GetComponent <MeshRenderer>();

#if UNITY_ANDROID
            meshRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
#endif
            meshRender.receiveShadows = true;
            meshRender.sharedMaterial = mat;


            meshCollider                = gameObject.AddComponent <MeshCollider>();
            meshCollider.hideFlags      = HideFlags.HideAndDontSave;
            meshCollider.cookingOptions = MeshColliderCookingOptions.CookForFasterSimulation | MeshColliderCookingOptions.EnableMeshCleaning | MeshColliderCookingOptions.InflateConvexMesh | MeshColliderCookingOptions.WeldColocatedVertices;
            meshCollider.sharedMesh     = meshFilter.sharedMesh;


            nChunkId  = ChunkId;
            offset    = vOffset;
            boxSize   = new Vector2Int(chunkConfig.ChunkWidth, chunkConfig.ChunkLenght);
            worldSize = vRealSize;
            groupInfo = _groupInfo;

            //build triangles
            BuildTriangles(colorConfig, chunkConfig);
            BuildChunk();
            BrushChunkEnd();
            transform.localPosition = offset;
            return(true);
        }
Ejemplo n.º 3
0
 public TerrainBox(TerrainFile file, LayerTerrainColor _colorConfig, LayerTerrainGroups.Chunk chunkdata)
 {
     groupInfo   = file;
     colorConfig = _colorConfig;
     chunkConfig = chunkdata;
 }