Example #1
0
            // --------------------
            static private void AddDigitalBindingAxisSubMenu(GenericMenu menu, string axis, BindingDescription desc, System.Action onRefreshCallback)
            {
                DigitalBinding digiBinding = (DigitalBinding)desc.binding;

                string menuPath = desc.menuPath + desc.nameFormatted + "/";

                for (int i = -1; i < digiBinding.axisList.Count; ++i)
                {
                    string menuItemPath = "";

                    DigitalBinding.AxisElem axisElem = digiBinding.GetAxisElem(i);

                    if (i < 0)
                    {
                        menuItemPath = menuPath + "Add as new axis target/";
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(axisElem.axisName))
                        {
                            menuItemPath = menuPath + "Replace EMPTY (" + i + ")/";
                        }
                        else
                        {
                            menuItemPath = menuPath + "Replace \"" + axisElem.axisName + "\" (" + (axisElem.axisPositiveSide ? "Positive" : "Negative") + ") (" + i + ")/";
                        }
                    }

                    for (int sideIndex = 0; sideIndex < 2; ++sideIndex)
                    {
                        UniversalBindingAssignment o = new UniversalBindingAssignment();

                        o.undoLabel              = "Bind " + axis + " axis to " + desc.name;
                        o.undoObject             = desc.undoObject;
                        o.binding                = desc.binding;
                        o.onRefreshCallback      = onRefreshCallback;
                        o.digiAxisName           = axis;
                        o.digiAxisElemId         = i;
                        o.digiBindToPositiveAxis = ((sideIndex == 0) ? true : false);

                        menu.AddItem(new GUIContent(menuItemPath + ((sideIndex == 0) ? "As Positive" : "As Negative")), false, o.Execute);
                    }


                    if ((i < 0) && (digiBinding.keyList.Count > 0))
                    {
                        menu.AddSeparator(menuPath);
                    }
                }
            }
Example #2
0
            // ----------------------
            static private void AddDigitalBindingKeySubMenu(GenericMenu menu, KeyCode key, BindingDescription desc, System.Action onRefreshCallback)
            {
                DigitalBinding digiBinding = (DigitalBinding)desc.binding;

                string menuPath = desc.menuPath + desc.nameFormatted + "/";

                for (int i = -1; i < digiBinding.keyList.Count; ++i)
                {
                    UniversalBindingAssignment o = new UniversalBindingAssignment();

                    o.undoLabel         = "Bind " + key + " key to " + desc.name;
                    o.undoObject        = desc.undoObject;
                    o.binding           = desc.binding;
                    o.onRefreshCallback = onRefreshCallback;
                    o.digiKey           = key;
                    o.digiKeyElemId     = i;

                    string menuItemLabel = "";

                    if (i < 0)
                    {
                        menuItemLabel = "Add new as new key target.";
                    }
                    else
                    {
                        menuItemLabel = "Replace \"" + digiBinding.keyList[i] + "\" (" + i + ").";
                    }

                    menu.AddItem(new GUIContent(menuPath + menuItemLabel), true, o.Execute);

                    if ((i < 0) && (digiBinding.keyList.Count > 0))
                    {
                        menu.AddSeparator(menuPath);
                    }
                }
            }
