コード例 #1
0
        internal bool PerformJoystickEvent(Viewport viewport, JoystickInputEvent e)
        {
            var handled = OnJoystickEvent(viewport, e);

            if (!handled)
            {
                JoystickEvent?.Invoke(this, viewport, e, ref handled);
            }
            return(handled);
        }
コード例 #2
0
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            //Game mode
            if (gameMode != null && gameMode.ProcessInputMessage(this, new InputMessageJoystick(e)))
            {
                return(true);
            }

            return(base.OnJoystickEvent(e));
        }
コード例 #3
0
ファイル: GameEngineApp.cs プロジェクト: gsaone/forklift
 protected override bool OnJoystickEvent(JoystickInputEvent e)
 {
     if (controlManager != null)
     {
         if (controlManager.DoJoystickEvent(e))
         {
             return(true);
         }
     }
     return(base.OnJoystickEvent(e));
 }
コード例 #4
0
        public bool PerformJoystickEvent(JoystickInputEvent e)
        {
            CheckCachedParameters();
            UpdateCachedCoverControls();

            if (capturedControl != null && capturedControl.ParentContainer == null)
            {
                capturedControl = null;
            }
            if (focusedControl != null && focusedControl.ParentContainer == null)
            {
                focusedControl = null;
            }

            if (capturedControl != null)
            {
                return(capturedControl.CallJoystickEvent(e));
            }

            return(CallJoystickEvent(e));
        }
コード例 #5
0
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            //If atop openly any window to not process
            if (Controls.Count != 1)
            {
                return(base.OnJoystickEvent(e));
            }

            //GameControlsManager
            if (EntitySystemWorld.Instance.Simulation)
            {
                if (!FreeCameraEnabled && !IsCutSceneEnabled())
                {
                    if (GameControlsManager.Instance.DoJoystickEvent(e))
                    {
                        return(true);
                    }
                }
            }

            return(base.OnJoystickEvent(e));
        }
コード例 #6
0
 protected override void Viewport_JoystickEvent(Viewport viewport, JoystickInputEvent e, ref bool handled)
 {
     preview.PerformJoystickEvent(e, ref handled);
 }
コード例 #7
0
 public void PerformBaseViewportJoystickEvent(JoystickInputEvent e, ref bool handled)
 {
     base.Viewport_JoystickEvent(Viewport, e, ref handled);
 }
コード例 #8
0
 protected virtual void Viewport_JoystickEvent(Viewport viewport, JoystickInputEvent e, ref bool handled)
 {
 }
コード例 #9
0
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            if (base.OnJoystickEvent(e))
            {
                return(true);
            }
            if (_newJoystickValue != null || _newKeyboardMousevalue != null)
            {
                return(true);
            }
            if (controlItem != null && _oldJoystickValue != null)
            {
                string message         = "";
                bool   isDeadZoneNoise = false;
                //JoystickButtonDownEvent
                {
                    var evt = e as JoystickButtonDownEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Button.Name)
                        {
                            Parent = controlItem
                        };
                        GameControlsManager.SystemJoystickValue key;
                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.Button.Name, out key))
                        {
                            message = "Button " + evt.Button.Name + " is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind";
                            _conflictJoystickValue = key;
                        }
                    }
                }
                //JoystickAxisChangedEvent
                {
                    var evt = e as JoystickAxisChangedEvent;
                    if (evt != null)
                    {
                        var filter = JoystickAxisFilters.DEADZONE;
                        if (evt.Axis.Value < -GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.LessZero;
                        }
                        else if (evt.Axis.Value > GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.GreaterZero;
                        }

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Axis.Name, filter)
                            {
                                Parent = controlItem
                            };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Axis.Name, filter, out key))
                            {
                                message = "Axis " + evt.Axis.Name + "(" + filter + ")" + " is already bound to  " + key.Parent.ControlKey + ". Override ?, or Click Clear to remove the bind";
                                _conflictJoystickValue = key;
                            }
                        }
                        else
                        {
                            isDeadZoneNoise = true;
                        }
                    }
                }
                {
                    var evt = e as JoystickPOVChangedEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.POV.Name, evt.POV.Value)
                        {
                            Parent = controlItem
                        };
                        GameControlsManager.SystemJoystickValue key;
                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.POV.Name, evt.POV.Value, out key))
                        {
                            message = "Pov " + evt.POV.Name + "(" + evt.POV.Value + ") is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind ";
                            _conflictJoystickValue = key;
                        }
                    }
                }
                {
                    var evt = e as JoystickSliderChangedEvent;
                    if (evt != null)
                    {
                        var currentValue = evt.Axis == JoystickSliderAxes.X
                                    ? evt.Slider.Value.X
                                    : evt.Slider.Value.Y;

                        var filter = JoystickAxisFilters.DEADZONE;
                        if (currentValue < -GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.LessZero;
                        }
                        else if (currentValue > GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.GreaterZero;
                        }

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Slider.Name, evt.Axis, filter)
                            {
                                Parent = controlItem
                            };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Slider.Name, evt.Axis, filter, out key))
                            {
                                message = "Slider " + evt.Slider.Name + "(" + evt.Axis + "  / " + filter + ") is already bound to  " +
                                          key.Parent.ControlKey + ". Override ?";
                                _conflictJoystickValue = key;
                            }
                        }
                        else
                        {
                            isDeadZoneNoise = true;
                        }
                    }
                }

                if (_conflictJoystickValue != null)
                {
                    CreateConfirmDialogue(message);
                    return(true);
                }
                if (!isDeadZoneNoise)
                {
                    SetKey();
                    SetShouldDetach();
                }
                return(true);
            }
            return(false);
        }
