public void Simplify(Vector3 target) { Vector3 center = GetTriangleCenter(); Vector3 normalizedTarget = (target - planet.transform.position).normalized; float distance = (target - planet.transform.position).magnitude; Vector3 v = _b - _a; float magnitude = v.magnitude; if ((normalizedTarget * (distance / _radius) - center).magnitude > (magnitude * planet.drawDistance)) { foreach (Transform t in transform) { GetComponent <MeshRenderer>().enabled = true; t.gameObject.SetActive(false); } } else { if (transform.childCount == 0 && _counter > 0) { Divide(); } foreach (Transform t in transform) { TriangleTerrain tt = t.GetComponent <TriangleTerrain>(); if (tt) { t.gameObject.SetActive(true); GetComponent <MeshRenderer>().enabled = false; tt.Simplify(target); } } } }
public void Simplify(Vector3 position) { foreach (Transform t in transform) { TriangleTerrain terrain = t.GetComponent <TriangleTerrain>(); if (terrain) { terrain.Simplify(position); } } }
public void CreateTerrain(Vector3 a, Vector3 b, Vector3 c) { GameObject g = new GameObject(); g.transform.parent = transform; g.transform.localPosition = Vector3.zero; TriangleTerrain t = g.AddComponent <TriangleTerrain>(); t.GetComponent <MeshRenderer>().sharedMaterial = material; t.planet = this; t.Generate(a, b, c, resolution, radius, division, child); }
void makeChild(Vector3 a, Vector3 b, Vector3 c) { MeshRenderer rend = GetComponent <MeshRenderer>(); GameObject g = new GameObject(); TriangleTerrain t = g.AddComponent <TriangleTerrain>(); g.transform.parent = transform; g.transform.localPosition = Vector3.zero; g.GetComponent <MeshRenderer>().sharedMaterial = rend.sharedMaterial; t.planet = planet; g.isStatic = true; t.Generate(a, c, b, _counter - 1, _radius, _size, _s2); rend.enabled = false; }