private void SendLayoutChange(string layout, InputControlLayoutChange change) { if (m_Subscribers == null) { return; } Message msg; switch (change) { case InputControlLayoutChange.Added: case InputControlLayoutChange.Replaced: var message = NewLayoutMsg.Create(this, layout); if (message == null) { return; } msg = message.Value; break; case InputControlLayoutChange.Removed: msg = RemoveLayoutMsg.Create(this, layout); break; default: return; } Send(msg); }
static void OnLayoutChange(string layout, InputControlLayoutChange change) { if (change == InputControlLayoutChange.Added) { if (!layout.StartsWith(k_LayoutOverridePrefix) && InputSystem.IsFirstLayoutBasedOnSecond(layout, k_BaseLayoutName)) { var layoutName = $"{k_LayoutOverridePrefix}{layout}"; // This format is presuming a correct layoutOverride string that uses the right format tags. var layoutJson = string.Format(k_LayoutOverride, layoutName, layout); InputSystem.RegisterLayoutOverride(layoutJson, layoutName); } } }
public IEnumerator AddDevice() { var sender = new Sender(); var senderInput = new InputRemoting(sender); var senderSubscriberDisposer = senderInput.Subscribe(new Observer(_channel1)); var receiver = new Receiver(_channel2); var receiverInput = new InputRemoting(receiver); var receiverSubscriberDisposer = receiverInput.Subscribe(receiverInput); InputDevice device = null; InputDeviceChange change = default; receiver.onDeviceChange += (_device, _change) => { device = _device; change = _change; }; string layoutName = null; InputControlLayoutChange layoutChange = default; receiver.onLayoutChange += (_name, _change) => { layoutName = _name; layoutChange = _change; }; receiverInput.StartSending(); senderInput.StartSending(); yield return(new WaitUntil(() => device != null)); yield return(new WaitUntil(() => layoutName != null)); Assert.That(device, Is.Not.Null); Assert.That(change, Is.EqualTo(InputDeviceChange.Added)); Assert.That(layoutName, Is.Not.Null); Assert.That(layoutChange, Is.EqualTo(InputControlLayoutChange.Added)); Assert.That(receiver.remoteLayouts, Is.Not.Empty); Assert.That(receiver.remoteDevices, Is.Not.Empty); Assert.That(receiver.remoteDevices, Has.All.Matches <InputDevice>(d => d.remote)); senderInput.StopSending(); receiverInput.StopSending(); senderSubscriberDisposer.Dispose(); receiverSubscriberDisposer.Dispose(); sender.Dispose(); receiver.Dispose(); }
private void SendLayoutChange(string layout, InputControlLayoutChange change) { if (m_Subscribers == null) { return; } // Don't mirror remoted layouts to other remotes. if (layout.StartsWith(kRemoteLayoutNamespacePrefix)) { return; } Message msg; switch (change) { case InputControlLayoutChange.Added: case InputControlLayoutChange.Replaced: var message = NewLayoutMsg.Create(this, layout); if (message == null) { return; } msg = message.Value; break; case InputControlLayoutChange.Removed: msg = RemoveLayoutMsg.Create(this, layout); break; default: return; } Send(msg); }
private void OnLayoutChange(string name, InputControlLayoutChange change) { // Update tree if layout setup has changed. Refresh(); }
private void OnLayoutChange(string name, InputControlLayoutChange change) { onLayoutChange?.Invoke(name, change); }