コード例 #10
0
ファイル: GameControlsManager.cs プロジェクト: whztt07/SDK
        public bool DoJoystickEvent( JoystickInputEvent e )
        {
            //JoystickButtonDownEvent
            {
                JoystickButtonDownEvent evt = e as JoystickButtonDownEvent;
                if( evt != null )
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach( GameControlItem item in items )
                    {
                        //!!!!!need use binded values here
                        foreach( SystemJoystickValue value in item.DefaultJoystickValues )
                        {
                            if( value.Type == SystemJoystickValue.Types.Button &&
                                value.Button == evt.Button.Name )
                            {
                                if( GameControlsEvent != null )
                                {
                                    GameControlsEvent( new GameControlsKeyDownEventData(
                                        item.ControlKey, 1 ) );
                                }
                                handled = true;
                            }
                        }
                    }
                    return handled;
                }
            }

            //JoystickButtonUpEvent
            {
                JoystickButtonUpEvent evt = e as JoystickButtonUpEvent;
                if( evt != null )
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach( GameControlItem item in items )
                    {
                        //!!!!!need use binded values here
                        foreach( SystemJoystickValue value in item.DefaultJoystickValues )
                        {
                            if( value.Type == SystemJoystickValue.Types.Button &&
                                value.Button == evt.Button.Name )
                            {
                                if( GameControlsEvent != null )
                                    GameControlsEvent( new GameControlsKeyUpEventData( item.ControlKey ) );
                                handled = true;
                            }
                        }
                    }
                    return handled;
                }
            }

            //JoystickAxisChangedEvent
            {
                JoystickAxisChangedEvent evt = e as JoystickAxisChangedEvent;
                if( evt != null )
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach( GameControlItem item in items )
                    {
                        //!!!!!need use binded values here
                        foreach( SystemJoystickValue value in item.DefaultJoystickValues )
                        {
                            if( value.Type == SystemJoystickValue.Types.Axis &&
                                value.Axis == evt.Axis.Name )
                            {
                                float strength = 0;

                                //!!!!need change in the options
                                const float deadZone = .2f;// 20%

                                switch( value.AxisFilter )
                                {
                                case JoystickAxisFilters.LessZero:
                                    if( evt.Axis.Value < -deadZone )
                                        strength = -evt.Axis.Value;
                                    break;

                                case JoystickAxisFilters.GreaterZero:
                                    if( evt.Axis.Value > deadZone )
                                        strength = evt.Axis.Value;
                                    break;
                                }

                                if( strength != 0 )
                                {
                                    if( GameControlsEvent != null )
                                    {
                                        GameControlsEvent( new GameControlsKeyDownEventData(
                                            item.ControlKey, strength ) );
                                    }
                                }
                                else
                                {
                                    if( GameControlsEvent != null )
                                    {
                                        GameControlsEvent( new GameControlsKeyUpEventData(
                                            item.ControlKey ) );
                                    }
                                }

                                handled = true;
                            }
                        }
                    }

                    return handled;
                }
            }

            //JoystickPOVChangedEvent
            {
                JoystickPOVChangedEvent evt = e as JoystickPOVChangedEvent;
                if( evt != null )
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach( GameControlItem item in items )
                    {
                        //!!!!!need use binded values here
                        foreach( SystemJoystickValue value in item.DefaultJoystickValues )
                        {
                            if( value.Type == SystemJoystickValue.Types.POV &&
                                value.POV == evt.POV.Name )
                            {
                                if( ( value.POVDirection & evt.POV.Value ) != 0 )
                                {
                                    if( GameControlsEvent != null )
                                    {
                                        GameControlsEvent( new GameControlsKeyDownEventData(
                                            item.ControlKey, 1 ) );
                                    }
                                }
                                else
                                {
                                    if( GameControlsEvent != null )
                                    {
                                        GameControlsEvent( new GameControlsKeyUpEventData(
                                            item.ControlKey ) );
                                    }
                                }
                                handled = true;
                            }
                        }
                    }
                    return handled;
                }
            }

            //JoystickSliderChangedEvent
            {
                JoystickSliderChangedEvent evt = e as JoystickSliderChangedEvent;
                if( evt != null )
                {
                    //..
                }
            }

            return false;
        }
