/// <summary> /// Additively updates the final device config with <see cref="WearableDeviceConfig"/> <paramref name="config"/> /// </summary> /// <param name="config"></param> private void UpdateFinalDeviceConfig(WearableDeviceConfig config) { // Set all sensor state and update intervals for (var i = 0; i < WearableConstants.SensorIds.Length; i++) { var sensorId = WearableConstants.SensorIds[i]; var finalSensorConfig = _finalWearableDeviceConfig.GetSensorConfig(sensorId); var reqSensorConfig = config.GetSensorConfig(sensorId); finalSensorConfig.isEnabled |= reqSensorConfig.isEnabled; } // Set all gesture state. for (var i = 0; i < WearableConstants.GestureIds.Length; i++) { if (WearableConstants.GestureIds[i] == GestureId.None) { continue; } var finalGestureConfig = _finalWearableDeviceConfig.GetGestureConfig(WearableConstants.GestureIds[i]); var reqGestureConfig = config.GetGestureConfig(WearableConstants.GestureIds[i]); finalGestureConfig.isEnabled |= reqGestureConfig.isEnabled; } if (config.HasAnySensorsEnabled()) { if (_finalWearableDeviceConfig.updateInterval.IsSlowerThan(config.updateInterval)) { _finalWearableDeviceConfig.updateInterval = config.updateInterval; } } // If the config rotation sensor is enabled and the final config has a lower priority rotation // source, override it if (config.rotation.isEnabled && _finalWearableDeviceConfig.rotationSource.IsLowerPriority(config.rotationSource)) { _finalWearableDeviceConfig.rotationSource = config.rotationSource; } }