private void GUINullOption() { InterfaceableGUIHelper.HorizontalBlock(() => { InterfaceableGUIHelper.EnabledBlock(() => { GUI.enabled = _allObjects.Any(); if (GUILayout.Button(new GUIContent("▼", "Expand All"), GUILayout.ExpandWidth(false))) { FoldoutAll(_allObjects, true); } if (GUILayout.Button(new GUIContent("▲", "Collapse All"), GUILayout.ExpandWidth(false))) { FoldoutAll(_allObjects, false); } }); var style = _serializedContainer.ObjectField == null && string.IsNullOrEmpty(_serializedContainer.ResultType) ? InterfaceableGUIHelper.SelectWindowStyles.NullSelected : InterfaceableGUIHelper.SelectWindowStyles.NullOption; if (GUILayout.Button("NULL", style, GUILayout.ExpandWidth(true))) { _serializedContainer.ObjectField = null; _serializedContainer.ApplyModifiedProperties(); } EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link); GUILayout.Space(5.0f); }); }
private void GUISelectObjectType() { InterfaceableGUIHelper.HorizontalBlock(() => { InterfaceableGUIHelper.EnabledBlock(() => { GUI.enabled = _sceneAssetsExist; if (GUILayout.Button("Scene Assets", _selectingProjectAssets ? GUI.skin.button : InterfaceableGUIHelper.SelectWindowStyles.SelectedButton)) { _selectingProjectAssets = false; } }); InterfaceableGUIHelper.EnabledBlock(() => { GUI.enabled = _projectAssetsExist; if (GUILayout.Button("Project Assets", _selectingProjectAssets ? InterfaceableGUIHelper.SelectWindowStyles.SelectedButton : GUI.skin.button)) { _selectingProjectAssets = true; } }); }); }
private static void DrawInterfaceableContainer <TResult>(Rect position, GUIContent label, SerializedContainer serializedContainer) where TResult : class { _currentEvent = Event.current; var resultTypeName = NeverLab.Interfaceable.InterfaceableContainerBase.ConstructResolvedName(CachedType <TResult> .Type); if (string.IsNullOrEmpty(label.tooltip)) { label.tooltip = resultTypeName; } var labelRect = new GUIContentRect(label, position); labelRect.SetWidth(EditorGUIUtility.labelWidth); var resultRect = new GUIContentRect(null, position); resultRect.MoveNextTo(labelRect); resultRect.Rect.xMax -= (ButtonSpace + ButtonWidth) * 2; var nullButonRect = new GUIContentRect(null, position); nullButonRect.MoveNextTo(resultRect, ButtonSpace); nullButonRect.SetWidth(ButtonWidth); var listButtonRect = new GUIContentRect(null, position); listButtonRect.MoveNextTo(nullButonRect, ButtonSpace); listButtonRect.SetWidth(ButtonWidth); var isProjectAsset = serializedContainer.IsProjectAsset; var pingable = !serializedContainer.ObjectFieldProperty.hasMultipleDifferentValues && InterfaceableGUIHelper.IsPingable(serializedContainer.ObjectField); var dragDropResult = GetDragAndDropResult <TResult>(resultRect, isProjectAsset, serializedContainer); EditorGUI.LabelField(labelRect, label); InterfaceableGUIHelper.EnabledBlock(() => { GUI.enabled = pingable; InterfaceableGUIHelper.ColorBlock(() => { if (serializedContainer.Selecting || serializedContainer.Dropping) { GUI.color = new Color(1, 1, 1, 2); } else { GUI.color = pingable ? new Color(1, 1, 1, 2) : Color.white; } DrawField(serializedContainer, resultRect, pingable); }); }); if (dragDropResult != null) { serializedContainer.ObjectField = dragDropResult as Object; GUI.changed = true; } if (GUI.Button(nullButonRect, new GUIContent("○", "Set to null"), InterfaceableGUIHelper.InspectorStyles.NullOutButton)) { serializedContainer.ObjectField = null; } InterfaceableGUIHelper.EnabledBlock(() => { if (GUI.Button(listButtonRect, new GUIContent("◉", "Select from list"), InterfaceableGUIHelper.InspectorStyles.SelectFromListButton)) { _selectWindow = InterfaceableContainerSelectWindow.ShowSelectWindow(resultTypeName, isProjectAsset, serializedContainer, GetSelectable <TResult>(isProjectAsset)); } }); }