コード例 #11
0
 protected virtual bool OnJoystickEvent(Viewport viewport, JoystickInputEvent e)
 {
     return(false);
 }
コード例 #12
0
 protected override bool OnJoystickEvent(JoystickInputEvent e)
 {
     if (controlManager != null && !IsScreenFadingOut())
         if (controlManager.DoJoystickEvent(e))
             return true;
     return base.OnJoystickEvent(e);
 }
コード例 #13
0
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            //If atop openly any window to not process
            if (Controls.Count != 1)
                return base.OnJoystickEvent(e);

            //GameControlsManager
            if (EntitySystemWorld.Instance.Simulation)
            {
                if (!FreeCameraEnabled && !IsCutSceneEnabled())
                {
                    if (GameControlsManager.Instance.DoJoystickEvent(e))
                        return true;
                }
            }

            return base.OnJoystickEvent(e);
        }
コード例 #14
0
 protected virtual void OnJoystickEvent(JoystickInputEvent e, ref bool handled)
 {
     owner.PerformBaseViewportJoystickEvent(e, ref handled);
 }
コード例 #15
0
 public InputMessageJoystick(JoystickInputEvent inputEvent)
 {
     this.inputEvent = inputEvent;
 }
コード例 #16
0
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            if (base.OnJoystickEvent(e))
                return true;
            if (_newJoystickValue != null || _newKeyboardMousevalue != null)
                return true;
            if (controlItem != null && _oldJoystickValue != null)
            {
                string message = "";
                bool isDeadZoneNoise = false;
                //JoystickButtonDownEvent
                {
                    var evt = e as JoystickButtonDownEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Button.Name) { Parent = controlItem };
                        GameControlsManager.SystemJoystickValue key;
                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.Button.Name, out key))
                        {
                            message = "Button " + evt.Button.Name + " is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind";
                            _conflictJoystickValue = key;
                        }
                    }
                }
                //JoystickAxisChangedEvent
                {
                    var evt = e as JoystickAxisChangedEvent;
                    if (evt != null)
                    {
                        var filter = JoystickAxisFilters.DEADZONE;
                        if (evt.Axis.Value < -GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.LessZero;
                        }
                        else if (evt.Axis.Value > GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.GreaterZero;
                        }

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Axis.Name, filter) { Parent = controlItem };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Axis.Name, filter, out key))
                            {
                                message = "Axis " + evt.Axis.Name + "(" + filter + ")" + " is already bound to  " + key.Parent.ControlKey + ". Override ?, or Click Clear to remove the bind";
                                _conflictJoystickValue = key;
                            }
                        }
                        else
                            isDeadZoneNoise = true;
                    }
                }
                {
                    var evt = e as JoystickPOVChangedEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.POV.Name, evt.POV.Value) { Parent = controlItem };
                        GameControlsManager.SystemJoystickValue key;
                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.POV.Name, evt.POV.Value, out key))
                        {
                            message = "Pov " + evt.POV.Name + "(" + evt.POV.Value + ") is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind ";
                            _conflictJoystickValue = key;
                        }
                    }
                }
                {
                    var evt = e as JoystickSliderChangedEvent;
                    if (evt != null)
                    {
                        var currentValue = evt.Axis == JoystickSliderAxes.X
                                    ? evt.Slider.Value.X
                                    : evt.Slider.Value.Y;

                        var filter = JoystickAxisFilters.DEADZONE;
                        if (currentValue < -GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.LessZero;
                        }
                        else if (currentValue > GameControlsManager.Instance.DeadZone)
                        {
                            filter = JoystickAxisFilters.GreaterZero;
                        }

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Slider.Name, evt.Axis, filter)
                            {
                                Parent = controlItem
                            };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Slider.Name, evt.Axis, filter, out key))
                            {
                                message = "Slider " + evt.Slider.Name + "(" + evt.Axis + "  / " + filter + ") is already bound to  " +
                                          key.Parent.ControlKey + ". Override ?";
                                _conflictJoystickValue = key;
                            }
                        }
                        else
                            isDeadZoneNoise = true;
                    }
                }

                if (_conflictJoystickValue != null)
                {
                    CreateConfirmDialogue(message);
                    return true;
                }
                if (!isDeadZoneNoise)
                {
                    SetKey();
                    SetShouldDetach();
                }
                return true;
            }
            return false;
        }
