private static void OnGUI_DrawPopOutButton(Rect position, Object popoutReference) { if (popoutReference != null) { var buttonRect = new Rect(position.x - position.height, position.y, position.height, position.height); if (GUI.Button(buttonRect, "", "OL Plus")) { var windowRect = new Rect(GUIUtility.GUIToScreenPoint(position.position), new Vector2(400, 500)); PopupEditorWindow.Create(popoutReference, windowRect); } } }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { if (property.objectReferenceValue != null && !property.hasMultipleDifferentValues) { var buttonRect = new Rect(position.x + (EditorGUI.indentLevel - 1) * position.height + 2, position.y, position.height - 4, position.height); if (GUI.Button(buttonRect, "", "OL Plus")) { var windowRect = new Rect(GUIUtility.GUIToScreenPoint(position.position), new Vector2(500, 500)); PopupEditorWindow.Create(property.objectReferenceValue, windowRect); } } EditorGUI.PropertyField(position, property, label); }
public override void OnGUI(Rect position, UnityEditor.SerializedProperty property, GUIContent label) { var foldoutRect = new Rect(position.position.x - HEADER_HEIGHT + 3 + EditorGUI.indentLevel * 15, position.position.y, HEADER_HEIGHT, HEADER_HEIGHT - 4); EditorGUI.BeginChangeCheck(); bool foldout = window != null; if (!foldout) { if (property.objectReferenceValue == null || property.hasMultipleDifferentValues) { foldout = false; } else { foldout = GUI.Button(foldoutRect, "", "OL Plus"); } } var objFieldRect = new Rect(position.x, position.y, position.width, HEADER_HEIGHT); EditorGUI.ObjectField(objFieldRect, property, label); if (foldout) { var rect = new Rect(new Vector2(position.position.x, position.position.y + HEADER_HEIGHT), new Vector2(position.width, EDITOR_HEIGHT)); //Debug.Log(rect.ToString()); rect.position = EditorGUIUtility.GUIToScreenPoint(rect.position); if (window == null) { window = PopupEditorWindow.Create(property.objectReferenceValue, position, new Vector2(position.width, EDITOR_HEIGHT)); } if (window) { window.position = rect; } } else { if (window) { window.Close(); window = null; } } }