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); }
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); }
public TerrainBox(TerrainFile file, LayerTerrainColor _colorConfig, LayerTerrainGroups.Chunk chunkdata) { groupInfo = file; colorConfig = _colorConfig; chunkConfig = chunkdata; }