// Use this for initialization void Start() { components = GetComponentsInChildren <MeshFilter>(); rend = GetComponentsInChildren <Renderer>(); if (gameObject.isStatic) { enabled = false; Debug.Log("Static mesh convertion is not possible"); return; } ; quadMesh = GetComponentsInChildren <MeshFilter>(); foreach (Renderer red in rend) { material = red.sharedMaterials; } if (quadMesh != null) { /* foreach (MeshFilter quad in quadMesh) * { * DestroyImmediate(quad.sharedMesh); * }*/ // DestroyImmediate(quadMesh[i]); //Generate new quad mesh based on 'Coef' parameters foreach (MeshFilter mf in components) { Mesh originalMesh = mf.sharedMesh; quadMesh[i].sharedMesh = WireframeGenerator.GenerateQuads(originalMesh, normalCoef, angleCoef, areaCoef); i++; } } i = 0; /* if (originalMesh == null) * { * Debug.LogWarning("No mesh data."); * * enabled = false; * }*/ /*else if(originalMesh.triangles.Length / 3 > 21000) * { * Debug.LogWarning("Can not convert mesh with more then 21000 triangles."); * * originalMesh = null; * enabled = false; * }*/ i = 0; this.gameObject.SetActive(false); }
// Update is called once per frame void Update() { if (originalMesh == null) { return; } //If any of the properties has changed, than generate new mesh if ((normalCoef_current != normalCoef) || (angleCoef_current != angleCoef) || (areaCoef_current != areaCoef)) { normalCoef_current = normalCoef; angleCoef_current = angleCoef; areaCoef_current = areaCoef; //Do not forget to delete previously generated quad mesh if (quadMesh != null) { DestroyImmediate(quadMesh); } //Generate new quad mesh based on 'Coef' parameters quadMesh = WireframeGenerator.GenerateQuads(originalMesh, normalCoef, angleCoef, areaCoef); //Assign new mesh if (quadMesh != null) { GetComponent <MeshFilter>().sharedMesh = quadMesh; //Just make wireframe visible material.SetColor("_V_WIRE_Color", new Color(1, 0.5f, 0f, 1)); } else { Debug.Log("houston we have a problem"); } } }