public void setObject(UnityEngine.Object o) { replaceValue.SetObject(o); type = ObjectUtil.getTypeFromObject(o); }
// utility function to get a game object from this object if possible. public GameObject GetGameObject() { return(ObjectUtil.GetGameObject(obj)); }
void showDragAndDrop() { Rect r = EditorGUILayout.BeginHorizontal(); Event e = Event.current; bool acceptingDrag = (e.type == EventType.DragUpdated || e.type == EventType.DragPerform) && r.Contains(e.mousePosition); if (acceptingDrag) { if (DragAndDrop.objectReferences.Length == 1) { UnityEngine.Object firstObj = DragAndDrop.objectReferences[0]; SRWindow.Instance.Repaint(); DragAndDrop.AcceptDrag(); DragAndDrop.visualMode = DragAndDropVisualMode.Link; if (e.type == EventType.DragPerform) { draggedObj = firstObj; } } else { DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; } } string dragText = null; if (objID.obj != null) { if (objID.obj is MonoScript) { MonoScript m = (MonoScript)objID.obj; dragText = "Currently searching " + m.GetClass().Name + "s."; } else { dragText = "Currently searching " + objID.obj.GetType().Name + "s."; } dragText += "\n(Drag an object here to change search)"; } else { dragText = "Drag an object here."; } if (r.Contains(e.mousePosition) && DragAndDrop.visualMode == DragAndDropVisualMode.Link) { GUILayout.BeginVertical(SRWindow.searchBoxDragHighlight); GUILayout.Label(new GUIContent(dragText), SRWindow.richTextStyle); GUILayout.EndVertical(); } else { GUILayout.BeginVertical(SRWindow.searchBox); GUILayout.Label(new GUIContent(dragText), SRWindow.richTextStyle); GUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); if (e.type == EventType.Layout && draggedObj != null && objID.obj != draggedObj) { ObjectUtil.ValidateAndAssign(draggedObj, objID, searchProperty, ref initializationContext); draggedObj = null; } }
public override void Draw(SearchOptions options) { GUILayout.BeginHorizontal(SRWindow.searchBox); // 1 GUILayout.BeginVertical(); drawSubsearch(); GUILayout.BeginHorizontal(); Rect r = EditorGUILayout.BeginHorizontal(); Event e = Event.current; bool acceptingDrag = (e.type == EventType.DragUpdated || e.type == EventType.DragPerform) && r.Contains(e.mousePosition); if (acceptingDrag) { if (DragAndDrop.objectReferences.Length == 1) { UnityEngine.Object firstObj = DragAndDrop.objectReferences[0]; SRWindow.Instance.Repaint(); DragAndDrop.AcceptDrag(); DragAndDrop.visualMode = DragAndDropVisualMode.Link; if (e.type == EventType.DragPerform) { draggedObj = firstObj; } } else { DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; } } string dragText = null; if (objID.obj != null) { if (objID.obj is MonoScript) { MonoScript m = (MonoScript)objID.obj; dragText = "Currently searching " + m.GetClass().Name + "s."; } else { dragText = "Currently searching " + objID.obj.GetType().Name + "s."; } dragText += "\n(Drag an object here to change search)"; } else { dragText = "Drag an object here."; } if (r.Contains(e.mousePosition) && DragAndDrop.visualMode == DragAndDropVisualMode.Link) { GUILayout.BeginVertical(SRWindow.searchBoxDragHighlight); GUILayout.Label(new GUIContent(dragText), SRWindow.richTextStyle); GUILayout.EndVertical(); } else { GUILayout.BeginVertical(SRWindow.searchBox); GUILayout.Label(new GUIContent(dragText), SRWindow.richTextStyle); GUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); if (propertyCriteria.hasAdvancedOptions()) { bool newShowMoreOptions = EditorGUILayout.Toggle(showMoreOptions, SRWindow.optionsToggle, GUILayout.Width(15)); if (newShowMoreOptions != showMoreOptions) { showMoreOptions = newShowMoreOptions; propertyCriteria.showMoreOptions = showMoreOptions; SRWindow.Instance.PersistCurrentSearch(); } } GUILayout.EndHorizontal(); if (objID.obj != null) { string typeInfo = ""; if (searchProperty.HasOptions()) { typeInfo = "Searching the " + searchProperty.fieldData.objectType.Name + " property <b>" + searchProperty.fieldData.fieldName + propertyCriteria.StringValueWithConditional() + "</b>"; } string warningInfo = ""; PrefabTypes pType = PrefabUtil.GetPrefabType(objID.obj); if (pType == PrefabTypes.NotAPrefab) { if (objID.obj is GameObject || objID.obj is Component) { warningInfo = "Referencing a scene component, your search will not be saved on scene change."; } else if (SRWindow.Instance.isSearchingInScene() && !SRWindow.Instance.isSearchingDependencies()) { warningInfo = "Searching in a scene but this is not a scene object. No results will be found."; } } string ssw = subsearchWarning(); if (ssw != string.Empty) { warningInfo += " " + ssw; } if (warningInfo.Length > 0) { EditorGUILayout.HelpBox(warningInfo, MessageType.Warning); } if (typeInfo.Length > 0) { EditorGUILayout.LabelField(typeInfo, SRWindow.richTextStyle); } searchProperty.Draw(); if (searchProperty.HasOptions()) { initializationContext.updateFieldData(searchProperty.fieldData); propertyCriteria.SetType(initializationContext); initializationContext.forceUpdate = false; SearchOptions typeFieldOptions = options.Copy(); if (subsearch != null) { typeFieldOptions.searchType = SearchType.Search; } propertyCriteria.Draw(typeFieldOptions); } } if (subsearch != null) { SearchItem child = (SearchItem)subsearch; child.Draw(options); } drawAddRemoveButtons(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); // 1 if (e.type == EventType.DragExited && draggedObj != null && objID.obj != draggedObj) { ObjectUtil.ValidateAndAssign(draggedObj, objID, searchProperty, ref initializationContext); draggedObj = null; propertyCriteria.SetType(initializationContext); } }
public override void Draw(SearchOptions options) { float lw = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = SRWindow.compactLabelWidth; GUILayout.BeginHorizontal(); UnityEngine.Object newValue = EditorGUILayout.ObjectField("Value:", searchValue.obj, typeof(UnityEngine.Object), true); EditorGUIUtility.labelWidth = lw; // i love stateful gui! :( if (newValue != searchValue.obj) { UnityEngine.Object scriptObject = ObjectUtil.getScriptObjectFromObject(newValue); if (scriptObject == null && newValue != null) { //looks like we couldn't get an object! Is it a directory? if (ObjectUtil.IsDirectory(newValue)) { setFolder(newValue); } else { Debug.Log("[Project Search & Replace] " + newValue + " isn't a Folder, Component, MonoBehaviour, ScriptableObject or MonoScript."); } } else { SetObject(scriptObject); } SRWindow.Instance.PersistCurrentSearch(); } if (type != null) { GUILayout.Label("(" + type.Name + ")"); } GUILayout.EndHorizontal(); if (searchValue.isDirectory) { GUILayout.BeginHorizontal(); GUILayout.Space(SRWindow.compactLabelWidth + 4); bool newShowUnused = EditorGUILayout.ToggleLeft("Show Unused Scripts", showUnusedScripts); GUILayout.EndHorizontal(); if (newShowUnused != showUnusedScripts) { showUnusedScripts = newShowUnused; SRWindow.Instance.PersistCurrentSearch(); } } if (showMoreOptions) { if (SRWindow.Instance.Compact()) { GUILayout.BeginHorizontal(); GUILayout.Space(SRWindow.compactLabelWidth); } if (!searchValue.isDirectory) { GUILayout.BeginHorizontal(); GUILayout.Space(SRWindow.compactLabelWidth + 4); bool newMatchChildClasses = EditorGUILayout.ToggleLeft("Match Child Classes?", matchChildClasses); GUILayout.EndHorizontal(); if (newMatchChildClasses != matchChildClasses) { matchChildClasses = newMatchChildClasses; SRWindow.Instance.PersistCurrentSearch(); } } GUILayout.BeginHorizontal(); GUILayout.Space(SRWindow.compactLabelWidth + 4); bool newMatchAssetMissingScript = EditorGUILayout.ToggleLeft("Match assets where script is missing.", matchAssetMissingScript); GUILayout.EndHorizontal(); if (newMatchAssetMissingScript != matchAssetMissingScript) { matchAssetMissingScript = newMatchAssetMissingScript; SRWindow.Instance.PersistCurrentSearch(); } if (SRWindow.Instance.Compact()) { GUILayout.EndHorizontal(); } } drawReplaceItem(options); }
public void SetObject(UnityEngine.Object o) { searchValue.SetObject(o); type = ObjectUtil.getTypeFromObject(o); }