Example #3
0
            // ------------------
            static private void AddAnalogBindingAxisSubMenu(GenericMenu menu, string axis, BindingDescription desc, System.Action onRefreshCallback)
            {
                AxisBinding bind = (AxisBinding)desc.binding;

                string menuPath = desc.menuPath + desc.nameFormatted + "/";

                for (int i = -1; i < bind.targetList.Count; ++i)
                {
                    string menuItemPath = "";

                    AxisBinding.TargetElem axisElem = bind.GetTarget(i);

                    if (i < 0)
                    {
                        menuItemPath = menuPath + "Add as new axis target/";
                    }
                    else
                    {
                        if (axisElem.separateAxes)
                        {
                            menuItemPath = menuPath + "Replace separated(+,-) " +
                                           (string.IsNullOrEmpty(axisElem.positiveAxis) ? "EMPTY" : ("\"" + axisElem.positiveAxis + "\"" +
                                                                                                     (axisElem.positiveAxisAsPositive ? "" : " (as negative)"))) +
                                           " : " +
                                           (string.IsNullOrEmpty(axisElem.negativeAxis) ? "EMPTY" : ("\"" + axisElem.negativeAxis + "\"" +
                                                                                                     (axisElem.negativeAxisAsPositive ? "(as positive)" : ""))) +
                                           " (" + i + ")/";
                        }
                        else
                        {
                            if (string.IsNullOrEmpty(axisElem.singleAxis))
                            {
                                menuItemPath = menuPath + "Replace single EMPTY (" + i + ")/";
                            }
                            else
                            {
                                menuItemPath = menuPath + "Replace single \"" + axisElem.singleAxis + "\"" + (axisElem.reverseSingleAxis ? " (Flipped)" : "") + " (" + i + ")/";
                            }
                        }
                    }

                    for (int targetModeIndex = 0; targetModeIndex < 6; ++targetModeIndex)
                    {
                        UniversalBindingAssignment o = new UniversalBindingAssignment();

                        o.undoLabel         = "Bind " + axis + " axis to " + desc.name;
                        o.undoObject        = desc.undoObject;
                        o.binding           = desc.binding;
                        o.onRefreshCallback = onRefreshCallback;
                        o.analogAxisName    = axis;
                        o.analogElemId      = i;

                        string modeName = "";

                        switch (targetModeIndex)
                        {
                        case 0:
                            modeName         = "Single";
                            o.analogSeparate = false;
                            o.analogFlip     = false;
                            break;

                        case 1:
                            modeName         = "Single (Flipped)";
                            o.analogSeparate = false;
                            o.analogFlip     = true;
                            break;

                        case 2:
                            modeName             = "Separated, Positive Side";
                            o.analogSeparate     = true;
                            o.analogPositiveSide = true;
                            o.analogFlip         = false;
                            break;

                        case 3:
                            modeName             = "Separated, Positive Side (Flipped)";
                            o.analogSeparate     = true;
                            o.analogPositiveSide = true;
                            o.analogFlip         = true;
                            break;

                        case 4:
                            modeName             = "Separated, Negative Side";
                            o.analogSeparate     = true;
                            o.analogPositiveSide = false;
                            o.analogFlip         = false;
                            break;

                        case 5:
                            modeName             = "Separated, Negative Side (Flipped)";
                            o.analogSeparate     = true;
                            o.analogPositiveSide = false;
                            o.analogFlip         = true;
                            break;
                        }


                        menu.AddItem(new GUIContent(menuItemPath + modeName), false, o.Execute);

                        if ((targetModeIndex & 1) == 1)
                        {
                            menu.AddSeparator(menuItemPath);
                        }
                    }


                    if ((i < 0) && (bind.targetList.Count > 0))
                    {
                        menu.AddSeparator(menuPath);
                    }
                }
            }
Example #4
0
        // ------------------------
        static public void CreateContextMenuForKeyBinding(Object panelOrRig, KeyCode key, System.Action onRefreshCallback = null)
        {
            InputRig          rig   = (panelOrRig as InputRig);
            TouchControlPanel panel = (panelOrRig as TouchControlPanel);

            string axisName = null;

            //bool displayPanelName = false;

            if (panel != null)
            {
                rig = panel.rig;
            }

            else if (rig != null)
            {
                // Auto Select panel...

                panel = TouchControlWizardUtils.GetRigPanel(rig);
                //displayPanelName = true;
            }
            else
            {
                return;
            }


            List <TouchControl> controlList = rig.GetTouchControls();


            GenericMenu menu = new GenericMenu();

            string commandName = (string.IsNullOrEmpty(axisName) ? ("\"" + key.ToString() + "\" keycode ") : ("\"" + axisName + "\" axis "));

            menu.AddDisabledItem(new GUIContent("Actions for : " + commandName));
            menu.AddSeparator("");



            {
                UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.Digital, commandName,
                                                                     "Bind to Input Rig/", rig, key, null); //, null);


                menu.AddSeparator("");

                if (panel == null)
                {
                    menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!"));
                }
                else
                {
                    UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback,
                                                                            BindingDescription.BindingType.Digital, commandName, "Bind to Touch Controls/", key, null); // true); //, null);


                    menu.AddSeparator("");


                    AddTouchControlCreationItemsToMenuForAxisOrKey(menu, panel, null, key, onRefreshCallback);
                }
            }

            menu.ShowAsContext();
        }
