您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
63 行
1.8 KiB
63 行
1.8 KiB
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Experimental.Rendering;
|
|
|
|
namespace UnityEditor.Experimental.Rendering
|
|
{
|
|
public class DebugUIDrawerAttribute : Attribute
|
|
{
|
|
public readonly Type type;
|
|
|
|
public DebugUIDrawerAttribute(Type type)
|
|
{
|
|
this.type = type;
|
|
}
|
|
}
|
|
|
|
public class DebugUIDrawer
|
|
{
|
|
protected T Cast<T>(object o)
|
|
where T : class
|
|
{
|
|
var casted = o as T;
|
|
string typeName = o == null ? "null" : o.GetType().ToString();
|
|
|
|
if (casted == null)
|
|
throw new InvalidOperationException("Can't cast " + typeName + " to " + typeof(T));
|
|
|
|
return casted;
|
|
}
|
|
|
|
public virtual void Begin(DebugUI.Widget widget, DebugState state)
|
|
{}
|
|
|
|
public virtual bool OnGUI(DebugUI.Widget widget, DebugState state)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public virtual void End(DebugUI.Widget widget, DebugState state)
|
|
{}
|
|
|
|
protected void Apply(DebugUI.IValueField widget, DebugState state, object value)
|
|
{
|
|
Undo.RegisterCompleteObjectUndo(state, "Debug Property Change");
|
|
state.SetValue(value, widget);
|
|
widget.SetValue(value);
|
|
EditorUtility.SetDirty(state);
|
|
DebugState.m_CurrentDirtyState = state;
|
|
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
|
|
}
|
|
|
|
protected Rect PrepareControlRect(float height = -1)
|
|
{
|
|
if (height < 0)
|
|
height = EditorGUIUtility.singleLineHeight;
|
|
var rect = GUILayoutUtility.GetRect(1f, 1f, height, height);
|
|
rect.width -= 2f;
|
|
rect.xMin += 2f;
|
|
EditorGUIUtility.labelWidth = rect.width / 2f;
|
|
return rect;
|
|
}
|
|
}
|
|
}
|