public void Remote_RemovingDevice_WillRemoveItFromRemotes() { var gamepad = InputSystem.AddDevice <Gamepad>(); using (var remote = new FakeRemote()) { Assert.That(remote.manager.devices.Count, Is.EqualTo(1)); InputSystem.RemoveDevice(gamepad); Assert.That(remote.manager.devices.Count, Is.Zero); } }
public void Remote_ExistingDevicesAreSentToRemotes_WhenStartingToSend() { InputSystem.AddDevice <Gamepad>(); InputSystem.AddDevice <Keyboard>(); using (var remote = new FakeRemote()) { Assert.That(remote.manager.devices, Has.Count.EqualTo(2)); Assert.That(remote.manager.devices, Has.Exactly(1).TypeOf <Gamepad>().With.Property("layout").EqualTo("Gamepad")); Assert.That(remote.manager.devices, Has.Exactly(1).TypeOf <Keyboard>().With.Property("layout").EqualTo("Keyboard")); Assert.That(remote.manager.devices, Has.All.With.Property("remote").True); } }
public void Remote_SettingUsageOnDevice_WillSendChangeToRemotes() { var gamepad = InputSystem.AddDevice("Gamepad"); using (var remote = new FakeRemote()) { var remoteGamepad = (Gamepad)remote.manager.devices[0]; Assert.That(remoteGamepad.usages, Has.Count.Zero); InputSystem.SetUsage(gamepad, CommonUsages.LeftHand); Assert.That(remoteGamepad.usages, Has.Exactly(1).EqualTo(CommonUsages.LeftHand)); } }
public void Remote_DevicesWithExistingUsage_WillUpdateSendToRemote() { var gamepad = InputSystem.AddDevice <Gamepad>(); InputSystem.SetDeviceUsage(gamepad, CommonUsages.LeftHand); InputSystem.AddDeviceUsage(gamepad, CommonUsages.RightHand); using (var remote = new FakeRemote()) { var remoteGamepad = (Gamepad)remote.remoteManager.devices[0]; Assert.That(remoteGamepad.usages, Has.Count.EqualTo(2)); Assert.That(remoteGamepad.usages, Has.Exactly(1).EqualTo(CommonUsages.LeftHand)); Assert.That(remoteGamepad.usages, Has.Exactly(1).EqualTo(CommonUsages.RightHand)); } }
public void Remote_AddingNewControlLayout_WillSendLayoutToRemotes() { using (var remote = new FakeRemote()) { InputSystem.RegisterLayout(@"{ ""name"" : ""MyGamepad"", ""extend"" : ""Gamepad"" }"); InputSystem.AddDevice("MyGamepad"); var layouts = remote.manager.ListControlLayouts().ToList(); Assert.That(layouts, Has.Exactly(1).EqualTo("MyGamepad")); Assert.That(remote.manager.devices, Has.Exactly(1).With.Property("layout").EqualTo("MyGamepad").And.TypeOf <Gamepad>()); Assert.That(remote.manager.TryLoadControlLayout(new InternedString("MyGamepad")), Is.Not.Null.And.With.Property("baseLayouts").EquivalentTo(new[] { new InternedString("Gamepad") })); } }
public void Remote_EventsAreSentToRemotes() { var gamepad = InputSystem.AddDevice <Gamepad>(); using (var remote = new FakeRemote()) { Set(gamepad.leftTrigger, 0.5f, time: 0.1234); // Make second input manager process the events it got. // NOTE: This will also switch the system to the state buffers from the second input manager. remote.remoteManager.Update(); var remoteGamepad = (Gamepad)remote.remoteManager.devices[0]; Assert.That(remoteGamepad.leftTrigger.ReadValue(), Is.EqualTo(0.5).Within(0.0000001)); Assert.That(remoteGamepad.lastUpdateTime, Is.EqualTo(0.1234).Within(0.000001)); } }
public void Remote_OnlyGeneratedLayoutsAreSentToRemotes() { // Register "normal" layout. InputSystem.RegisterLayout(@" { ""name"" : ""TestLayout_NOT_GENERATED"", ""extend"" : ""Gamepad"", ""controls"" : [ { ""name"" : ""newButton"", ""layout"" : ""Button"" } ] } "); // Register generated layout. InputSystem.RegisterLayoutBuilder(() => { var builder = new InputControlLayout.Builder() .WithType <MyDevice>(); builder.AddControl("MyControl") .WithLayout("Button"); return(builder.Build()); }, "TestLayout_GENERATED"); using (var remote = new FakeRemote()) { Assert.That(remote.remoteManager.ListControlLayouts(), Has.None.EqualTo("TestLayout_NOT_GENERATED")); // Not remoted. Assert.That(remote.remoteManager.ListControlLayouts(), Has.Exactly(1).EqualTo("TestLayout_GENERATED")); // Remoted. // Make sure we do not remote "normal" layouts. Assert.That(remote.remoteManager.ListControlLayouts(), Has.None.Matches((string s) => s.StartsWith("Remote::") && s.EndsWith("Gamepad"))); // Add a device using the layout builder. InputSystem.AddDevice("TestLayout_GENERATED"); Assert.That(remote.remoteManager.devices, Has.Count.EqualTo(1)); Assert.That(remote.remoteManager.devices[0].layout, Is.EqualTo("TestLayout_GENERATED")); Assert.That(remote.remoteManager.devices[0].remote, Is.True); // Register another "normal" layout. InputSystem.RegisterLayout(@" { ""name"" : ""OtherLayout_NOT_GENERATED"", ""extend"" : ""Gamepad"", ""controls"" : [ { ""name"" : ""newButton"", ""layout"" : ""Button"" } ] } "); Assert.That(remote.remoteManager.ListControlLayouts(), Has.None.EqualTo("OtherLayout_NOT_GENERATED")); // Not remoted. // Register another generated layout. InputSystem.RegisterLayoutBuilder(() => { var builder = new InputControlLayout.Builder() .WithType <MyDevice>(); builder.AddControl("MyControl") .WithLayout("Button"); return(builder.Build()); }, "OtherLayout_GENERATED"); Assert.That(remote.remoteManager.ListControlLayouts(), Has.Exactly(1).EqualTo("OtherLayout_GENERATED")); // Remoted. // Remove the two layouts we just added. Shouldn't make a difference // on the remote. InputSystem.RemoveLayout("OtherLayout_GENERATED"); InputSystem.RemoveLayout("OtherLayout_NOT_GENERATED"); Assert.That(remote.remoteManager.ListControlLayouts(), Has.None.EqualTo("OtherLayout_NOT_GENERATED")); // Not remoted. Assert.That(remote.remoteManager.ListControlLayouts(), Has.Exactly(1).EqualTo("OtherLayout_GENERATED")); // Remoted. } }