Example #5
0
            // ----------------------
            static public void AddBindingContainerToMenu(
                GenericMenu menu,
                IBindingContainer bc,
                System.Action onRefreshCallback,
                BindingDescription.BindingType typeMask,
                string commandName,
                string menuPath,
                Object undoObject,
                KeyCode digiKey         = KeyCode.None,
                string axisName         = null,
                int axisInputSourceMask = ((1 << 16) - 1))
            //bool                          digiBindToPositiveAxis	= true)
            //string							joyName					= null)
            {
                BindingDescriptionList bindingDescList = new BindingDescriptionList(typeMask, false, axisInputSourceMask, FormatBindingMenuLabel);

                //bc.GetSubBindingDescriptions(bindingDescList, typeMask, undoObject, menuPath, false, axisInputSourceMask);
                bc.GetSubBindingDescriptions(bindingDescList, undoObject, menuPath);

                for (int i = 0; i < bindingDescList.Count; ++i)
                {
                    BindingDescription desc = bindingDescList[i];

                    string itemLabel   = "";
                    bool   itemEnabled = false;


                    DigitalBinding       digiBinding   = (desc.binding as DigitalBinding);
                    AxisBinding          analogBinding = (desc.binding as AxisBinding);
                    EmuTouchBinding      touchBinding  = (desc.binding as EmuTouchBinding);
                    MousePositionBinding mouseBinding  = (desc.binding as MousePositionBinding);

                    // Digi binding...

                    if (digiBinding != null)
                    {
//					o.digiKey					= digiKey;
//					o.digiAxisName				= axisName;
//					o.digiBindToPositiveAxis	= true;

                        if (digiKey != KeyCode.None)
                        {
                            AddDigitalBindingKeySubMenu(menu, digiKey, desc, onRefreshCallback);
                        }
                        else if (!string.IsNullOrEmpty(axisName))
                        {
                            AddDigitalBindingAxisSubMenu(menu, axisName, desc, onRefreshCallback);
                        }
                    }

                    // Analog binding...

                    else if (analogBinding != null)
                    {
                        AddAnalogBindingAxisSubMenu(menu, axisName, desc, onRefreshCallback);
                    }

                    // Touch binding...

                    else if (touchBinding != null)
                    {
                        UniversalBindingAssignment o = new UniversalBindingAssignment();

                        o.undoObject        = desc.undoObject;
                        o.binding           = desc.binding;
                        o.onRefreshCallback = onRefreshCallback;

                        o.undoLabel = "Bind [" + desc.nameFormatted + "] to Eumlated Touch.";
                        itemLabel   = o.undoLabel;

                        menu.AddItem(new GUIContent(desc.menuPath + itemLabel), itemEnabled, o.Execute);
                    }

                    // Mouse binding...

                    else if (mouseBinding != null)
                    {
                        UniversalBindingAssignment o = new UniversalBindingAssignment();

                        o.undoObject        = desc.undoObject;
                        o.binding           = desc.binding;
                        o.onRefreshCallback = onRefreshCallback;

                        o.undoLabel = "Bind [" + desc.nameFormatted + "] to Mouse Position.";
                        itemLabel   = o.undoLabel;

                        menu.AddItem(new GUIContent(desc.menuPath + itemLabel), itemEnabled, o.Execute);
                    }


                    else
                    {
                        continue;
                    }
                }
            }
Example #6
0
        // ------------------------
        static public void CreateContextMenuForEmuTouchBinding(Object panelOrRig, System.Action onRefreshCallback = null)
        {
            InputRig          rig   = (panelOrRig as InputRig);
            TouchControlPanel panel = (panelOrRig as TouchControlPanel);

            //bool displayPanelName = false;

            if (panel != null)
            {
                rig = panel.rig;
            }

            else if (rig != null)
            {
                // Auto Select panel...

                panel = TouchControlWizardUtils.GetRigPanel(rig);
                //displayPanelName = true;
            }
            else
            {
                return;
            }


            List <TouchControl> controlList = rig.GetTouchControls();


            GenericMenu menu = new GenericMenu();


            string commandName = ("Emuulated Touch ");

            menu.AddDisabledItem(new GUIContent("Actions for : " + commandName));
            menu.AddSeparator("");

            UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.EmuTouch, commandName,
                                                                 "Bind to Input Rig/", rig);

            menu.AddSeparator("");

            if (panel == null)
            {
                menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!"));
            }
            else
            {
                UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback,
                                                                        BindingDescription.BindingType.EmuTouch, commandName, "Bind to Touch Controls/");

                menu.AddSeparator("");



                WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [Single-finger Touch]...", panel,
                                         typeof(SuperTouchZoneCreationWizard), SuperTouchZoneCreationWizard.BindingSetup.EmuTouch(1), onRefreshCallback);
                WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [Two-finger Touch]...", panel,
                                         typeof(SuperTouchZoneCreationWizard), SuperTouchZoneCreationWizard.BindingSetup.EmuTouch(2), onRefreshCallback);


                menu.AddSeparator("Create a Super Touch Zone/");

                WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone...", panel,
                                         typeof(SuperTouchZoneCreationWizard), null, onRefreshCallback);
            }

            menu.ShowAsContext();
        }
