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 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)); }