public InputMappings() { ButtonMapping = new ButtonMapping(); AxisMapping = new AxisMapping(); ControllerId = 0; EmulationMapping = new EmulationButtonMapping(); }
// 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(); } }
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); }
// 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); }
// 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); }
public void HardwareAxes_ShouldBeInitializedWithEmptyList() { // Arrange // Act var axisMapping = new AxisMapping(); // Assert Assert.That(axisMapping.HardwareAxes, Is.Not.Null); Assert.That(axisMapping.HardwareAxes, Is.Empty); }
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); }
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(); } }
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); }
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(); }
public void MapAxisAction(string axisActionName, AxisMapping axis) { mappedAxisActions[axisActionName] = axis; }
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; } }
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; } }