public void State_CanCustomizeStateLayoutOfDevice() { // Create a custom layout that moves the offsets of some controls around. var jsonLayout = @" { ""name"" : ""CustomGamepad"", ""extend"" : ""Gamepad"", ""format"" : ""CUST"", ""controls"" : [ { ""name"" : ""buttonSouth"", ""offset"" : 800 } ] } "; InputSystem.RegisterLayout(jsonLayout); var setup = new InputDeviceBuilder("CustomGamepad"); Assert.That(setup.GetControl("buttonSouth").stateBlock.byteOffset, Is.EqualTo(800)); var device = (Gamepad)setup.Finish(); Assert.That(device.stateBlock.sizeInBits, Is.EqualTo(801 * 8)); // Button bitfield adds one byte. }
public void State_AppendsControlsWithoutForcedOffsetToEndOfState() { var json = @" { ""name"" : ""MyDevice"", ""controls"" : [ { ""name"" : ""controlWithFixedOffset"", ""layout"" : ""Analog"", ""offset"" : ""10"", ""format"" : ""FLT"" }, { ""name"" : ""controlWithAutomaticOffset"", ""layout"" : ""Button"" } ] } "; InputSystem.RegisterLayout(json); var setup = new InputDeviceBuilder("MyDevice"); Assert.That(setup.GetControl("controlWithAutomaticOffset").stateBlock.byteOffset, Is.EqualTo(14)); var device = setup.Finish(); Assert.That(device.stateBlock.sizeInBits, Is.EqualTo(15 * 8)); }
public void Controls_AskingValueOfControlBeforeDeviceAddedToSystemIsInvalidOperation() { var setup = new InputDeviceBuilder("Gamepad"); var device = (Gamepad)setup.Finish(); Assert.Throws <InvalidOperationException>(() => { device.leftStick.ReadValue(); }); }
public void Controls_ReferToTheirDevices() { var setup = new InputDeviceBuilder("Gamepad"); var leftStick = setup.GetControl("leftStick"); var device = setup.Finish(); Assert.That(leftStick.device, Is.SameAs(device)); }
public void Controls_ReferToTheirParent() { var setup = new InputDeviceBuilder("Gamepad"); var gamepad = (Gamepad)setup.Finish(); Assert.That(gamepad.leftStick.parent, Is.SameAs(gamepad)); Assert.That(gamepad.leftStick.x.parent, Is.SameAs(gamepad.leftStick)); }
public void Controls_DeviceAndControlsRememberTheirLayouts() { var setup = new InputDeviceBuilder("Gamepad"); var gamepad = (Gamepad)setup.Finish(); Assert.That(gamepad.layout, Is.EqualTo("Gamepad")); Assert.That(gamepad.leftStick.layout, Is.EqualTo("Stick")); }
public void Controls_AfterAddingDeviceCanQueryValueOfControls() { var setup = new InputDeviceBuilder("Gamepad"); var device = (Gamepad)setup.Finish(); InputSystem.AddDevice(device); Assert.That(device.leftStick.ReadValue(), Is.EqualTo(default(Vector2))); }
public void State_CanComputeStateLayoutForMultiByteBitfieldWithFixedOffset() { var setup = new InputDeviceBuilder("Keyboard"); var downArrow = setup.GetControl("DownArrow"); var keyboard = setup.Finish(); Assert.That(downArrow.stateBlock.bitOffset, Is.EqualTo((int)Key.DownArrow)); Assert.That(downArrow.stateBlock.byteOffset, Is.EqualTo(0)); Assert.That(keyboard.stateBlock.alignedSizeInBytes, Is.EqualTo(KeyboardState.kSizeInBytes)); }
public void State_CanComputeStateLayoutFromStateStructure() { var setup = new InputDeviceBuilder("Gamepad"); var gamepad = (Gamepad)setup.Finish(); Assert.That(gamepad.stateBlock.sizeInBits, Is.EqualTo(UnsafeUtility.SizeOf <GamepadState>() * 8)); Assert.That(gamepad.leftStick.stateBlock.byteOffset, Is.EqualTo(Marshal.OffsetOf(typeof(GamepadState), "leftStick").ToInt32())); Assert.That(gamepad.dpad.stateBlock.byteOffset, Is.EqualTo(Marshal.OffsetOf(typeof(GamepadState), "buttons").ToInt32())); }
public void State_BeforeAddingDevice_OffsetsInStateLayoutsAreRelativeToRoot() { var setup = new InputDeviceBuilder("Gamepad"); var device = (Gamepad)setup.Finish(); var leftStickOffset = Marshal.OffsetOf(typeof(GamepadState), "leftStick").ToInt32(); var leftStickXOffset = leftStickOffset; var leftStickYOffset = leftStickOffset + 4; Assert.That(device.leftStick.x.stateBlock.byteOffset, Is.EqualTo(leftStickXOffset)); Assert.That(device.leftStick.y.stateBlock.byteOffset, Is.EqualTo(leftStickYOffset)); }
public void State_CanComputeStateLayoutForNestedStateStructures() { InputSystem.RegisterLayout <CustomDevice>(); var setup = new InputDeviceBuilder("CustomDevice"); var axis2 = setup.GetControl("axis2"); setup.Finish(); var nestedOffset = Marshal.OffsetOf(typeof(CustomDeviceState), "nested").ToInt32(); var axis2Offset = nestedOffset + Marshal.OffsetOf(typeof(CustomNestedDeviceState), "axis2").ToInt32(); Assert.That(axis2.stateBlock.byteOffset, Is.EqualTo(axis2Offset)); }
public void Controls_AssignsFullPathToControls() { var setup = new InputDeviceBuilder("Gamepad"); var leftStick = setup.GetControl("leftStick"); Assert.That(leftStick.path, Is.EqualTo("/Gamepad/leftStick")); var device = setup.Finish(); InputSystem.AddDevice(device); Assert.That(leftStick.path, Is.EqualTo("/Gamepad/leftStick")); }
public void State_CanStoreAxisAsShort() { // Make right trigger be represented as just a short and force it to different offset. var jsonLayout = @" { ""name"" : ""CustomGamepad"", ""extend"" : ""Gamepad"", ""controls"" : [ { ""name"" : ""rightTrigger"", ""format"" : ""SHRT"", ""offset"" : 0 } ] } "; InputSystem.RegisterLayout(jsonLayout); var setup = new InputDeviceBuilder("CustomGamepad"); var device = (Gamepad)setup.Finish(); Assert.That(device.rightTrigger.stateBlock.format, Is.EqualTo(InputStateBlock.kTypeShort)); }