Exemple #1
0
        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);
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
                            }
                        }
                    }
                }
            }
        }
Exemple #4
0
 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;
 }
Exemple #5
0
        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();
        }