public InputMappings()
 {
     ButtonMapping    = new ButtonMapping();
     AxisMapping      = new AxisMapping();
     ControllerId     = 0;
     EmulationMapping = new EmulationButtonMapping();
 }
Esempio n. 2
0
    // AxisValue
    public float AxisValue(int gameAxis)
    {
        float value    = 0.0f;
        bool  setFirst = false;

        for (int i = 0; i < AxisMappings[gameAxis].Count; ++i)
        {
            AxisMapping inputMapping = AxisMappings[gameAxis][i];

            float buttonValueNegative = inputMapping.Device.ButtonValue(inputMapping.ButtonNegative);
            float buttonValuePositive = inputMapping.Device.ButtonValue(inputMapping.ButtonPositive);

            if ((buttonValueNegative == 0.0f) && (buttonValuePositive == 0.0f))
            {
                continue;
            }

            float axisValue = -buttonValueNegative + buttonValuePositive;

            if (!setFirst)
            {
                value    = axisValue;
                setFirst = true;

                continue;
            }

            if (axisValue > value)
            {
                value = axisValue;
            }
        }

        return(value);
    }
        /// <summary>
        /// Handles the DPad input. If a button was pressed, <see cref="AxisMapping.AxisType.ButtonWrapper2"/> will be used.
        /// </summary>
        /// <param name="axis"></param>
        private void HandleDPad(CAxis axis)
        {
            AxisMapping mapping = Mapping.Axes[(int)axis];
            int         index;

            // some gamepads only have buttons for the dpad
            if (GetButton(out index))
            {
                if (step == 0)
                {
                    mapping.Axis = index;
                }
                else
                {
                    mapping.Alternative = index;
                }
                mapping.Type = AxisMapping.AxisType.ButtonWrapper2;
                Next();
            }
            else if (GetAxis(out index))
            {
                mapping.Axis   = index;
                mapping.Invert = Snapshot[index] > 0;
                if (axis == CAxis.DY)
                {
                    mapping.Invert = !mapping.Invert;
                }
                Next();
            }
        }
Esempio n. 4
0
            public void AddInputWithSampleMouseAxisMappings(out InputComponent inputComponent, out AxisMapping lookRight, out AxisMapping lookUp)
            {
                lookRight = new AxisMapping {
                    AxisName = nameof(lookRight)
                };
                lookRight.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateMouseVariant(HardwareInputVariant.MouseVariant.AxisX),
                    Scale = 1.0
                });

                lookUp = new AxisMapping {
                    AxisName = nameof(lookUp)
                };
                lookUp.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateMouseVariant(HardwareInputVariant.MouseVariant.AxisY),
                    Scale = 1.0
                });

                var inputMapping = new InputMapping();

                inputMapping.AxisMappings.Add(lookUp);
                inputMapping.AxisMappings.Add(lookRight);

                inputComponent = new InputComponent {
                    InputMapping = inputMapping
                };

                var entity = new Entity();

                entity.AddComponent(inputComponent);

                _scene.AddEntity(entity);
            }
        public void InputMapping_ShouldSetDefinedAxisStatesToZero_WhenSetWithAxisMappingGroups()
        {
            // Arrange
            var inputComponent = new InputComponent();

            var inputMapping = new InputMapping();

            var axisMapping1 = new AxisMapping {
                AxisName = "Axis 1"
            };
            var axisMapping2 = new AxisMapping {
                AxisName = "Axis 2"
            };

            inputMapping.AxisMappings.Add(axisMapping1);
            inputMapping.AxisMappings.Add(axisMapping2);

            // Act
            inputComponent.InputMapping = inputMapping;

            // Assert
            Assert.That(inputComponent.AxisStates.Count, Is.EqualTo(2));
            Assert.That(inputComponent.AxisStates[axisMapping1.AxisName], Is.Zero);
            Assert.That(inputComponent.AxisStates[axisMapping2.AxisName], Is.Zero);
        }
Esempio n. 6
0
        // method to map a joystick axis to an action
        public void MapJoystickAxisAction(Axis nAxis, AxisAction proc)
        {
            AxisMapping map = new AxisMapping();

            map.key    = (int)nAxis + 3;
            map.action = proc;
            m_AxisActionMap.Add(map);
        }
