// (case 1029160) Modified version of EditorGUI.DoPopup to fit large data list query. private AnimationClip DoClipPopup(AnimationClip clip, GUIStyle style) { Rect position = EditorGUILayout.GetControlRect(false, EditorGUI.kSingleLineHeight, style); clip = popupCI.GetSelectedClipForControl(clip); clip = addCI.GetSelectedClipForControl(clip); Font originalFont = style.font; if (originalFont && EditorGUIUtility.GetBoldDefaultFont() && originalFont == EditorStyles.miniFont) { style.font = EditorStyles.miniBoldFont; } GUIContent buttonContent = EditorGUIUtility.TempContent(CurveUtility.GetClipName(clip)); buttonContent.tooltip = AssetDatabase.GetAssetPath(clip); if (GUI.Button(position, buttonContent, style)) { DisplayClipMenu(position, clip); } return(clip); }
public override void OnGUI(Rect position, SerializedProperty prop, GUIContent label) { SerializedProperty serializedProperty = prop.FindPropertyRelative("defaultValue"); SerializedProperty serializedProperty2 = prop.FindPropertyRelative("exposedName"); string text = serializedProperty2.stringValue; BaseExposedPropertyDrawer.ExposedPropertyMode exposedPropertyMode = BaseExposedPropertyDrawer.GetExposedPropertyMode(text); Rect rect = position; rect.xMax -= BaseExposedPropertyDrawer.kDriveWidgetWidth; Rect position2 = position; position2.x = rect.xMax; position2.width = BaseExposedPropertyDrawer.kDriveWidgetWidth; IExposedPropertyTable exposedPropertyTable = this.GetExposedPropertyTable(prop); bool flag = exposedPropertyTable != null; PropertyName propertyName = new PropertyName(text); BaseExposedPropertyDrawer.OverrideState overrideState = BaseExposedPropertyDrawer.OverrideState.DefaultValue; UnityEngine.Object currentReferenceValue = this.Resolve(propertyName, exposedPropertyTable, serializedProperty.objectReferenceValue, out overrideState); Color color = GUI.color; bool boldDefaultFont = EditorGUIUtility.GetBoldDefaultFont(); Rect position3 = this.DrawLabel(flag, overrideState, label, position, exposedPropertyTable, text, serializedProperty2, serializedProperty); EditorGUI.BeginChangeCheck(); if (exposedPropertyMode == BaseExposedPropertyDrawer.ExposedPropertyMode.DefaultValue || exposedPropertyMode == BaseExposedPropertyDrawer.ExposedPropertyMode.NamedGUID) { this.OnRenderProperty(position3, propertyName, currentReferenceValue, serializedProperty, serializedProperty2, exposedPropertyMode, exposedPropertyTable); } else { position3.width /= 2f; EditorGUI.BeginChangeCheck(); text = EditorGUI.TextField(position3, text); if (EditorGUI.EndChangeCheck()) { serializedProperty2.stringValue = text; } position3.x += position3.width; this.OnRenderProperty(position3, new PropertyName(text), currentReferenceValue, serializedProperty, serializedProperty2, exposedPropertyMode, exposedPropertyTable); } EditorGUI.EndDisabledGroup(); GUI.color = color; EditorGUIUtility.SetBoldDefaultFont(boldDefaultFont); if (flag && GUI.Button(position2, GUIContent.none, BaseExposedPropertyDrawer.kDropDownStyle)) { GenericMenu genericMenu = new GenericMenu(); this.PopulateContextMenu(genericMenu, overrideState, exposedPropertyTable, serializedProperty2, serializedProperty); genericMenu.ShowAsContext(); Event.current.Use(); } }
// (case 1029160) Modified version of EditorGUI.DoPopup to fit large data list query. private AnimationClip DoClipPopup(AnimationClip clip, GUIStyle style) { Rect position = EditorGUILayout.GetControlRect(false, EditorGUI.kSingleLineHeight, style); int controlID = GUIUtility.GetControlID(s_ClipPopupHash, FocusType.Keyboard, position); clip = ClipPopupCallbackInfo.GetSelectedClipForControl(controlID, clip); Event evt = Event.current; switch (evt.type) { case EventType.Repaint: Font originalFont = style.font; if (originalFont && EditorGUIUtility.GetBoldDefaultFont() && originalFont == EditorStyles.miniFont) { style.font = EditorStyles.miniBoldFont; } GUIContent buttonContent = EditorGUIUtility.TempContent(CurveUtility.GetClipName(clip)); buttonContent.tooltip = AssetDatabase.GetAssetPath(clip); style.Draw(position, buttonContent, controlID, false); style.font = originalFont; break; case EventType.MouseDown: if (evt.button == 0 && position.Contains(evt.mousePosition)) { DisplayClipMenu(position, controlID, clip); GUIUtility.keyboardControl = controlID; evt.Use(); } break; case EventType.KeyDown: if (evt.MainActionKeyForControl(controlID)) { DisplayClipMenu(position, controlID, clip); evt.Use(); } break; } return(clip); }
public override void OnGUI(Rect position, UnityEditor.SerializedProperty prop, GUIContent label) { SerializedProperty defaultValue = prop.FindPropertyRelative("defaultValue"); SerializedProperty exposedName = prop.FindPropertyRelative("exposedName"); var exposedNameStr = exposedName.stringValue; // 是默认值,GUID,还是名称 var propertyMode = GetExposedPropertyMode(exposedNameStr); Rect propertyFieldPosition = position; propertyFieldPosition.xMax = propertyFieldPosition.xMax - ExposedReferencePropertyDrawer.kDriveWidgetWidth; Rect driveFieldPosition = position; driveFieldPosition.x = propertyFieldPosition.xMax; driveFieldPosition.width = ExposedReferencePropertyDrawer.kDriveWidgetWidth; var exposedPropertyTable = GetExposedPropertyTable(prop); bool showContextMenu = exposedPropertyTable != null; var propertyName = new PropertyName(exposedNameStr); OverrideState currentOverrideState = OverrideState.DefaultValue; var currentReferenceValue = Resolve(propertyName, exposedPropertyTable, defaultValue.objectReferenceValue, out currentOverrideState); var previousColor = GUI.color; var wasBoldDefaultFont = EditorGUIUtility.GetBoldDefaultFont(); var valuePosition = DrawLabel(showContextMenu, currentOverrideState, label, position, exposedPropertyTable, exposedNameStr, exposedName, defaultValue); if (propertyMode == ExposedPropertyMode.DefaultValue || propertyMode == ExposedPropertyMode.NamedGUID) { OnRenderProperty(valuePosition, propertyName, currentReferenceValue, defaultValue, exposedName, propertyMode, exposedPropertyTable); } else { valuePosition.width /= 2; EditorGUI.BeginChangeCheck(); exposedNameStr = EditorGUI.TextField(valuePosition, exposedNameStr); if (EditorGUI.EndChangeCheck()) { exposedName.stringValue = exposedNameStr; } valuePosition.x += valuePosition.width; OnRenderProperty(valuePosition, new PropertyName(exposedNameStr), currentReferenceValue, defaultValue, exposedName, propertyMode, exposedPropertyTable); } GUI.color = previousColor; EditorGUIUtility.SetBoldDefaultFont(wasBoldDefaultFont); if (showContextMenu && GUI.Button(driveFieldPosition, GUIContent.none, kDropDownStyle)) { GenericMenu menu = new GenericMenu(); PopulateContextMenu(menu, currentOverrideState, exposedPropertyTable, exposedName, defaultValue); menu.ShowAsContext(); Event.current.Use(); } }