HideNode CreateNodeForSystem(int id, SystemSelection sel) { var active = true; var type = sel.GetSystemType(); if (!typeof(ComponentSystemGroup).IsAssignableFrom(type)) { systemsById.Add(id, sel); worldsById.Add(id, sel.World); var recorder = Recorder.Get($"{sel.World?.Name ?? "none"} {type.FullName}"); if (!recordersBySystem.ContainsKey(sel)) { recordersBySystem.Add(sel, new AverageRecorder(recorder)); } else { UnityEngine.Debug.LogError("System added twice: " + sel); } recorder.enabled = true; active = false; } var typeName = Properties.Editor.TypeUtility.GetTypeDisplayName(type); var name = getWorldSelection() == null ? $"{typeName} ({sel.World?.Name ?? "none"})" : typeName; var item = new TreeViewItem { id = id, displayName = name }; var hideNode = new HideNode(item) { Active = active }; hideNodesById.Add(id, hideNode); return(hideNode); }