private void AssignTrackedDevice(TrackedDeviceState deviceState, InputDevice?possibleInputDevice, DeviceUse use, TrackedDeviceRole deviceRole) { if (possibleInputDevice.HasValue && !deviceState.found) { InputDevice inputDevice = possibleInputDevice.Value; Plugin.logger.Info($"Using device \"{inputDevice.name}\" as {use}"); deviceState.name = inputDevice.name; deviceState.serialNumber = inputDevice.serialNumber; deviceState.found = true; deviceState.role = deviceRole; deviceAdded?.Invoke(deviceState, use); } if (!possibleInputDevice.HasValue && deviceState.found) { Plugin.logger.Info($"Lost device \"{deviceState.name}\" that was used as {use}"); deviceState.name = null; deviceState.serialNumber = null; deviceState.found = false; deviceState.role = TrackedDeviceRole.Unknown; deviceRemoved?.Invoke(deviceState, use); } }
private void AssignTrackedDevice(TrackedDeviceState deviceState, InputDevice?possibleInputDevice, DeviceUse use, TrackedDeviceRole deviceRole) { if ((!possibleInputDevice.HasValue && deviceState.found) || (possibleInputDevice.HasValue && deviceState.found && possibleInputDevice.Value.name != deviceState.name)) { _logger.Info($"Removing device '{deviceState.name}' that was used as {use}"); deviceState.name = null; deviceState.serialNumber = null; deviceState.found = false; deviceState.tracked = false; deviceState.role = TrackedDeviceRole.Unknown; deviceRemoved?.Invoke(deviceState, use); } if (possibleInputDevice.HasValue && (!deviceState.found || possibleInputDevice.Value.name != deviceState.name)) { InputDevice inputDevice = possibleInputDevice.Value; _logger.Info($"Using device '{inputDevice.name}' as {use}"); deviceState.name = inputDevice.name; deviceState.serialNumber = inputDevice.serialNumber; deviceState.found = true; deviceState.role = deviceRole; deviceAdded?.Invoke(deviceState, use); } }