/// <summary> /// Unity's Update method. /// </summary> public void Update() { #if UNITY_ANDROID if (_requiredPermissionNames.Count > 0) { RequestPermission(); } if (Session.SessionHandle() == IntPtr.Zero) { return; } // Update camera config filter if (CameraConfigFilter != null && !CameraConfigFilter.Equals(_cachedFilter)) { _cachedFilter = ScriptableObject.CreateInstance <ARCoreExtensionsCameraConfigFilter>(); _cachedFilter.CopyFrom(CameraConfigFilter); // Extensions will attempt to select the camera config based on the filter // if it's in use, otherwise, relies on AR Foundation's default behavior. SelectCameraConfig(); } // Update session configuration. if (ARCoreExtensionsConfig != null && !ARCoreExtensionsConfig.Equals(_cachedConfig)) { _cachedConfig = ScriptableObject.CreateInstance <ARCoreExtensionsConfig>(); _cachedConfig.CopyFrom(ARCoreExtensionsConfig); List <IDependentModule> modules = DependentModulesManager.GetModules(); foreach (var module in modules) { string[] permissions = module.GetRuntimePermissions(_cachedConfig); foreach (var permission in permissions) { if (!AndroidPermissionsManager.IsPermissionGranted(permission)) { _requiredPermissionNames.Add(permission); } } } if (_requiredPermissionNames.Count > 0) { RequestPermission(); return; } if (!Application.isEditor) { _arCoreSubsystem.SetConfigurationDirty(); } } #endif }
/// <summary> /// Unity's Update method. /// </summary> public void Update() { #if UNITY_ANDROID if (_requiredPermissionNames.Count > 0) { RequestPermission(); } if (Session.SessionHandle() == IntPtr.Zero) { return; } // Update camera config filter if (CameraConfigFilter != null && !CameraConfigFilter.Equals(_cachedFilter)) { _cachedFilter = ScriptableObject.CreateInstance <ARCoreExtensionsCameraConfigFilter>(); _cachedFilter.CopyFrom(CameraConfigFilter); // Extensions will attempt to select the camera config based on the filter // if it's in use, otherwise, relies on AR Foundation's default behavior. SelectCameraConfig(); } // Update session configuration. if (ARCoreExtensionsConfig != null && !ARCoreExtensionsConfig.Equals(_cachedConfig)) { _cachedConfig = ScriptableObject.CreateInstance <ARCoreExtensionsConfig>(); _cachedConfig.CopyFrom(ARCoreExtensionsConfig); if (_cachedConfig.CloudAnchorMode == CloudAnchorMode.EnabledWithEarthLocalization && !AndroidPermissionsManager.IsPermissionGranted(_androidLocationPermissionName)) { _requiredPermissionNames.Add(_androidLocationPermissionName); } if (_requiredPermissionNames.Count > 0) { RequestPermission(); return; } _arCoreSubsystem.SetConfigurationDirty(); } #endif }
private void BeforeGetCameraConfiguration( ARCoreBeforeGetCameraConfigurationEventArgs eventArgs) { if (CameraConfigFilter == null) { return; } if (eventArgs.session.AsIntPtr() != IntPtr.Zero && eventArgs.filter.AsIntPtr() != IntPtr.Zero) { CameraConfigFilterApi.UpdateFilter( eventArgs.session.AsIntPtr(), eventArgs.filter.AsIntPtr(), CameraConfigFilter); // Update the filter cache to avoid overwriting user's selection in case the // GetConfiguration() is called by the user instead of the SelectCameraConfig(). if (!CameraConfigFilter.Equals(_cachedFilter)) { _cachedFilter = ScriptableObject.CreateInstance <ARCoreExtensionsCameraConfigFilter>(); _cachedFilter.CopyFrom(CameraConfigFilter); } } }