public override void OnInspectorGUI() { DrawDefaultInspector(); if (CubeTest.cubes == null) { return; } if (GUILayout.Button("New Metaball")) { Undo.RegisterUndo(CubeTest.cubes, "Add Metaball"); CubeTest.cubes.metaBalls.metaPoints.Add(new MetaPoint { pos = Vector3.zero, power = 1.0f }); //CubeTest.cubes.ComputeMetaBalls(); EditorUtility.SetDirty(CubeTest.cubes); } EditorGUI.BeginChangeCheck(); showWire = EditorGUILayout.Toggle("Show Wireframe", showWire); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetSelectedWireframeHidden(CubeTest.renderer, !showWire); EditorUtility.SetDirty(CubeTest.cubes); } bool newCap = EditorGUILayout.Toggle("Cap", CubeTest.cubes.capped); if (newCap != CubeTest.cubes.capped) { Undo.RegisterUndo(CubeTest.cubes, "Toggle Capping"); CubeTest.cubes.capped = newCap; //CubeTest.cubes.ComputeMetaBalls(); EditorUtility.SetDirty(CubeTest.cubes); } IntVector3 steps = EditorGUILayout.Vector3Field("Cube Steps", CubeTest.cubes.Steps); if (!steps.Same(CubeTest.cubes.Steps)) { Undo.RegisterUndo(CubeTest.cubes, "Change Step Size"); CubeTest.cubes.Steps = steps; //CubeTest.cubes.ComputeMetaBalls(); EditorUtility.SetDirty(CubeTest.cubes); } Vector3 min = EditorGUILayout.Vector3Field("Cube Min", CubeTest.cubes.Min); if ((min - CubeTest.cubes.Min).sqrMagnitude > Mathf.Epsilon) { Undo.RegisterUndo(CubeTest.cubes, "Change Cube Dimensions"); CubeTest.cubes.Min = min; //CubeTest.cubes.ComputeMetaBalls(); EditorUtility.SetDirty(CubeTest.cubes); } Vector3 max = EditorGUILayout.Vector3Field("Cube Max", CubeTest.cubes.Max); if ((max - CubeTest.cubes.Max).sqrMagnitude > Mathf.Epsilon) { Undo.RegisterUndo(CubeTest.cubes, "Change Cube Dimensions"); CubeTest.cubes.Max = max; //CubeTest.cubes.ComputeMetaBalls(); EditorUtility.SetDirty(CubeTest.cubes); } }