示例#1
0
 public void setObject(UnityEngine.Object o)
 {
   replaceValue.SetObject(o);
   type = ObjectUtil.getTypeFromObject(o);
 }
示例#2
0
 // utility function to get a game object from this object if possible.
 public GameObject GetGameObject()
 {
     return(ObjectUtil.GetGameObject(obj));
 }
示例#3
0
        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;
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
        }
示例#6
0
 public void SetObject(UnityEngine.Object o)
 {
     searchValue.SetObject(o);
     type = ObjectUtil.getTypeFromObject(o);
 }