Ejemplo n.º 1
0
 // ---------------------
 public BindingDescriptionList(
     BindingDescription.BindingType typeMask,
     bool addUnusedBindings,
     int axisInputSourceMask,
     NameFormatter menuNameFormatter) : base(16)
 {
     this.Setup(typeMask, addUnusedBindings, axisInputSourceMask, menuNameFormatter);
 }
Ejemplo n.º 2
0
 // --------------------
 public void Setup(
     BindingDescription.BindingType typeMask,
     bool addUnusedBindings,
     int axisInputSourceMask,
     NameFormatter menuNameFormatter)
 {
     this.typeMask            = typeMask;
     this.addUnusedBindings   = addUnusedBindings;
     this.menuNameFormatter   = menuNameFormatter;
     this.axisInputSourceMask = axisInputSourceMask;
 }
Ejemplo n.º 3
0
        // -----------------
        public void Add(
            InputBindingBase binding,
            string name,
            string menuPath,
            Object undoObject)
        {
            BindingDescription.BindingType bindingType =
                (binding is AxisBinding)                        ? BindingDescription.BindingType.Axis :
                (binding is DigitalBinding)             ? BindingDescription.BindingType.Digital :
                (binding is DirectionBinding)           ? BindingDescription.BindingType.Direction :
                (binding is EmuTouchBinding)            ? BindingDescription.BindingType.EmuTouch :
                (binding is JoystickStateBinding)       ? BindingDescription.BindingType.JoystickState :
                (binding is MousePositionBinding)       ? BindingDescription.BindingType.MousePos :
                (binding is TouchGestureStateBinding)           ? BindingDescription.BindingType.GestureState :
                BindingDescription.BindingType.All;

            if (bindingType == BindingDescription.BindingType.All)
            {
                return;
            }

            string nameFormatted = ((this.menuNameFormatter != null) ? this.menuNameFormatter(binding, name) : name);

            if ((bindingType & this.typeMask) == bindingType)
            {
                BindingDescription desc = new BindingDescription();

                desc.type          = bindingType;
                desc.name          = name;
                desc.nameFormatted = nameFormatted;
                desc.menuPath      = menuPath;
                desc.undoObject    = undoObject;
                desc.binding       = binding;

                this.Add(desc);
            }


            // Format menu path...

            menuPath = menuPath + nameFormatted + "/";

            binding.GetSubBindingDescriptions(this, undoObject, menuPath);
        }
Ejemplo n.º 4
0
            //public string			joyName;

            // ---------------------
            static public void AddControlListBindingsToMenu(
                GenericMenu menu,
                List <TouchControl> controlList,
                System.Action onRefreshCallback,
                BindingDescription.BindingType typeMask,
                string commandName,
                string menuPath,
                KeyCode digiKey = KeyCode.None,
                string axisName = null)
            //bool                          digiBindToPositiveAxis	= true)
            //string							joyName					= null)
            {
                for (int i = 0; i < controlList.Count; ++i)
                {
                    TouchControl c = controlList[i];

                    AddBindingContainerToMenu(menu, c, onRefreshCallback, typeMask, commandName,
                                              (menuPath + c.name + " (" + c.GetType().Name + ")/"), c, digiKey, axisName);
                }
            }
Ejemplo n.º 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;
                    }
                }
            }
Ejemplo n.º 6
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();
        }