public static void Process(InputRemoting receiver, Message msg) { var senderIndex = receiver.FindOrCreateSenderRecord(msg.participantId); var data = DeserializeData <Data>(msg.data); // Make sure we haven't already seen the device. var devices = receiver.m_Senders[senderIndex].devices; if (devices != null) { foreach (var entry in devices) { if (entry.remoteId == data.deviceId) { Debug.LogError(string.Format( "Already received device with id {0} (layout '{1}', description '{3}) from remote {2}", data.deviceId, data.layout, msg.participantId, data.description)); return; } } } // Create device. var layout = string.Format("{0}::{1}", receiver.m_Senders[senderIndex].layoutNamespace, data.layout); InputDevice device; try { device = receiver.m_LocalManager.AddDevice(layout, string.Format("Remote{0}::{1}", msg.participantId, data.name)); } catch (Exception exception) { Debug.Log( string.Format( "Could not create remote device '{0}' with layout '{1}' locally (exception: {2})", data.description, data.layout, exception)); return; } device.m_Description = data.description; device.m_Flags |= InputDevice.Flags.Remote; // Remember it. var record = new RemoteInputDevice { remoteId = data.deviceId, localId = device.id, description = data.description, layoutName = layout }; ArrayHelpers.Append(ref receiver.m_Senders[senderIndex].devices, record); }
public static void Process(InputRemoting receiver, Message msg) { var senderIndex = receiver.FindOrCreateSenderRecord(msg.participantId); var data = DeserializeData <Data>(msg.data); // Make sure we haven't already seen the device. var devices = receiver.m_Senders[senderIndex].devices; if (devices != null) { foreach (var entry in devices) { if (entry.remoteId == data.deviceId) { Debug.LogError(string.Format( "Already received device with id {0} (layout '{1}', description '{3}) from remote {2}", data.deviceId, data.layout, msg.participantId, data.description)); return; } } } // Create device. InputDevice device; try { ////REVIEW: this gives remote devices names the same way that local devices receive them; should we make remote status visible in the name? device = receiver.m_LocalManager.AddDevice(data.layout); device.m_ParticipantId = msg.participantId; } catch (Exception exception) { Debug.LogError( $"Could not create remote device '{data.description}' with layout '{data.layout}' locally (exception: {exception})"); return; } device.m_Description = data.description; device.m_DeviceFlags |= InputDevice.DeviceFlags.Remote; // Remember it. var record = new RemoteInputDevice { remoteId = data.deviceId, localId = device.id, description = data.description, layoutName = data.layout }; ArrayHelpers.Append(ref receiver.m_Senders[senderIndex].devices, record); }
public static void Process(InputRemoting receiver, Message msg) { var senderIndex = receiver.FindOrCreateSenderRecord(msg.participantId); var data = DeserializeData <Data>(msg.data); // Create device. var template = string.Format("{0}::{1}", receiver.m_Senders[senderIndex].templateNamespace, data.template); InputDevice device; try { device = receiver.m_LocalManager.AddDevice(template, string.Format("Remote{0}::{1}", msg.participantId, data.name)); } catch (Exception exception) { Debug.Log( string.Format( "Could not create remote device '{0}' with template '{1}' locally (exception: {2})", data.description, data.template, exception)); return; } device.m_Description = data.description; device.m_Flags |= InputDevice.Flags.Remote; // Remember it. var record = new RemoteInputDevice { remoteId = data.deviceId, localId = device.id, description = data.description, templateName = template }; ArrayHelpers.Append(ref receiver.m_Senders[senderIndex].devices, record); }