コード例 #17
0
        public bool DoJoystickEvent(JoystickInputEvent e)
        {
            #region JoystickButtonDownEvent

            {
                JoystickButtonDownEvent evt = e as JoystickButtonDownEvent;
                if (evt != null)
                {
                    bool handled = false;

                    GameControlsManager.SystemJoystickValue key;
                    if (GameControlsManager.Instance.IsAlreadyBinded(evt.Button.Name, out key))
                    {
                        if (GameControlsEvent != null)
                        {
                            GameControlsEvent(new GameControlsKeyDownEventData(key.Parent.ControlKey, 1));
                        }
                        handled = true;
                    }

                    return handled;
                }
            }

            #endregion JoystickButtonDownEvent

            #region JoystickButtonUpEvent

            {
                JoystickButtonUpEvent evt = e as JoystickButtonUpEvent;
                if (evt != null)
                {
                    bool handled = false;

                    GameControlsManager.SystemJoystickValue key;
                    if (GameControlsManager.Instance.IsAlreadyBinded(evt.Button.Name, out key))
                    {
                        if (GameControlsEvent != null)
                            GameControlsEvent(new GameControlsKeyUpEventData(key.Parent.ControlKey, 1));
                        handled = true;
                    }
                    return handled;
                }
            }

            #endregion JoystickButtonUpEvent

            #region JoystickAxisChangedEvent

            {
                JoystickAxisChangedEvent evt = e as JoystickAxisChangedEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        if (item.BindedJoystickValues.Count > 0)
                        {
                            foreach (SystemJoystickValue value in item.BindedJoystickValues)
                            {
                                if (value.Type == SystemJoystickValue.Types.Axis &&
                                    value.Axis == evt.Axis.Name)
                                {
                                    float strength = 0f;

                                    switch (value.AxisFilter)
                                    {
                                        case JoystickAxisFilters.LessZero:
                                            if (evt.Axis.Value < -DeadZone)
                                                strength = -evt.Axis.Value;
                                            break;

                                        case JoystickAxisFilters.GreaterZero:
                                            if (evt.Axis.Value > DeadZone)
                                                strength = evt.Axis.Value;

                                            break;

                                        case JoystickAxisFilters.OnlyGreaterZero:    //ignore negative values
                                            if (evt.Axis.Value >= DeadZone)
                                                strength = evt.Axis.Value;
                                            break;

                                        case JoystickAxisFilters.OnlyLessZero:    //ignore positive values
                                            if (evt.Axis.Value <= -DeadZone)
                                                strength = -evt.Axis.Value;
                                            break;
                                    }

                                    if (strength != 0)
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyDownEventData(
                                                item.ControlKey, strength));
                                        }
                                    }
                                    else
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyUpEventData(
                                                    item.ControlKey, 1));
                                        }
                                    }

                                    handled = true;
                                }
                            }
                        }
                    }

                    return handled;
                }
            }

            #endregion JoystickAxisChangedEvent

            #region JoystickPOVChangedEvent

            {
                JoystickPOVChangedEvent evt = e as JoystickPOVChangedEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        if (item.BindedJoystickValues.Count > 0)
                        {
                            foreach (SystemJoystickValue value in item.BindedJoystickValues)
                            {
                                if (value.Type == SystemJoystickValue.Types.POV &&
                                    value.POV == evt.POV.Name)
                                {
                                    if ((value.POVDirection & evt.POV.Value) != 0)
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyDownEventData(
                                                item.ControlKey, 1));
                                        }
                                    }
                                    else
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyUpEventData(
                                                item.ControlKey, 1));
                                        }
                                    }
                                    handled = true;
                                }
                            }
                        }
                    }
                    return handled;
                }
            }

            #endregion JoystickPOVChangedEvent

            #region JoystickSliderChangedEvent

            {
                JoystickSliderChangedEvent evt = e as JoystickSliderChangedEvent;
                if (evt != null)
                {
                    bool handled = false;
                    foreach (GameControlItem item in items)
                    {
                        if (item.BindedJoystickValues.Count > 0)
                        {
                            foreach (SystemJoystickValue value in item.BindedJoystickValues)
                            {
                                if (value.Type == SystemJoystickValue.Types.Slider &&
                                    value.Slider == evt.Slider.Name && value.SliderAxis == evt.Axis)
                                {
                                    var currentValue = evt.Axis == JoystickSliderAxes.X
                                        ? evt.Slider.Value.X
                                        : evt.Slider.Value.Y;

                                    float strength = 0f;

                                    switch (value.AxisFilter)
                                    {
                                        case JoystickAxisFilters.LessZero:
                                            if (currentValue < -DeadZone)
                                                strength = -currentValue;
                                            break;

                                        case JoystickAxisFilters.GreaterZero:
                                            if (currentValue > DeadZone)
                                                strength = currentValue;
                                            break;

                                        case JoystickAxisFilters.OnlyGreaterZero:    //ignore negative values for foot pedals
                                            if (currentValue >= 0 && currentValue > DeadZone)
                                                strength = currentValue;
                                            break;

                                        case JoystickAxisFilters.OnlyLessZero:    //ignore positive values for foot pedals
                                            if (currentValue <= 0 && currentValue < -DeadZone)
                                                strength = -currentValue;
                                            break;
                                    }

                                    if (strength != 0)
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyDownEventData(
                                                item.ControlKey, strength));
                                        }
                                    }
                                    else
                                    {
                                        if (GameControlsEvent != null)
                                        {
                                            GameControlsEvent(new GameControlsKeyUpEventData(
                                                item.ControlKey));
                                        }
                                    }

                                    handled = true;
                                }
                            }
                        }
                    }
                    return handled;
                }
            }

            #endregion JoystickSliderChangedEvent

            return false;
        }
