// ------------------
        public void Draw(EmuTouchBinding bind, InputRig rig)
        {
            bool bindingEnabled = bind.enabled;

            EditorGUILayout.BeginVertical();
            if (bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30)))
            {
            }
            EditorGUILayout.EndVertical();


            if ((bindingEnabled != bind.enabled))
            {
                CFGUI.CreateUndo("Emu Touch Binding modification.", this.undoObject);

                bind.enabled = bindingEnabled;

                CFGUI.EndUndo(this.undoObject);
            }
        }
Example #2
0
            // ---------------
            public void Execute()
            {
                if (this.binding == null)
                {
                    return;
                }

                CFGUI.CreateUndo(this.undoLabel, this.undoObject);

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

                //JoystickNameBinding		joyNameBinding	= (this.binding as JoystickNameBinding);

                // Digi binding...

                if (digiBinding != null)
                {
                    if (this.digiKey != KeyCode.None)
                    {
                        digiBinding.Enable();

                        if (this.digiKeyElemId < 0)
                        {
                            digiBinding.AddKey(this.digiKey);
                        }
                        else
                        {
                            digiBinding.ReplaceKey(this.digiKeyElemId, this.digiKey);
                        }
                    }

                    if (!string.IsNullOrEmpty(this.digiAxisName))
                    {
                        digiBinding.Enable();

                        DigitalBinding.AxisElem elem = null;


                        if (this.digiAxisElemId < 0)
                        {
                            elem = digiBinding.AddAxis();
                        }
                        else
                        {
                            elem = digiBinding.GetAxisElem(this.digiAxisElemId);
                        }

                        if (elem != null)
                        {
                            elem.SetAxis(this.digiAxisName, this.digiBindToPositiveAxis);
                        }
                    }
                }


                // Analog Binding...

                else if (analogBinding != null)
                {
                    if (!string.IsNullOrEmpty(this.analogAxisName))
                    {
                        analogBinding.Enable();

                        AxisBinding.TargetElem elem = null;

                        if (this.analogElemId < 0)
                        {
                            elem = analogBinding.AddTarget();
                        }
                        else
                        {
                            elem = analogBinding.GetTarget(this.analogElemId);
                        }

                        if (elem != null)
                        {
                            if (this.analogSeparate)
                            {
                                elem.SetSeparateAxis(this.analogAxisName, this.analogPositiveSide, !this.analogFlip);
                            }
                            else
                            {
                                elem.SetSingleAxis(this.analogAxisName, this.analogFlip);
                            }
                        }
                    }
                }

                // Touch Binding...

                else if (touchBinding != null)
                {
                    touchBinding.Enable();
                }

                // Mouse Binding...

                else if (mouseBinding != null)
                {
                    mouseBinding.Enable();
                }


                CFGUI.EndUndo(this.undoObject);

                if (this.onRefreshCallback != null)
                {
                    this.onRefreshCallback();
                }
            }
Example #3
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;
                    }
                }
            }