Esempio n. 7
0
        // method to map a mouse axis to an action
        public void MapMouseAxisAction(Axis nAxis, AxisAction proc)
        {
            AxisMapping map = new AxisMapping();

            map.key    = (int)nAxis;
            map.action = proc;
            m_AxisActionMap.Add(map);
        }
Esempio n. 8
0
        public void HardwareAxes_ShouldBeInitializedWithEmptyList()
        {
            // Arrange
            // Act
            var axisMapping = new AxisMapping();

            // Assert
            Assert.That(axisMapping.HardwareAxes, Is.Not.Null);
            Assert.That(axisMapping.HardwareAxes, Is.Empty);
        }
Esempio n. 9
0
            public void AddInputWithSampleKeyboardAxisMappings(out InputComponent inputComponent, out AxisMapping moveUp, out AxisMapping moveRight)
            {
                moveUp = new AxisMapping {
                    AxisName = nameof(moveUp)
                };
                moveUp.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(Key.Up),
                    Scale = 1.0
                });
                moveUp.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(Key.Down),
                    Scale = -1.0
                });
                moveUp.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(Key.Space),
                    Scale = 5.0
                });

                moveRight = new AxisMapping {
                    AxisName = nameof(moveRight)
                };
                moveRight.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(Key.Right),
                    Scale = 1.0
                });
                moveRight.HardwareAxes.Add(new HardwareAxis
                {
                    HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(Key.Left),
                    Scale = -1.0
                });

                var inputMapping = new InputMapping();

                inputMapping.AxisMappings.Add(moveUp);
                inputMapping.AxisMappings.Add(moveRight);

                inputComponent = new InputComponent {
                    InputMapping = inputMapping
                };

                var entity = new Entity();

                entity.AddComponent(inputComponent);

                _scene.AddEntity(entity);
            }
Esempio n. 10
0
        private void _initAxisMappings()
        {
            foreach (JToken mapping in _config.MappingsAxis)
            {
                var requestedPhysicalDevice = (uint)mapping["physicalDevice"]["id"];
                var physicalDevice          = ControllerFactory.GetPhysicalController(_config.GetPhysicalDeviceGuidFromId(requestedPhysicalDevice));
                var requestedVjoyDevice     = (uint)mapping["vJoyDevice"]["id"];
                var vJoyDevice = ControllerFactory.GetvJoyController(_config.GetVjoyDeviceSystemIdFromId(requestedVjoyDevice));

                AxisMapping newAxisMapping = new AxisMapping(
                    physicalAxis: (string)mapping["physicalDevice"]["axis"],
                    vjoyAxis: (string)mapping["vJoyDevice"]["axis"],
                    controller: physicalDevice,
                    vcontroller: vJoyDevice
                    );
                _controllerMaps.Add(newAxisMapping);
            }
        }
        /// <summary>
        /// Handles left/right trigger. If a button was pressed, <see cref="AxisMapping.AxisType.ButtonWrapper"/> will be used.
        /// </summary>
        /// <param name="axis"></param>
        private void HandleTrigger(CAxis axis)
        {
            AxisMapping mapping = Mapping.Axes[(int)axis];
            int         index;

            if (GetButton(out index))  // wrapper
            {
                mapping.Axis = index;
                mapping.Type = AxisMapping.AxisType.ButtonWrapper;
                mapping.Min  = 0;
                mapping.Max  = 1;
                Next();
            }
            else if (GetAxis(out index))
            {
                mapping.Axis = index;
                Next();
            }
        }
