private void CellGUI(Rect cellRect, UTinyEntityGroupTreeViewItem item, ColumnType columnType, ref RowGUIArgs args) { // Center cell rect vertically (makes it easier to place controls, icons etc in the cells) CenterRectUsingSingleLineHeight(ref cellRect); var entityGroup = item.EntityGroup.Dereference(Model.Registry); using (new GUIEnabledScope(item.Editable)) { switch (columnType) { case ColumnType.Icon: { GUI.DrawTexture(cellRect, null == entityGroup ? UTinyIcons.Warning : UTinyIcons.EntityGroup, ScaleMode.ScaleToFit); } break; case ColumnType.Name: { args.rowRect = cellRect; using (new GUIColorScope(null == entityGroup ? Color.red : Color.white)) { base.RowGUI(args); } } break; case ColumnType.Startup: { var mainModule = Model.MainModule.Dereference(Model.Registry); if (entityGroup != null && mainModule.StartupEntityGroup.Equals(item.EntityGroup)) { GUI.Label(cellRect, "X"); } } break; case ColumnType.Module: { GUI.Label(cellRect, item.Module.Name); } break; } } }
protected override TreeViewItem BuildRoot() { Model.ClearIds(); var root = new TreeViewItem { id = 0, depth = -1 }; var entityGroupReferences = Model.GetEntityGroups(); foreach (var entityGroupReference in entityGroupReferences) { var entityGroup = entityGroupReference.Dereference(Model.Registry); var module = UTinyUtility.GetModules(entityGroup).FirstOrDefault(); var moduleReference = null != module ? (UTinyModule.Reference)module : UTinyModule.Reference.None; var editable = moduleReference.Equals(Model.MainModule); if (null != entityGroup) { if (!editable && State.FilterProjectOnly) { continue; } } var item = new UTinyEntityGroupTreeViewItem(Model.Registry, Model.MainModule, moduleReference, entityGroupReference) { id = GenerateInstanceId(entityGroupReference), Editable = editable }; root.AddChild(item); } return(root); }