Advertisement
SebastianLague

TerrainChunk + collider, unoptimized

Mar 20th, 2016
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.26 KB | None | 0 0
  1.     public TerrainChunk(Vector2 coord, int size, Transform parent, Material material) {
  2.         position = coord * size;
  3.         bounds = new Bounds(position,Vector2.one * size);
  4.         Vector3 positionV3 = new Vector3(position.x,0,position.y);
  5.  
  6.         meshObject = new GameObject("Terrain Chunk");
  7.         meshRenderer = meshObject.AddComponent<MeshRenderer>();
  8.         meshFilter = meshObject.AddComponent<MeshFilter>();
  9.         meshCollider = meshObject.AddComponent<MeshCollider>();
  10.         meshRenderer.material = material;
  11.  
  12.         meshObject.transform.position = positionV3;
  13.         meshObject.transform.parent = parent;
  14.         SetVisible(false);
  15.  
  16.         mapGenerator.RequestMapData(OnMapDataReceived);
  17.     }
  18.  
  19.     void OnMapDataReceived(MapData mapData) {
  20.         mapGenerator.RequestMeshData (mapData, OnMeshDataReceived);
  21.     }
  22.  
  23.     void OnMeshDataReceived(MeshData meshData) {
  24.         Mesh mesh = meshData.CreateMesh ();
  25.         meshFilter.mesh = mesh;
  26.         meshCollider.sharedMesh = mesh;
  27.     }
  28.  
  29.  
  30.     public void UpdateTerrainChunk() {
  31.         float viewerDstFromNearestEdge = Mathf.Sqrt(bounds.SqrDistance (viewerPosition));
  32.         bool visible = viewerDstFromNearestEdge <= maxViewDst;
  33.         SetVisible (visible);
  34.     }
  35.  
  36.     public void SetVisible(bool visible) {
  37.         meshObject.SetActive (visible);
  38.     }
  39.  
  40.     public bool IsVisible() {
  41.         return meshObject.activeSelf;
  42.     }
  43.  
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement