private static void AddPrefabMenuItems(ref GenericMenu menu, ActionUtility.ActionCreationParams actionParams) { Type type = actionParams.parameter.GetType(); List <Type> actionsSortedByCategory = ActionTargets.GetActionsSortedByCategory(); using (List <Type> .Enumerator enumerator = actionsSortedByCategory.GetEnumerator()) { while (enumerator.MoveNext()) { Type current = enumerator.get_Current(); ActionUtility.ActionCreationParams actionCreationParams = new ActionUtility.ActionCreationParams(actionParams); List <ActionTarget> actionTargets = ActionTargets.GetActionTargets(current); using (List <ActionTarget> .Enumerator enumerator2 = actionTargets.GetEnumerator()) { while (enumerator2.MoveNext()) { ActionTarget current2 = enumerator2.get_Current(); if (current2.get_AllowPrefabs() && current2.get_ObjectType().IsAssignableFrom(type)) { actionCreationParams.actionType = current; actionCreationParams.actionTarget = current2; menu.AddItem(new GUIContent(Labels.GetActionLabel(current)), false, new GenericMenu.MenuFunction2(ActionUtility.AddAction), actionCreationParams); } } } } } }
private static void AddAction(object userdata) { ActionUtility.ActionCreationParams actionCreationParams = (ActionUtility.ActionCreationParams)userdata; SkillStateAction action = ActionUtility.AddAction(actionCreationParams.state, actionCreationParams.actionType, actionCreationParams.actionTarget, actionCreationParams.parameter, actionCreationParams.beforeAction); SkillEditor.SelectAction(action, true); }
private static void AddObjectMenuItems(ref GenericMenu menu, ActionUtility.ActionCreationParams actionParams, bool isSubMenu = false) { Type type = actionParams.parameter.GetType(); string text = isSubMenu ? (Labels.StripNamespace(type.get_FullName()) + '/') : ""; List <Type> actionsSortedByCategory = ActionTargets.GetActionsSortedByCategory(); using (List <Type> .Enumerator enumerator = actionsSortedByCategory.GetEnumerator()) { while (enumerator.MoveNext()) { Type current = enumerator.get_Current(); ActionUtility.ActionCreationParams actionCreationParams = new ActionUtility.ActionCreationParams(actionParams); List <ActionTarget> actionTargets = ActionTargets.GetActionTargets(current); using (List <ActionTarget> .Enumerator enumerator2 = actionTargets.GetEnumerator()) { while (enumerator2.MoveNext()) { ActionTarget current2 = enumerator2.get_Current(); if (ActionUtility.PinToTopOfMenu(current) && current2.get_ObjectType().IsAssignableFrom(type)) { actionCreationParams.actionType = current; actionCreationParams.actionTarget = current2; menu.AddItem(new GUIContent(text + Labels.GetActionLabel(current)), false, new GenericMenu.MenuFunction2(ActionUtility.AddAction), actionCreationParams); } } } } } if (menu.GetItemCount() > 2) { menu.AddSeparator(text); } using (List <Type> .Enumerator enumerator3 = actionsSortedByCategory.GetEnumerator()) { while (enumerator3.MoveNext()) { Type current3 = enumerator3.get_Current(); ActionUtility.ActionCreationParams actionCreationParams2 = new ActionUtility.ActionCreationParams(actionParams); List <ActionTarget> actionTargets2 = ActionTargets.GetActionTargets(current3); using (List <ActionTarget> .Enumerator enumerator4 = actionTargets2.GetEnumerator()) { while (enumerator4.MoveNext()) { ActionTarget current4 = enumerator4.get_Current(); if (!ActionUtility.PinToTopOfMenu(current3) && current4.get_ObjectType().IsAssignableFrom(type)) { actionCreationParams2.actionType = current3; actionCreationParams2.actionTarget = current4; string actionLabel = Labels.GetActionLabel(current3); string text2 = Actions.GetActionCategory(current3) + '/'; menu.AddItem(new GUIContent(text + text2 + actionLabel), false, new GenericMenu.MenuFunction2(ActionUtility.AddAction), actionCreationParams2); } } } } } }
public ActionCreationParams(ActionUtility.ActionCreationParams source) { this.fsm = source.fsm; this.state = source.state; this.actionType = source.actionType; this.actionTarget = source.actionTarget; this.parameter = source.parameter; this.beforeAction = source.beforeAction; this.position = source.position; }
public static void ShowObjectContextMenu(Skill fsm, SkillState state, Object obj, SkillStateAction beforeAction = null) { if (obj == null) { return; } Actions.BuildListIfNeeded(); ActionUtility.ActionCreationParams actionCreationParams = new ActionUtility.ActionCreationParams { state = state, parameter = obj, beforeAction = beforeAction }; GenericMenu genericMenu = new GenericMenu(); GameObject gameObject = obj as GameObject; if (gameObject != null) { if (EditorUtility.IsPersistent(gameObject)) { ActionUtility.AddMenuTitle(ref genericMenu, Strings.get_Menu_Prefab_Actions()); ActionUtility.AddPrefabMenuItems(ref genericMenu, actionCreationParams); } else { ActionUtility.AddMenuTitle(ref genericMenu, Strings.get_Menu_GameObject_Actions()); ActionUtility.AddObjectMenuItems(ref genericMenu, actionCreationParams, true); Component[] components = gameObject.GetComponents <Component>(); Component[] array = components; for (int i = 0; i < array.Length; i++) { Component parameter = array[i]; actionCreationParams.parameter = parameter; ActionUtility.AddObjectMenuItems(ref genericMenu, actionCreationParams, true); } } } else { ActionUtility.AddMenuTitle(ref genericMenu, string.Format(Strings.get_Menu_Type_Actions(), obj.GetType().get_Name())); ActionUtility.AddObjectMenuItems(ref genericMenu, actionCreationParams, false); } if (genericMenu.GetItemCount() == 2) { genericMenu.AddDisabledItem(new GUIContent(Strings.get_Menu_No_Context_Actions_Found())); } genericMenu.ShowAsContext(); }