private void OnFocus() { UniInspectEditor.CollectObjects(); FilteredResults(); SetupWidgets(); }
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(); }
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(); }
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)); }