Example #1
0
//! \endcond


        // ---------------------
        public TouchButton() : base()
        {
            this.pressBinding      = new DigitalBinding();
            this.toggleOnlyBinding = new DigitalBinding();

            this.emulateTouchPressure = true;
            this.touchPressureBinding = new AxisBinding();


            this.centerWhenFollowing = true;

            this.toggleOnAction  = ToggleOnAction.OnPress;
            this.toggleOffAction = ToggleOffAction.OnRelease;

            this.autoToggleOff        = false;
            this.autoToggleOffTimeOut = 1.0f;
        }
        // -----------------
        public TouchJoystickCreationWizard() : base()
        {
            this.minSize = new Vector2(this.minSize.x, 500);

            this.pressBinding     = new DigitalBinding();
            this.pressBindingInsp = new DigitalBindingInspector(null, new GUIContent("Press binding"));

            this.horzAxisBinding = new AxisBinding();
            this.vertAxisBinding = new AxisBinding();

            this.horzAxisBindingInsp = new AxisBindingInspector(null, new GUIContent("Horizontal Axis Binding"), false, InputRig.InputSource.Analog);
            this.vertAxisBindingInsp = new AxisBindingInspector(null, new GUIContent("Vertical Axis Binding"), false, InputRig.InputSource.Analog);

            this.touchPressureBinding     = new AxisBinding();
            this.touchPressureBindingInsp = new AxisBindingInspector(null, new GUIContent("Touch Pressure Binding"), false,
                                                                     InputRig.InputSource.Analog, this.DrawPressureBindingExtraGUI);
        }
Example #3
0
//! \endcond


        // -------------------
        public TouchSteeringWheel() : base()
        {
            this.analogConfig = new AnalogConfig();
            this.analogConfig.analogDeadZone = 0.0f;

            this.touchSmoothing      = 0.1f;
            this.centerOnDirectTouch = false;
            this.centerWhenFollowing = false;

            this.wheelMode = WheelMode.Swipe;

            this.pressBinding         = new DigitalBinding();
            this.analogTurnBinding    = new AxisBinding("Horizontal", false);
            this.turnLeftBinding      = new DigitalBinding(KeyCode.None, true, "Horizontal", true, false);
            this.turnRightBinding     = new DigitalBinding(KeyCode.None, true, "Horizontal", false, false);
            this.emulateTouchPressure = true;
            this.touchPressureBinding = new AxisBinding();
        }
Example #4
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 #5
0
        // ------------------
        public void Draw(DigitalBinding bind, InputRig rig)
        {
            bool bindingEnabled = bind.enabled;

            EditorGUILayout.BeginVertical();

            if (bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30)))
            {
                CFGUI.BeginIndentedVertical(CFEditorStyles.Inst.transpSunkenBG);


                EditorGUILayout.BeginVertical(CFEditorStyles.Inst.transpSunkenBG);

                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.LabelField(new GUIContent("Axis Targets"), GUILayout.MinWidth(30), GUILayout.ExpandWidth(true));

                {
                    if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texPlusSign, "Add Axis Target"), CFEditorStyles.Inst.iconButtonStyle))                             //, GUILayout.Width(20), GUILayout.Height(20)))
                    {
                        CFGUI.CreateUndo("Add new axis to Digital Binding.", this.undoObject);
                        bind.AddAxis();
                        CFGUI.EndUndo(this.undoObject);
                    }

                    if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texMinusSign, "Remove Axis Target"), CFEditorStyles.Inst.iconButtonStyle))                             //, GUILayout.Width(20), GUILayout.Height(20)))
                    {
                        CFGUI.CreateUndo("Remove axis from Digital Binding.", this.undoObject);
                        bind.RemoveLastAxis();
                        CFGUI.EndUndo(this.undoObject);
                    }
                }

                EditorGUILayout.EndHorizontal();


                {
                    this.PrepareAxisElemInspList(bind.axisList.Count);

                    if (bind.axisList.Count == 0)
                    {
                        EditorGUILayout.LabelField("No axis targets defined...", CFEditorStyles.Inst.centeredTextTranspBG);
                    }
                    else
                    {
                        for (int i = 0; i < bind.axisList.Count; ++i)
                        {
                            this.axisElemInspList[i].DrawGUI(bind.axisList[i], rig);
                        }
                    }
                }

                EditorGUILayout.EndVertical();


                // Key targets...


                EditorGUILayout.BeginVertical(CFEditorStyles.Inst.transpSunkenBG);
                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.LabelField(new GUIContent("Key Targets"), GUILayout.MinWidth(30), GUILayout.ExpandWidth(true));

                {
                    if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texPlusSign, "Add Key Target"), CFEditorStyles.Inst.iconButtonStyle))                             //, GUILayout.Width(20), GUILayout.Height(20)))
                    {
                        CFGUI.CreateUndo("Add new key to Digital Binding.", this.undoObject);
                        bind.AddKey(KeyCode.None);
                        CFGUI.EndUndo(this.undoObject);
                    }

                    if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texMinusSign, "Remove Key Target"), CFEditorStyles.Inst.iconButtonStyle))                             //GUILayout.Width(20), GUILayout.Height(20)))
                    {
                        CFGUI.CreateUndo("Remove key from Digital Binding.", this.undoObject);
                        bind.RemoveLastKey();
                        CFGUI.EndUndo(this.undoObject);
                    }
                }

                EditorGUILayout.EndHorizontal();

                {
                    if (bind.keyList.Count == 0)
                    {
                        EditorGUILayout.LabelField("No key targets defined...", CFEditorStyles.Inst.centeredTextTranspBG);
                    }
                    else
                    {
                        EditorGUILayout.BeginVertical(CFEditorStyles.Inst.transpSunkenBG);

                        for (int i = 0; i < bind.keyList.Count; ++i)
                        {
                            KeyCode
                                keyOriginal = bind.keyList[i],
                                key         = keyOriginal;

                            key = (KeyCode)EditorGUILayout.EnumPopup("" /*"KeyCode"*/, key, GUILayout.MinWidth(30), GUILayout.ExpandWidth(false));

                            if (key != keyOriginal)
                            {
                                CFGUI.CreateUndo("Digital Binding Key modification.", this.undoObject);
                                bind.keyList[i] = key;
                                CFGUI.EndUndo(this.undoObject);
                            }
                        }

                        EditorGUILayout.EndVertical();
                    }
                }


                EditorGUILayout.EndVertical();



                CFGUI.EndIndentedVertical();
            }

            EditorGUILayout.EndVertical();


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

                bind.enabled = bindingEnabled;

                CFGUI.EndUndo(this.undoObject);
            }
        }
Example #6
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 #7
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;
                    }
                }
            }