Esempio n. 12
0
    protected void Update()
    {
        pressedButton = null;
        nonZeroAxis   = null;

        for (int i = 0; i < possibleButtons.Count; ++i)
        {
            possibleButtons[i].Update();
            if (possibleButtons[i].isButtonPressed)
            {
                pressedButton = possibleButtons[i];
            }
        }

        for (int i = 0; i < possibleAxes.Count; ++i)
        {
            if (Mathf.Abs(possibleAxes[i].value) > axisThreshold)
            {
                nonZeroAxis = possibleAxes[i];
            }
        }
    }
        /// <summary>
        /// Returns the appropriate axis mapping entry for each individual specific axis.
        /// The axis have a 1-1 relationship (oldaxis -> new axis) and a set of properties as defined in
        /// Controller_Axis_Mapping.
        /// </summary>
        /// <param name="axis">The axis whose details we want to obtain.</param>
        /// <param name="axisMapping">The axis mapping which stores the axis details for the individual controller.</param>
        /// <returns></returns>
        public static AxisMappingEntry InputGetMappedAxis(ControllerAxis axis, AxisMapping axisMapping)
        {
            // Stores the axis configuration that is to be returned.
            AxisMappingEntry controllerAxisMapping = new AxisMappingEntry();

            // Find axis mapped to the requested controller axis.
            // Check every axis manually, until one of the axes contains the desired destination axis.
            if (IsCorrectAxisMappingEntry(axisMapping.LeftStickX, axis))
            {
                return(axisMapping.LeftStickX);
            }
            if (IsCorrectAxisMappingEntry(axisMapping.LeftStickY, axis))
            {
                return(axisMapping.LeftStickY);
            }

            if (IsCorrectAxisMappingEntry(axisMapping.RightStickX, axis))
            {
                return(axisMapping.RightStickX);
            }
            if (IsCorrectAxisMappingEntry(axisMapping.RightStickY, axis))
            {
                return(axisMapping.RightStickY);
            }

            if (IsCorrectAxisMappingEntry(axisMapping.LeftTrigger, axis))
            {
                return(axisMapping.LeftTrigger);
            }
            if (IsCorrectAxisMappingEntry(axisMapping.RightTrigger, axis))
            {
                return(axisMapping.RightTrigger);
            }

            // Retrieve empty struct if null, else the correct axis mapping.
            return(controllerAxisMapping);
        }