コード例 #18
0
 protected override bool OnJoystickEvent( JoystickInputEvent e )
 {
     if( controlManager != null )
         if( controlManager.DoJoystickEvent( e ) )
             return true;
     return base.OnJoystickEvent( e );
 }
コード例 #19
0
        public bool DoJoystickEvent(JoystickInputEvent e)
        {
            //JoystickButtonDownEvent
            {
                JoystickButtonDownEvent evt = e as JoystickButtonDownEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        //!!!!!need use binded values here
                        foreach (SystemJoystickValue value in item.DefaultJoystickValues)
                        {
                            if (value.Type == SystemJoystickValue.Types.Button &&
                                value.Button == evt.Button.Name)
                            {
                                if (GameControlsEvent != null)
                                {
                                    GameControlsEvent(new GameControlsKeyDownEventData(
                                                          item.ControlKey, 1));
                                }
                                handled = true;
                            }
                        }
                    }
                    return(handled);
                }
            }

            //JoystickButtonUpEvent
            {
                JoystickButtonUpEvent evt = e as JoystickButtonUpEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        //!!!!!need use binded values here
                        foreach (SystemJoystickValue value in item.DefaultJoystickValues)
                        {
                            if (value.Type == SystemJoystickValue.Types.Button &&
                                value.Button == evt.Button.Name)
                            {
                                if (GameControlsEvent != null)
                                {
                                    GameControlsEvent(new GameControlsKeyUpEventData(item.ControlKey));
                                }
                                handled = true;
                            }
                        }
                    }
                    return(handled);
                }
            }

            //JoystickAxisChangedEvent
            {
                JoystickAxisChangedEvent evt = e as JoystickAxisChangedEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        //!!!!!need use binded values here
                        foreach (SystemJoystickValue value in item.DefaultJoystickValues)
                        {
                            if (value.Type == SystemJoystickValue.Types.Axis &&
                                value.Axis == evt.Axis.Name)
                            {
                                float strength = 0;

                                //!!!!need change in the options
                                const float deadZone = .2f;                                // 20%

                                switch (value.AxisFilter)
                                {
                                case JoystickAxisFilters.LessZero:
                                    if (evt.Axis.Value < -deadZone)
                                    {
                                        strength = -evt.Axis.Value;
                                    }
                                    break;

                                case JoystickAxisFilters.GreaterZero:
                                    if (evt.Axis.Value > deadZone)
                                    {
                                        strength = evt.Axis.Value;
                                    }
                                    break;
                                }

                                if (strength != 0)
                                {
                                    if (GameControlsEvent != null)
                                    {
                                        GameControlsEvent(new GameControlsKeyDownEventData(
                                                              item.ControlKey, strength));
                                    }
                                }
                                else
                                {
                                    if (GameControlsEvent != null)
                                    {
                                        GameControlsEvent(new GameControlsKeyUpEventData(
                                                              item.ControlKey));
                                    }
                                }

                                handled = true;
                            }
                        }
                    }

                    return(handled);
                }
            }

            //JoystickPOVChangedEvent
            {
                JoystickPOVChangedEvent evt = e as JoystickPOVChangedEvent;
                if (evt != null)
                {
                    bool handled = false;
                    //!!!!!slowly
                    foreach (GameControlItem item in items)
                    {
                        //!!!!!need use binded values here
                        foreach (SystemJoystickValue value in item.DefaultJoystickValues)
                        {
                            if (value.Type == SystemJoystickValue.Types.POV &&
                                value.POV == evt.POV.Name)
                            {
                                if ((value.POVDirection & evt.POV.Value) != 0)
                                {
                                    if (GameControlsEvent != null)
                                    {
                                        GameControlsEvent(new GameControlsKeyDownEventData(
                                                              item.ControlKey, 1));
                                    }
                                }
                                else
                                {
                                    if (GameControlsEvent != null)
                                    {
                                        GameControlsEvent(new GameControlsKeyUpEventData(
                                                              item.ControlKey));
                                    }
                                }
                                handled = true;
                            }
                        }
                    }
                    return(handled);
                }
            }

            //JoystickSliderChangedEvent
            {
                JoystickSliderChangedEvent evt = e as JoystickSliderChangedEvent;
                if (evt != null)
                {
                    //..
                }
            }

            return(false);
        }
