/// <summary> /// Create the temporary component /// </summary> /// <param name="target">The object to attach the temporary component on</param> protected virtual void CreateTempComponent(EditableObject target) { if (!Util.IsValid(target)) { return; } tempComponent = target.gameObjectAttached.AddComponent <ZoomOverride>(); tempComponent.hideFlags = HideFlags.HideAndDontSave; tempComponent.SetWeights(null, 0f); }
Bounds OnGetFrameBounds() { ZoomOverride ren = (ZoomOverride)target; Mesh m = ren.Mesh; Vector3[] vertices = m.vertices; float[] weights = ren.GetWeights(); Bounds bounds = new Bounds(Vector3.zero, Vector3.zero); int appliedWeights = 0; Transform transform = ((ZoomOverride)target).transform; for (int i = 0; i < m.vertexCount; i++) { if (weights[i] > 0.0001f) { if (appliedWeights > 0) { bounds.Encapsulate(transform.TransformPoint(vertices[i])); } else { bounds.center = transform.TransformPoint(vertices[i]); } appliedWeights++; } } if (appliedWeights < 1) { bounds = ren.transform.GetComponent <MeshRenderer>().bounds; } else if (appliedWeights == 1 || bounds.size.magnitude < .1f) { bounds.size = Vector3.one * .5f; } return(bounds); }
bool HasFrameBounds() { ZoomOverride ren = (ZoomOverride)target; return(ren.Mesh != null && ren.GetWeights().Length == ren.Mesh.vertexCount); }