示例#1
0
        private void OnFocus()
        {
            UniInspectEditor.CollectObjects();

            FilteredResults();

            SetupWidgets();
        }
示例#2
0
        private void DrawScriptableObjectItem(Object item, bool oddLine)
        {
            var fields = UniInspectEditor.GetScriptableObjectFields(item.GetType());

            if (oddLine)
            {
                GUILayout.BeginHorizontal(line1Style);
            }
            else
            {
                GUILayout.BeginHorizontal(line2Style);
            }

            using (new GUILayout.VerticalScope())
            {
                var showObj = !_hidedObjects.Contains(item);

                DrawItemTitle(soIcon, item, showObj);

                if (showObj)
                {
                    var serializedObject = new SerializedObject(item);

                    for (var i = 0; i < fields.Count; i++)
                    {
                        using (var check = new EditorGUI.ChangeCheckScope())
                        {
                            var field = fields[i];
                            var sp    = serializedObject.FindProperty(field.Name);

                            if (sp == null)
                            {
                                continue;
                            }

                            EditorGUILayout.PropertyField(sp);

                            if (!check.changed)
                            {
                                continue;
                            }

                            serializedObject.ApplyModifiedProperties();
                        }
                    }
                }
            }

            GUILayout.EndHorizontal();
        }
示例#3
0
        private void DrawGameObjectItem(Object item, List <MonoBehaviour> children, bool oddLine)
        {
            var multipleMonos = children.Count > 1;

            GUILayout.BeginHorizontal(oddLine ? line1Style : line2Style);

            using (new GUILayout.VerticalScope())
            {
                var showObj = !_hidedObjects.Contains(item);

                // Label
                DrawItemTitle(goIcon, item, showObj);

                if (showObj)
                {
                    for (var i = 0; i < children.Count; i++)
                    {
                        using (var check = new EditorGUI.ChangeCheckScope())
                        {
                            var instance = children[i];
                            var cursor   = instance.GetType();
                            var show     = !_hidedMonoBehaviours.Contains(instance);
                            var fields   = UniInspectEditor.GetFields(instance);

                            var serializedObject = new SerializedObject(instance);

                            if (multipleMonos)
                            {
                                EditorGUILayout.BeginVertical(EditorStyles.helpBox);

                                var displayName = string.Format("{0} [{1}]", cursor.Name, show ? "-" : "+");
                                ToggleButton(displayName, show,
                                             () => _hidedMonoBehaviours.Add(instance),
                                             () => _hidedMonoBehaviours.Remove(instance),
                                             centeredLabelStyle);
                            }

                            if (show)
                            {
                                for (var j = 0; j < fields.Count; j++)
                                {
                                    var field = fields[j];
                                    var sp    = serializedObject.FindProperty(field.Name);

                                    if (sp == null)
                                    {
                                        continue;
                                    }

                                    EditorGUILayout.PropertyField(sp);
                                }
                            }

                            if (multipleMonos)
                            {
                                EditorGUILayout.EndVertical();
                            }

                            if (!check.changed)
                            {
                                continue;
                            }

                            serializedObject.ApplyModifiedProperties();
                        }
                    }

                    EditorGUILayout.Separator();
                }
            }

            GUILayout.EndHorizontal();
        }
示例#4
0
        private void FilteredResults()
        {
            _filteredGameObjects.Clear();
            _filteredScriptableObjects.Clear();
            _filteredObjects.Clear();

            var hasFilter = !string.IsNullOrEmpty(_filter);
            var filter    = _filter != null?_filter.ToLower() : null;

            if (showGameObjects)
            {
                if (hasFilter)
                {
                    foreach (var instance in UniInspectEditor.GameObjectInstances)
                    {
                        var match = false;
                        if (instance.Key.name.ToLower().Contains(filter))
                        {
                            match = true;
                        }
                        else
                        {
                            if (instance.Value.Any(m => m.name.ToLower().Contains(filter)))
                            {
                                match = true;
                            }
                            else
                            {
                                var monoTypes = instance.Value.Select(m => m.GetType()).ToArray();

                                if (monoTypes.Any(m => m.Name.ToLower().Contains(filter)))
                                {
                                    match = true;
                                }
                                else
                                {
                                    foreach (var monoType in monoTypes)
                                    {
                                        var fields = UniInspectEditor.GetMonoFields(monoType);

                                        if (fields.Any(f => f.Name.ToLower().Contains(filter)))
                                        {
                                            match = true;
                                        }
                                    }
                                }
                            }
                        }

                        if (match)
                        {
                            _filteredGameObjects.Add(instance.Key);
                        }
                    }
                }
                else
                {
                    _filteredGameObjects = UniInspectEditor.GameObjectInstances.Select(g => g.Key).ToList();
                }
            }

            if (showScriptableObjects)
            {
                if (hasFilter)
                {
                    foreach (var instance in UniInspectEditor.ScriptableObjectInstances)
                    {
                        var pass = false;
                        if (instance.name.ToLower().Contains(filter))
                        {
                            pass = true;
                        }
                        else
                        {
                            var soType = instance.GetType();
                            if (soType.Name.ToLower().Contains(filter))
                            {
                                pass = true;
                            }
                            else
                            {
                                var fields = UniInspectEditor.GetScriptableObjectFields(soType);

                                if (fields.Any(f => f.Name.ToLower().Contains(filter)))
                                {
                                    pass = true;
                                }
                            }
                        }

                        if (pass)
                        {
                            _filteredScriptableObjects.Add(instance);
                        }
                    }
                }
                else
                {
                    _filteredScriptableObjects = new List <ScriptableObject>(UniInspectEditor.ScriptableObjectInstances);
                }
            }

            _filteredObjects.AddRange(_filteredGameObjects.Select(go => go as Object));
            _filteredObjects.AddRange(_filteredScriptableObjects.Select(so => so as Object));
        }