コード例 #20
0
ファイル: GameEngineApp.cs プロジェクト: huytd/fosproject
 protected override bool OnJoystickEvent( JoystickInputEvent e )
 {
     if( ScreenControlManager.Instance != null )
         if( ScreenControlManager.Instance.DoJoystickEvent( e ) )
             return true;
     return base.OnJoystickEvent( e );
 }
コード例 #21
0
 internal void PerformJoystickEvent(JoystickInputEvent e, ref bool handled)
 {
     OnJoystickEvent(e, ref handled);
 }
コード例 #22
0
        /// <summary>
        /// Process Joystick Event in order to bind it
        /// </summary>
        protected override bool OnJoystickEvent(JoystickInputEvent e)
        {
            if (base.OnJoystickEvent(e))
            {
                return(true);
            }
            if (_newJoystickValue != null || _newKeyboardMousevalue != null)
            {
                return(true);
            }
            if (controlItem != null && _oldJoystickValue != null)
            {
                string message = "";
                //JoystickButtonDownEvent
                {
                    var evt = e as JoystickButtonDownEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Button.Name)
                        {
                            Parent = controlItem
                        };
                        GameControlsManager.SystemJoystickValue key;

                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.Button.Name, out key))
                        {
                            message = "Button " + evt.Button.Name + " is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind";
                            _conflictJoystickValue = key;
                        }
                    }
                }
                //JoystickAxisChangedEvent
                {
                    var evt = e as JoystickAxisChangedEvent;

                    if (evt != null)
                    {
                        var filter = JoystickAxisFilters.DEADZONE;

                        if (_oldJoystickValue.AxisFilter != null)
                        {
                            filter = _oldJoystickValue.AxisFilter;
                        }

                        CreateAxisFilterDialogue(out filter);
                        //Incin -- this needs to add the other filters so it reads the filters right
                        // should call the key information to populate here the var value

                        //if( evt.Axis.Value < -GameControlsManager.Instance.DeadZone )
                        //{
                        //    filter = JoystickAxisFilters.LessZero;
                        //}
                        //else if( evt.Axis.Value > GameControlsManager.Instance.DeadZone )
                        //{
                        //    filter = JoystickAxisFilters.GreaterZero;
                        //}

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Axis.Name, filter)
                            {
                                Parent = controlItem
                            };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Axis.Name, filter, out key))
                            {
                                message = "Axis " + evt.Axis.Name + "(" + filter + ") is already bound to  " + key.Parent.ControlKey + ". Override ?, or Click Clear to remove the bind";
                                _conflictJoystickValue = key;
                            }
                        }
                    }
                }

                {
                    var evt = e as JoystickPOVChangedEvent;
                    if (evt != null)
                    {
                        _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.POV.Name, evt.POV.Value)
                        {
                            Parent = controlItem
                        };
                        GameControlsManager.SystemJoystickValue key;
                        if (GameControlsManager.Instance.IsAlreadyBinded(evt.POV.Name, evt.POV.Value, out key))
                        {
                            message = "Pov " + evt.POV.Name + "(" + evt.POV.Value + ") is already bound to  " + key.Parent.ControlKey + ". Override? or Click Clear to remove the bind ";
                            _conflictJoystickValue = key;
                        }
                    }
                }

                {
                    var evt = e as JoystickSliderChangedEvent;
                    if (evt != null)
                    {
                        //var currentValue = evt.Axis == JoystickSliderAxes.X
                        //			? evt.Slider.Value.X
                        //			: evt.Slider.Value.Y;

                        var filter = JoystickAxisFilters.DEADZONE;
                        //Incin -- this needs to add the other filters so it reads the filters right
                        // should call the key information to populate here the var value
                        if (_oldJoystickValue.AxisFilter != null)
                        {
                            filter = _oldJoystickValue.AxisFilter;
                        }

                        JoystickAxisFilters newfilter = JoystickAxisFilters.DEADZONE;
                        bool finished = false;

                        if (newfilter == JoystickAxisFilters.DEADZONE)
                        {
                            CreateAxisFilterDialogue(out newfilter, out finished);
                            return(true);
                        }

                        if (filter != newfilter)
                        {
                            //not same setting
                            //save new setting
                        }

                        //if( currentValue < -GameControlsManager.Instance.DeadZone )
                        //{
                        //    filter = JoystickAxisFilters.LessZero;
                        //}
                        //else if( currentValue > GameControlsManager.Instance.DeadZone )
                        //{
                        //    filter = JoystickAxisFilters.GreaterZero;
                        //}

                        //pass the dead zone
                        if (filter != JoystickAxisFilters.DEADZONE)
                        {
                            _newJoystickValue = new GameControlsManager.SystemJoystickValue(evt.Slider.Name, evt.Axis, filter)
                            {
                                Parent = controlItem
                            };
                            GameControlsManager.SystemJoystickValue key;
                            if (GameControlsManager.Instance.IsAlreadyBinded(evt.Slider.Name, evt.Axis, filter, out key))
                            {
                                message = "Slider " + evt.Slider.Name + "(" + evt.Axis + ")" + "(" + filter + ") is already bound to  " +
                                          key.Parent.ControlKey + ". Override ?";
                                _conflictJoystickValue = key;
                            }
                        }
                    }
                }

                if (_conflictJoystickValue != null)
                {
                    CreateConfirmDialogue(message);
                    return(true);
                }
                SetKey();
                SetShouldDetach();
                return(true);
            }
            return(false);
        }