GQ_Communicate/GQ_TongXin/Assets/Obi/Editor/ObiTetherConstraintsEditor.cs

86 lines
1.9 KiB
C#

using UnityEditor;
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
namespace Obi{
/**
* Custom inspector for ObiTetherConstraints component.
*/
[CustomEditor(typeof(ObiTetherConstraints)), CanEditMultipleObjects]
public class ObiTetherConstraintsEditor : Editor
{
ObiTetherConstraints constraints;
ObiActor.TetherType tetherType;
public void OnEnable(){
constraints = (ObiTetherConstraints)target;
}
public override void OnInspectorGUI() {
serializedObject.UpdateIfRequiredOrScript();
Editor.DrawPropertiesExcluding(serializedObject,"m_Script");
GUI.enabled = (constraints.Actor != null && constraints.Actor.Initialized);
GUILayout.BeginHorizontal();
if (GUILayout.Button("Generate Tethers")){
if (constraints.Actor != null){
Undo.RegisterCompleteObjectUndo(constraints, "Generate tethers");
constraints.RemoveFromSolver(null);
if (!constraints.Actor.GenerateTethers(tetherType)){
Debug.LogWarning("Could not generate tethers. Make sure the actor has been properly initialized.");
}
constraints.AddToSolver(null);
}
}
if (constraints.Actor is ObiRope)
tetherType = (ObiActor.TetherType)EditorGUILayout.EnumPopup(tetherType);
GUILayout.EndHorizontal();
if (GUILayout.Button("Clear Tethers")){
if (constraints.Actor != null){
if (EditorUtility.DisplayDialog("Clear tethers","Are you sure you want to remove all tethers?","Ok","Cancel")){
Undo.RegisterCompleteObjectUndo(constraints, "Clear tethers");
constraints.RemoveFromSolver(null);
constraints.Actor.ClearTethers();
constraints.AddToSolver(null);
}
}
}
GUI.enabled = true;
// Apply changes to the serializedProperty
if (GUI.changed){
serializedObject.ApplyModifiedProperties();
constraints.PushDataToSolver();
}
}
}
}