public void State_AllFeatureTypes_ReadTheSameAsTheirStateValue() { runtime.ReportNewInputDevice(TestXRDeviceState.CreateDeviceDescription().ToJson()); InputSystem.Update(); var device = InputSystem.devices[0]; InputSystem.QueueStateEvent(device, new TestXRDeviceState { button = 0, discreteState = 0, axis = 0f, axis2D = Vector2.zero, axis3D = Vector3.zero, rotation = Quaternion.identity, lastElement = 0, }); InputSystem.Update(); Assert.That(((ButtonControl)device["Button"]).isPressed, Is.False); Assert.That(device["DiscreteState"].ReadValueAsObject(), Is.EqualTo(0)); Assert.That(device["Axis"].ReadValueAsObject(), Is.EqualTo(0f).Within(0.0001f)); Assert.That(device["Vector2"].ReadValueAsObject(), Is.EqualTo(Vector2.zero)); Assert.That(device["Vector3"].ReadValueAsObject(), Is.EqualTo(Vector3.zero)); Assert.That(device["Rotation"].ReadValueAsObject(), Is.EqualTo(Quaternion.identity)); Assert.That(device.TryGetChildControl("Custom"), Is.Null); Assert.That(((ButtonControl)device["Last"]).isPressed, Is.False); InputSystem.QueueStateEvent(device, new TestXRDeviceState { button = 1, discreteState = 17, axis = 1.24f, axis2D = new Vector2(0.1f, 0.2f), axis3D = new Vector3(0.3f, 0.4f, 0.5f), rotation = new Quaternion(0.6f, 0.7f, 0.8f, 0.9f), lastElement = byte.MaxValue, }); InputSystem.Update(); Assert.That(((ButtonControl)device["Button"]).isPressed, Is.True); Assert.That(device["DiscreteState"].ReadValueAsObject(), Is.EqualTo(17)); Assert.That(device["Axis"].ReadValueAsObject(), Is.EqualTo(1.24f).Within(0.0001f)); Assert.That(device["Vector2"].ReadValueAsObject(), Is.EqualTo(new Vector2(0.1f, 0.2f))); Assert.That(device["Vector3"].ReadValueAsObject(), Is.EqualTo(new Vector3(0.3f, 0.4f, 0.5f))); Assert.That(device["Rotation"].ReadValueAsObject(), Is.EqualTo(new Quaternion(0.6f, 0.7f, 0.8f, 0.9f))); Assert.That(device.TryGetChildControl("Custom"), Is.Null); Assert.That(((ButtonControl)device["Last"]).isPressed, Is.True); }
public void Controls_XRAxisControls_AreClampedToOneMagnitude() { runtime.ReportNewInputDevice(TestXRDeviceState.CreateDeviceDescription().ToJson()); InputSystem.Update(); var device = InputSystem.devices[0]; InputSystem.QueueStateEvent(device, new TestXRDeviceState { button = 0, discreteState = 0, axis = -2f, axis2D = -Vector2.one, axis3D = Vector3.zero, rotation = Quaternion.identity, lastElement = 0, }); InputSystem.Update(); Assert.That((device["Axis"] as AxisControl).EvaluateMagnitude(), Is.EqualTo(1f).Within(0.0001f)); Assert.That((device["Vector2/x"] as AxisControl).EvaluateMagnitude(), Is.EqualTo(1f).Within(0.0001f)); Assert.That((device["Vector2/y"] as AxisControl).EvaluateMagnitude(), Is.EqualTo(1f).Within(0.0001f)); }
public void Layouts_AllFeatureTypes_AreRepresentedInTheGeneratedLayout() { runtime.ReportNewInputDevice(TestXRDeviceState.CreateDeviceDescription().ToJson()); InputSystem.Update(); var generatedLayout = InputSystem.LoadLayout("XRInputV1::XRManufacturer::XRDevice"); Assert.That(generatedLayout, Is.Not.Null); Assert.That(generatedLayout.controls.Count, Is.EqualTo(kNumBaseHMDControls + 9)); var binaryControl = generatedLayout["Button"]; Assert.That(binaryControl.name, Is.EqualTo(new InternedString("Button"))); Assert.That(binaryControl.offset, Is.EqualTo(0)); Assert.That(binaryControl.layout, Is.EqualTo(new InternedString("Button"))); Assert.That(binaryControl.usages.Count, Is.EqualTo(1)); Assert.That(binaryControl.usages[0], Is.EqualTo(new InternedString("ButtonUsage"))); var discreteControl = generatedLayout["DiscreteState"]; Assert.That(discreteControl.name, Is.EqualTo(new InternedString("DiscreteState"))); Assert.That(discreteControl.offset, Is.EqualTo(4)); Assert.That(discreteControl.layout, Is.EqualTo(new InternedString("Integer"))); Assert.That(discreteControl.usages.Count, Is.EqualTo(1)); Assert.That(discreteControl.usages[0], Is.EqualTo(new InternedString("DiscreteStateUsage"))); var axisControl = generatedLayout["Axis"]; Assert.That(axisControl.name, Is.EqualTo(new InternedString("Axis"))); Assert.That(axisControl.offset, Is.EqualTo(8)); Assert.That(axisControl.layout, Is.EqualTo(new InternedString("Analog"))); Assert.That(axisControl.usages.Count, Is.EqualTo(1)); Assert.That(axisControl.usages[0], Is.EqualTo(new InternedString("Axis1DUsage"))); var vec2Control = generatedLayout["Vector2"]; Assert.That(vec2Control.name, Is.EqualTo(new InternedString("Vector2"))); Assert.That(vec2Control.offset, Is.EqualTo(12)); Assert.That(vec2Control.layout, Is.EqualTo(new InternedString("Vector2"))); Assert.That(vec2Control.usages.Count, Is.EqualTo(1)); Assert.That(vec2Control.usages[0], Is.EqualTo(new InternedString("Axis2DUsage"))); var vec3Control = generatedLayout["Vector3"]; Assert.That(vec3Control.name, Is.EqualTo(new InternedString("Vector3"))); Assert.That(vec3Control.offset, Is.EqualTo(20)); Assert.That(vec3Control.layout, Is.EqualTo(new InternedString("Vector3"))); Assert.That(vec3Control.usages.Count, Is.EqualTo(1)); Assert.That(vec3Control.usages[0], Is.EqualTo(new InternedString("Axis3DUsage"))); var rotationControl = generatedLayout["Rotation"]; Assert.That(rotationControl.name, Is.EqualTo(new InternedString("Rotation"))); Assert.That(rotationControl.offset, Is.EqualTo(32)); Assert.That(rotationControl.layout, Is.EqualTo(new InternedString("Quaternion"))); Assert.That(rotationControl.usages.Count, Is.EqualTo(1)); Assert.That(rotationControl.usages[0], Is.EqualTo(new InternedString("RotationUsage"))); // Custom element is skipped, but occupies 256 bytes var lastControl = generatedLayout["Last"]; Assert.That(lastControl.name, Is.EqualTo(new InternedString("Last"))); Assert.That(lastControl.offset, Is.EqualTo(304)); Assert.That(lastControl.layout, Is.EqualTo(new InternedString("Button"))); Assert.That(lastControl.usages.Count, Is.EqualTo(2)); Assert.That(lastControl.usages[0], Is.EqualTo(new InternedString("LastElementUsage"))); Assert.That(lastControl.usages[1], Is.EqualTo(new InternedString("SecondUsage"))); }