Esempio n. 14
0
        public object LoadAsset(AssetInfo assetInfo, IAssetStore assetStore)
        {
            using var fileStream = _fileSystem.GetFile(assetInfo.AssetFilePath).OpenRead();
            var assetData = AssetData.Load(fileStream);
            var inputMappingAssetContent = assetData.ReadJsonContent <InputMappingAssetContent>();

            if (inputMappingAssetContent.ActionMappings == null)
            {
                throw new InvalidOperationException($"{nameof(InputMappingAssetContent)}.{nameof(InputMappingAssetContent.ActionMappings)} cannot be null.");
            }
            if (inputMappingAssetContent.AxisMappings == null)
            {
                throw new InvalidOperationException($"{nameof(InputMappingAssetContent)}.{nameof(InputMappingAssetContent.AxisMappings)} cannot be null.");
            }

            var inputMapping = new InputMapping();

            foreach (var(actionName, serializableHardwareActions) in inputMappingAssetContent.ActionMappings)
            {
                var actionMapping = new ActionMapping
                {
                    ActionName = actionName
                };

                foreach (var serializableHardwareAction in serializableHardwareActions)
                {
                    if (serializableHardwareAction.Key != null && serializableHardwareAction.MouseButton == null)
                    {
                        actionMapping.HardwareActions.Add(new HardwareAction
                        {
                            HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(serializableHardwareAction.Key.Value)
                        });
                    }
                    else if (serializableHardwareAction.Key == null && serializableHardwareAction.MouseButton != null)
                    {
                        var mouseVariant = serializableHardwareAction.MouseButton switch
                        {
                            MouseButton.LeftButton => HardwareInputVariant.MouseVariant.LeftButton,
                            MouseButton.MiddleButton => HardwareInputVariant.MouseVariant.MiddleButton,
                            MouseButton.RightButton => HardwareInputVariant.MouseVariant.RightButton,
                            MouseButton.XButton1 => HardwareInputVariant.MouseVariant.XButton1,
                            MouseButton.XButton2 => HardwareInputVariant.MouseVariant.XButton2,
                            _ => throw new ArgumentOutOfRangeException(nameof(SerializableHardwareAction.MouseButton), serializableHardwareAction.MouseButton,
                                                                       "Unsupported mouse button found in input mapping.")
                        };

                        actionMapping.HardwareActions.Add(new HardwareAction
                        {
                            HardwareInputVariant = HardwareInputVariant.CreateMouseVariant(mouseVariant)
                        });
                    }
                    else
                    {
                        throw InvalidInputMappingAssetContentException.CreateForInvalidHardwareAction(inputMappingAssetContent);
                    }
                }

                inputMapping.ActionMappings.Add(actionMapping);
            }

            foreach (var(axisName, serializableHardwareAxes) in inputMappingAssetContent.AxisMappings)
            {
                var axisMapping = new AxisMapping
                {
                    AxisName = axisName
                };

                foreach (var serializableHardwareAxis in serializableHardwareAxes)
                {
                    if (serializableHardwareAxis.Key != null && serializableHardwareAxis.MouseAxis == null)
                    {
                        axisMapping.HardwareAxes.Add(new HardwareAxis
                        {
                            HardwareInputVariant = HardwareInputVariant.CreateKeyboardVariant(serializableHardwareAxis.Key.Value),
                            Scale = serializableHardwareAxis.Scale
                        });
                    }
                    else if (serializableHardwareAxis.Key == null && serializableHardwareAxis.MouseAxis != null)
                    {
                        var mouseVariant = serializableHardwareAxis.MouseAxis switch
                        {
                            MouseAxis.AxisX => HardwareInputVariant.MouseVariant.AxisX,
                            MouseAxis.AxisY => HardwareInputVariant.MouseVariant.AxisY,
                            _ => throw new ArgumentOutOfRangeException(nameof(SerializableHardwareAxis.MouseAxis), serializableHardwareAxis.MouseAxis,
                                                                       "Unsupported mouse axis found in input mapping.")
                        };

                        axisMapping.HardwareAxes.Add(new HardwareAxis
                        {
                            HardwareInputVariant = HardwareInputVariant.CreateMouseVariant(mouseVariant),
                            Scale = serializableHardwareAxis.Scale
                        });
                    }
                    else
                    {
                        throw InvalidInputMappingAssetContentException.CreateForInvalidHardwareAxis(inputMappingAssetContent);
                    }
                }

                inputMapping.AxisMappings.Add(axisMapping);
            }

            return(inputMapping);
        }
 public static string AxisMappingToStr(AxisMapping am) {
   string ret = VisionLabPINVOKE.AxisMappingToStr((int)am);
   if (VisionLabPINVOKE.SWIGPendingException.Pending) throw VisionLabPINVOKE.SWIGPendingException.Retrieve();
   return ret;
 }
 public static void MapAxis(ComplexDoubleImage inputImage, ComplexDoubleImage outputImage, AxisMapping axisMapping) {
   VisionLabPINVOKE.MapAxis__SWIG_29(ComplexDoubleImage.getCPtr(inputImage), ComplexDoubleImage.getCPtr(outputImage), (int)axisMapping);
   if (VisionLabPINVOKE.SWIGPendingException.Pending) throw VisionLabPINVOKE.SWIGPendingException.Retrieve();
 }
 public static void MapAxis(HSV888Image inputImage, HSV888Image outputImage, AxisMapping axisMapping) {
   VisionLabPINVOKE.MapAxis__SWIG_19(HSV888Image.getCPtr(inputImage), HSV888Image.getCPtr(outputImage), (int)axisMapping);
   if (VisionLabPINVOKE.SWIGPendingException.Pending) throw VisionLabPINVOKE.SWIGPendingException.Retrieve();
 }
Esempio n. 18
0
 public void MapAxisAction(string axisActionName, AxisMapping axis)
 {
     mappedAxisActions[axisActionName] = axis;
 }
Esempio n. 19
0
        public void SetObjectMode()
        {
            if (s_TheSensor != null)
            {
                if (m_SensorEventHandler != null)
                    s_TheSensor.SensorInput -= m_SensorEventHandler;

                m_SensorEventHandler = new TDconnexion.TDxSensorInputEvent(ObjectMode);
                s_TheSensor.SensorInput += m_SensorEventHandler;
                m_AxisMode = AxisMapping.TDXOBJECTMODE;
            }
        }
Esempio n. 20
0
        public void SetCameraMode()
        {
            if (s_TheSensor != null)
            {
                if (m_SensorEventHandler != null)
                    s_TheSensor.SensorInput -= m_SensorEventHandler;

                m_SensorEventHandler = new TDconnexion.TDxSensorInputEvent(CameraMode);
                s_TheSensor.SensorInput += m_SensorEventHandler;
                m_AxisMode = AxisMapping.TDXCAMERAMODE;
            }
        }