public override void OnInspectorGUI() { SAMeshCollider meshCollider = (SAMeshCollider)target; if (meshCollider.edittingMeshCollidertProperty == null) { if (meshCollider.meshColliderProperty != null) { meshCollider.edittingMeshCollidertProperty = meshCollider.meshColliderProperty.Copy(); } } SAMeshColliderProperty meshColliderProperty = meshCollider.edittingMeshCollidertProperty; if (meshColliderProperty != null) { SplitProperty splitProperty = meshColliderProperty.splitProperty; if (splitProperty != null) { GUILayout.Label("Split", EditorStyles.boldLabel); // Split Material GUI.enabled = ((int)meshCollider.splitMode <= (int)SplitMode.None); splitProperty.splitMaterialEnabled = EditorGUILayout.Toggle("Split Material", splitProperty.splitMaterialEnabled); GUI.enabled = true; // Split Primitive GUI.enabled = ((int)meshCollider.splitMode <= (int)SplitMode.Material); splitProperty.splitPrimitiveEnabled = EditorGUILayout.Toggle("Split Primitive", splitProperty.splitPrimitiveEnabled); GUI.enabled = true; // Split Polygon Normal EditorGUILayout.BeginHorizontal(); GUI.enabled = ((int)meshCollider.splitMode <= (int)SplitMode.Primitive); splitProperty.splitPolygonNormalEnabled = EditorGUILayout.Toggle("Split Polygon Normal", splitProperty.splitPolygonNormalEnabled); GUI.enabled = GUI.enabled && meshCollider.splitPolygonNormalEnabled; splitProperty.splitPolygonNormalAngle = EditorGUILayout.Slider(splitProperty.splitPolygonNormalAngle, 0.0f, 180.0f); GUI.enabled = true; EditorGUILayout.EndHorizontal(); } EditorGUILayout.Separator(); GUILayout.Label("Reducer", EditorStyles.boldLabel); SAColliderBuilderEditorCommon.ReducerInspectorGUI(meshColliderProperty.reducerProperty, ReducerOption.Advanced); GUI.enabled = meshColliderProperty.reducerProperty.shapeType != ShapeType.None; EditorGUILayout.Separator(); GUILayout.Label("Collider", EditorStyles.boldLabel); SAColliderBuilderEditorCommon.ColliderInspectorGUI(meshColliderProperty.colliderProperty, ColliderOption.None); EditorGUILayout.Separator(); GUILayout.Label("Rigidbody", EditorStyles.boldLabel); SAColliderBuilderEditorCommon.RigidbodyInspectorGUI(meshColliderProperty.rigidbodyProperty); GUI.enabled = true; } EditorGUILayout.Separator(); meshCollider.cleanupModified = EditorGUILayout.Toggle("Cleanup Modified", meshCollider.cleanupModified); meshCollider.isDebug = EditorGUILayout.Toggle("Is Debug", meshCollider.isDebug); EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Set Default")) { if (meshCollider.defaultMeshColliderProperty != null) { float beginTime = Time.realtimeSinceStartup; meshCollider.meshColliderProperty = meshCollider.defaultMeshColliderProperty.Copy(); meshCollider.edittingMeshCollidertProperty = null; Process(meshCollider); meshCollider.cleanupModified = false; SAMeshColliderEditorCommon.UnmarkManualProcessingToParent(meshCollider); meshCollider.ResetModifyName(); float endTime = Time.realtimeSinceStartup; Debug.Log("Processed.[" + (endTime - beginTime) + " sec]"); } } GUILayout.FlexibleSpace(); if (GUILayout.Button("Revert")) { meshCollider.edittingMeshCollidertProperty = null; } if (GUILayout.Button("Cleanup")) { if (meshCollider.edittingMeshCollidertProperty != null) { meshCollider.meshColliderProperty = meshCollider.edittingMeshCollidertProperty; meshCollider.edittingMeshCollidertProperty = null; Cleanup(meshCollider); meshCollider.cleanupModified = false; meshCollider.isDebug = false; Debug.Log("Cleanuped."); } } if (GUILayout.Button("Process")) { if (meshCollider.edittingMeshCollidertProperty != null) { float beginTime = Time.realtimeSinceStartup; meshCollider.meshColliderProperty = meshCollider.edittingMeshCollidertProperty; meshCollider.edittingMeshCollidertProperty = null; Process(meshCollider); meshCollider.cleanupModified = false; meshCollider.isDebug = false; float endTime = Time.realtimeSinceStartup; Debug.Log("Processed.[" + (endTime - beginTime) + " sec]"); } } EditorGUILayout.EndHorizontal(); }