ui基本完毕,修了一大把的bug
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
[CustomPropertyDrawer(typeof(PrefractureOptions))]
|
||||
public class PrefractureOptionsPropertyDrawer : PropertyDrawer
|
||||
{
|
||||
private static bool foldout = true;
|
||||
|
||||
// Draw the property inside the given rect
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var unfreezeAll = property.FindPropertyRelative("unfreezeAll");
|
||||
var saveFragmentsToDisk = property.FindPropertyRelative("saveFragmentsToDisk");
|
||||
var saveLocation = property.FindPropertyRelative("saveLocation");
|
||||
|
||||
EditorGUI.indentLevel = 0;
|
||||
foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, label);
|
||||
|
||||
if (foldout)
|
||||
{
|
||||
EditorGUI.indentLevel = 1;
|
||||
|
||||
EditorGUILayout.PropertyField(unfreezeAll, new GUIContent("Unfreeze All"));
|
||||
EditorGUILayout.PropertyField(saveFragmentsToDisk, new GUIContent("Save Fragments To Disk"));
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.PropertyField(saveLocation, new GUIContent("Save Location"));
|
||||
|
||||
if (GUILayout.Button(" . . . ", GUILayout.ExpandWidth(false)))
|
||||
{
|
||||
string path = EditorUtility.OpenFolderPanel("Select Save Location", "", "");
|
||||
if (path.StartsWith(Application.dataPath))
|
||||
{
|
||||
saveLocation.stringValue = "Assets" + path.Substring(Application.dataPath.Length);
|
||||
saveLocation.serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new System.ArgumentException("Full path does not contain the current project's Assets folder", "absolutePath");
|
||||
}
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Space(4);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
GUILayout.Space(16);
|
||||
if (GUILayout.Button("Prefracture Mesh", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(32) }))
|
||||
{
|
||||
((Prefracture)property.serializedObject.targetObject).ComputeFracture();
|
||||
}
|
||||
GUILayout.Space(16);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
GUILayout.Space(4);
|
||||
}
|
||||
|
||||
EditorGUILayout.EndFoldoutHeaderGroup();
|
||||
EditorGUI.indentLevel = 0;
|
||||
}
|
||||
|
||||
// Hack to prevent extra space at top of property drawer. This is due to using EditorGUILayout
|
||||
// in OnGUI, but I don't want to have to manually specify control sizes
|
||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 0; }
|
||||
}
|
||||
Reference in New Issue
Block a user