Example #7
0
        // ------------------------
        static public void CreateContextMenuForMousePositionBinding(Object panelOrRig, System.Action onRefreshCallback = null)
        {
            InputRig          rig   = (panelOrRig as InputRig);
            TouchControlPanel panel = (panelOrRig as TouchControlPanel);

            //bool displayPanelName = false;

            if (panel != null)
            {
                rig = panel.rig;
            }

            else if (rig != null)
            {
                // Auto Select panel...

                panel = TouchControlWizardUtils.GetRigPanel(rig);
                //displayPanelName = true;
            }
            else
            {
                return;
            }


            List <TouchControl> controlList = rig.GetTouchControls();


            GenericMenu menu = new GenericMenu();


            string commandName = ("Mouse Position ");

            menu.AddDisabledItem(new GUIContent("Actions for : " + commandName));
            menu.AddSeparator("");

            UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.MousePos, commandName,
                                                                 "Bind to Input Rig/", rig);

            menu.AddSeparator("");

            if (panel == null)
            {
                menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!"));
            }
            else
            {
                UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback,
                                                                        BindingDescription.BindingType.MousePos, commandName, "Bind to Touch Controls/");

                menu.AddSeparator("");



                int mouseTargetMaxId = CFUtils.GetEnumMaxValue(typeof(SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget));

                for (int i = 1; i <= 2; ++i)
                {
                    for (int j = 1; j <= mouseTargetMaxId; ++j)
                    {
                        SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget
                            mouseTarget = (SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget)j;

                        WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [" +
                                                 ((i == 1) ? "Single-finger" : "Two-finger") + mouseTarget.ToString() + "]...", panel, typeof(SuperTouchZoneCreationWizard),
                                                 SuperTouchZoneCreationWizard.BindingSetup.MousePos(i, mouseTarget), onRefreshCallback);
                    }
                }

                menu.AddSeparator("Create a Super Touch Zone/");

                WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone...", panel,
                                         typeof(SuperTouchZoneCreationWizard), null, onRefreshCallback);
            }

            menu.ShowAsContext();
        }
Example #8
0
        // ------------------------
        static public void CreateContextMenuForAxisBinding(Object panelOrRig, string axisName, /*InputRig.InputSource sourceType, */ System.Action onRefreshCallback = null)
        {
            InputRig          rig   = (panelOrRig as InputRig);
            TouchControlPanel panel = (panelOrRig as TouchControlPanel);

            //bool displayPanelName = false;

            if (panel != null)
            {
                rig = panel.rig;
            }

            else if (rig != null)
            {
                // Auto Select panel...

                panel = TouchControlWizardUtils.GetRigPanel(rig);
                //displayPanelName = true;
            }
            else
            {
                return;
            }


            List <TouchControl> controlList = rig.GetTouchControls();


            GenericMenu menu = new GenericMenu();


            string commandName = ("\"" + axisName + "\" axis ");

            menu.AddDisabledItem(new GUIContent("Actions for : " + commandName));
            menu.AddSeparator("");


            InputRig.AxisConfig axisConfig = rig.GetAxisConfig(axisName);
            if (axisConfig == null)
            {
                AxisCreationMenuItem.AddAllMenuItems(menu, axisName, "", rig, onRefreshCallback);
            }

            else
            {
                int
                    axisSourceTypeMask = axisConfig.GetSupportedInputSourceMask();
                BindingDescription.BindingType
                    bindingTypeMask = BindingDescription.BindingType.Axis | BindingDescription.BindingType.Digital;


                UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, bindingTypeMask, commandName,
                                                                     "Bind to Input Rig/", rig, KeyCode.None, axisName, axisSourceTypeMask); //, true); //, null);

                menu.AddSeparator("");

                if (panel == null)
                {
                    menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!"));
                }
                else
                {
                    UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback,
                                                                            bindingTypeMask, commandName, "Bind to Touch Controls/", KeyCode.None, axisName); //, true); //, null);

                    menu.AddSeparator("");

                    AddTouchControlCreationItemsToMenuForAxisOrKey(menu, panel, axisName, KeyCode.None, onRefreshCallback);
                }
            }

            menu.ShowAsContext();
        }