public void UpdateState() { if (Material != null) { FinalMaterial = Material; } else { if (Parent != null) { FinalMaterial = Parent.FinalMaterial; } else { FinalMaterial = Terrain.Material; } } if (ChildrenExist == true) { if (meshRenderer != null) { SgtHelper.SetEnabled(meshRenderer, false); } // Has colliders if it's the last depth UpdateCollider(Depth + 1 == Terrain.MaxColliderDepth); } else { if (Mesh == null) { Terrain.RebuildPatch(this); } if (meshRenderer == null) { meshRenderer = SgtHelper.GetOrAddComponent <MeshRenderer>(gameObject); } if (meshFilter == null) { meshFilter = SgtHelper.GetOrAddComponent <MeshFilter>(gameObject); } SgtHelper.SetEnabled(meshRenderer, true); if (meshFilter.sharedMesh != Mesh) { SgtHelper.BeginStealthSet(meshFilter); { meshFilter.sharedMesh = Mesh; } SgtHelper.EndStealthSet(); } UpdateMaterials(); // Has colliders if it's under max depth UpdateCollider(Depth < Terrain.MaxColliderDepth); } }