/// <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 }
/// <summary> /// ValueType check if two ARCoreExtensionsCameraConfigFilter objects are equal. /// </summary> /// <param name="other">The other ARCoreExtensionsCameraConfigFilter.</param> /// <returns>True if the two ARCoreExtensionsCameraConfigFilter objects are /// value-type equal, otherwise false.</returns> public override bool Equals(object other) { ARCoreExtensionsCameraConfigFilter otherFilter = other as ARCoreExtensionsCameraConfigFilter; if (otherFilter == null) { return(false); } if (TargetCameraFramerate != otherFilter.TargetCameraFramerate || StereoCameraUsage != otherFilter.StereoCameraUsage || DepthSensorUsage != otherFilter.DepthSensorUsage) { return(false); } return(true); }
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); } } }
/// <summary> /// ValueType copy from another ARCoreExtensionsCameraConfigFilter object into this one. /// </summary> /// <param name="otherFilter">The ARCoreExtensionsCameraConfigFilter to copy from.</param> public void CopyFrom(ARCoreExtensionsCameraConfigFilter otherFilter) { TargetCameraFramerate = otherFilter.TargetCameraFramerate; DepthSensorUsage = otherFilter.DepthSensorUsage; StereoCameraUsage = otherFilter.StereoCameraUsage; }