void ShowPopupMenu() { var menu = new GenericMenu(); foreach (var i in SelectionGroupUtility.GetGroupNames()) { menu.AddItem(new GUIContent($"Initialize from Selection Group/{i}"), false, InitChangeList, i); } menu.AddItem(new GUIContent("Enable Property Editing"), enableEdit, () => enableEdit = !enableEdit); menu.ShowAsContext(); }
void RefreshGroupIndex() { lights.Clear(); renderers.Clear(); lightGroups.Clear(); rendererGroups.Clear(); foreach (var n in SelectionGroupUtility.GetGroupNames()) { foreach (var g in SelectionGroupUtility.GetMembers(n)) { if (g.TryGetComponent <Light>(out Light light)) { AddLight(light); } if (g.TryGetComponent <Renderer>(out Renderer renderer)) { AddRenderer(renderer); } } } foreach (var kv in lightGroups) { var cullingMask = kv.Key; foreach (var renderer in renderers) { if ((1 << renderer.gameObject.layer & cullingMask) != 0) { if (rendererGroups.TryGetValue(cullingMask, out HashSet <Renderer> group)) { group.Add(renderer); } else { rendererGroups.Add(cullingMask, new HashSet <Renderer>(new[] { renderer })); } } } } }