/////////////////////////////////////////////////////////////////////////////// // functions /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void OnEnable() { if (target != curEdit) { curEdit = target as exCollisionHelper; // get collision type if (curEdit.GetComponent <BoxCollider>() != null) { collisionType = exCollisionHelper.CollisionType.Boxed; } else if (curEdit.GetComponent <MeshCollider>() != null) { collisionType = exCollisionHelper.CollisionType.Mesh; } else { collisionType = exCollisionHelper.CollisionType.None; } } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ public override void OnInspectorGUI() { bool inAnimMode = AnimationUtility.InAnimationMode(); EditorGUIUtility.LookLikeInspector(); EditorGUILayout.Space(); EditorGUI.indentLevel = 1; curEdit.plane = curEdit.GetComponent <exPlane>(); // ======================================================== // Collision Type // ======================================================== GUI.enabled = !inAnimMode; EditorGUIUtility.LookLikeControls(); exCollisionHelper.CollisionType newCollisionType = (exCollisionHelper.CollisionType)EditorGUILayout.EnumPopup("Collision Type", collisionType, GUILayout.Width(200)); EditorGUIUtility.LookLikeInspector(); GUI.enabled = true; // if (newCollisionType != collisionType) { collisionType = newCollisionType; Collider myCollider = curEdit.GetComponent <Collider>(); if (myCollider != null) { if (myCollider is MeshCollider) { Object.DestroyImmediate((myCollider as MeshCollider).sharedMesh, true); } Object.DestroyImmediate(myCollider, true); } switch (collisionType) { case exCollisionHelper.CollisionType.None: break; case exCollisionHelper.CollisionType.Boxed: curEdit.gameObject.AddComponent <BoxCollider>(); break; case exCollisionHelper.CollisionType.Mesh: curEdit.gameObject.AddComponent <MeshCollider>(); break; } curEdit.UpdateCollider(); } // ======================================================== // Collider Auto Resize // ======================================================== GUILayout.BeginHorizontal(); GUILayout.Space(15); curEdit.autoResizeCollision = GUILayout.Toggle(curEdit.autoResizeCollision, "Auto Resize", GUILayout.Width(120)); EditorGUIUtility.LookLikeControls(); GUI.enabled = curEdit.autoResizeCollision && !curEdit.autoLength; curEdit.length = EditorGUILayout.FloatField("Length", curEdit.length); GUI.enabled = true; EditorGUIUtility.LookLikeInspector(); GUILayout.EndHorizontal(); // ======================================================== // Collider Auto Length // ======================================================== GUILayout.BeginHorizontal(); GUILayout.Space(15); curEdit.autoLength = GUILayout.Toggle(curEdit.autoLength, "Auto Length", GUILayout.Width(120)); GUILayout.EndHorizontal(); // ======================================================== // check dirty // ======================================================== if (GUI.changed) { EditorUtility.SetDirty(curEdit); } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ public override void OnInspectorGUI() { bool inAnimMode = AnimationUtility.InAnimationMode(); EditorGUIUtility.LookLikeInspector (); EditorGUILayout.Space (); EditorGUI.indentLevel = 1; curEdit.plane = curEdit.GetComponent<exPlane>(); // ======================================================== // Collision Type // ======================================================== GUI.enabled = !inAnimMode; EditorGUIUtility.LookLikeControls (); exCollisionHelper.CollisionType newCollisionType = (exCollisionHelper.CollisionType)EditorGUILayout.EnumPopup( "Collision Type", collisionType, GUILayout.Width(200) ); EditorGUIUtility.LookLikeInspector (); GUI.enabled = true; // if ( newCollisionType != collisionType ) { collisionType = newCollisionType; Collider myCollider = curEdit.GetComponent<Collider>(); if ( myCollider != null ) { if ( myCollider is MeshCollider ) Object.DestroyImmediate((myCollider as MeshCollider).sharedMesh,true); Object.DestroyImmediate(myCollider,true); } switch ( collisionType ) { case exCollisionHelper.CollisionType.None : break; case exCollisionHelper.CollisionType.Boxed : curEdit.gameObject.AddComponent<BoxCollider>(); break; case exCollisionHelper.CollisionType.Mesh : curEdit.gameObject.AddComponent<MeshCollider>(); break; } curEdit.UpdateCollider(); } // ======================================================== // Collider Auto Resize // ======================================================== GUILayout.BeginHorizontal(); GUILayout.Space(15); curEdit.autoResizeCollision = GUILayout.Toggle( curEdit.autoResizeCollision, "Auto Resize", GUILayout.Width(120) ); EditorGUIUtility.LookLikeControls (); GUI.enabled = curEdit.autoResizeCollision && !curEdit.autoLength; curEdit.length = EditorGUILayout.FloatField ( "Length", curEdit.length ); GUI.enabled = true; EditorGUIUtility.LookLikeInspector (); GUILayout.EndHorizontal(); // ======================================================== // Collider Auto Length // ======================================================== GUILayout.BeginHorizontal(); GUILayout.Space(15); curEdit.autoLength = GUILayout.Toggle( curEdit.autoLength, "Auto Length", GUILayout.Width(120) ); GUILayout.EndHorizontal(); // ======================================================== // check dirty // ======================================================== if ( GUI.changed ) { EditorUtility.SetDirty(curEdit); } }
/////////////////////////////////////////////////////////////////////////////// // functions /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void OnEnable() { if ( target != curEdit ) { curEdit = target as exCollisionHelper; // get collision type if ( curEdit.GetComponent<BoxCollider>() != null ) { collisionType = exCollisionHelper.CollisionType.Boxed; } else if ( curEdit.GetComponent<MeshCollider>() != null ) { collisionType = exCollisionHelper.CollisionType.Mesh; } else { collisionType = exCollisionHelper.CollisionType.None; } } }