void ShowCommandMenu(int index, Sequence sequence) { GenericMenu commandMenu = new GenericMenu(); // Build menu list List <System.Type> menuTypes = EditorExtensions.FindDerivedTypes(typeof(Command)).ToList(); foreach (System.Type type in menuTypes) { object[] attributes = type.GetCustomAttributes(false); foreach (object obj in attributes) { CommandInfoAttribute infoAttr = obj as CommandInfoAttribute; if (infoAttr != null) { SetCommandOperation commandOperation = new SetCommandOperation(); commandOperation.sequence = sequence; commandOperation.commandType = type; commandOperation.index = index; commandMenu.AddItem(new GUIContent(infoAttr.Category + "/" + infoAttr.CommandName), false, Callback, commandOperation); } } } commandMenu.ShowAsContext(); }
void Callback(object obj) { SetCommandOperation commandOperation = obj as SetCommandOperation; Sequence sequence = commandOperation.sequence; if (sequence == null) { return; } Command newCommand = Undo.AddComponent(sequence.gameObject, commandOperation.commandType) as Command; sequence.GetFungusScript().selectedCommand = newCommand; Command oldCommand = sequence.commandList[commandOperation.index]; Undo.DestroyObjectImmediate(oldCommand); Undo.RecordObject(sequence, "Set command type"); sequence.commandList[commandOperation.index] = newCommand; }
void ShowCommandMenu(int index, Sequence sequence) { GenericMenu commandMenu = new GenericMenu(); // Build menu list List<System.Type> menuTypes = EditorExtensions.FindDerivedTypes(typeof(Command)).ToList(); foreach(System.Type type in menuTypes) { object[] attributes = type.GetCustomAttributes(false); foreach (object obj in attributes) { CommandInfoAttribute infoAttr = obj as CommandInfoAttribute; if (infoAttr != null) { SetCommandOperation commandOperation = new SetCommandOperation(); commandOperation.sequence = sequence; commandOperation.commandType = type; commandOperation.index = index; commandMenu.AddItem (new GUIContent (infoAttr.Category + "/" + infoAttr.CommandName), false, Callback, commandOperation); } } } commandMenu.ShowAsContext(); }