//changing config based on player prefs
 public void ChangeConfig()
 {
     if (cameraManager.descriptor.supportsCameraConfigurations)
     {
         using (var configs = cameraManager.GetConfigurations(Allocator.Temp))
         {
             for (int i = 0; i < configs.Length; i++)
             {
                 if (isPreferredConfig(configs[i]))
                 {
                     try
                     {
                         cameraManager.currentConfiguration = configs[i];
                         activeXRCameraConfig = configs[i];
                         break;
                     }
                     catch (Exception e)
                     {
                         Debug.LogError("setting cameraManager.currentConfiguration failed with exception: " + e);
                     }
                 }
             }
         }
     }
 }
 /// <summary>
 /// Gets the stereo camera usage for this camera config.
 /// </summary>
 /// <param name="cameraConfig">An XRCameraConfiguration instance.</param>
 /// <returns>Returns the stereo camera usage type.</returns>
 public static CameraConfigStereoCameraUsage GetStereoCameraUsage(
     this XRCameraConfiguration cameraConfig)
 {
     return(CameraConfigApi.GetStereoCameraUsage(
                ARCoreExtensions._instance.currentARCoreSessionHandle,
                cameraConfig.nativeConfigurationHandle));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Gets the camera facing direction for this camera config.
 /// </summary>
 /// <param name="cameraConfig">An XRCameraConfiguration instance.
 /// </param>
 /// <returns>Returns the camera facing direction.</returns>
 public static CameraConfigFacingDirection GetFacingDirection(
     this XRCameraConfiguration cameraConfig)
 {
     return(CameraConfigApi.GetFacingDirection(
                ARCoreExtensions._instance.currentARCoreSessionHandle,
                cameraConfig.nativeConfigurationHandle));
 }
Ejemplo n.º 4
0
    protected IEnumerator InitCameraConf()
    {
        //https://forum.unity.com/threads/ar-foundation-camera-resolution.866743/
        yield return(new WaitForSeconds(2)); //Dirty way : Wait for 2s to let time to camera to be enabled

        if (!cameraConfInited)
        {
            NativeArray <XRCameraConfiguration> confs = arCameraManager.GetConfigurations(Allocator.Temp);

            if (confs.Length == 0)
            {
                Debug.LogError("No Camera config found - Are you using an Android device?");
            }
            else
            {
                XRCameraConfiguration bestConf = confs[0];
                int bestPixels = bestConf.width * bestConf.height;

                foreach (XRCameraConfiguration conf in confs)   //1 loop useless
                {
                    int curPixels = conf.width * conf.height;
                    if (curPixels > bestPixels)
                    {
                        bestPixels = curPixels;
                        bestConf   = conf;
                    }
                    Debug.Log("Conf: " + conf);
                }

                arCameraManager.subsystem.currentConfiguration = bestConf;
                cameraConfInited = true;
                Debug.Log("Init Best conf camera");
            }
        }
    }
Ejemplo n.º 5
0
 /// <summary>
 /// Gets the depth sensor usage for this camera config.
 /// </summary>
 /// <param name="cameraConfig">An XRCameraConfiguration instance.
 /// </param>
 /// <returns>Returns the depth sensor usage type.</returns>
 public static CameraConfigDepthSensorUsages GetDepthSensorUsages(
     this XRCameraConfiguration cameraConfig)
 {
     return(CameraConfigApi.GetDepthSensorUsages(
                ARCoreExtensions.Instance.CurrentARCoreSessionHandle,
                cameraConfig.nativeConfigurationHandle));
 }
        //checks config and changes it if necessary
        private void FrameReceived(ARCameraFrameEventArgs args)
        {
            if (!managerReceivedFrame)
            {
                managerReceivedFrame = true;

                if (cameraManager.descriptor.supportsCameraConfigurations)
                {
                    //gets current config
                    var cameraConfiguration = cameraManager.currentConfiguration;
                    Assert.IsTrue(cameraConfiguration.HasValue);
                    Debug.Log($"Current Config: {cameraConfiguration}");
                    //assigning the current config
                    activeXRCameraConfig = (XRCameraConfiguration)cameraConfiguration;

                    //referencing available configs when frame received in user prefs dict
                    var availableConfigs = GetAvailableConfiguartionStrings();
                    PlayerPrefsHandler.Instance.ReferenceAvailableXRCameraConfigs(availableConfigs);

                    //keep current config if it's the previously set one
                    if (PlayerPrefsHandler.Instance.GetInt(cameraConfiguration.ToString(), -1) == 1)
                    {
                        Debug.Log("Current config has been the previously stored one");
                        PlayerPrefsHandler.Instance.SetDefaultXRCameraConfig(cameraConfiguration.ToString());
                        return;
                    }

                    //if the setting is not the stored one
                    bool storedValue = false;
                    //check if there is a stored setting and if change the xr camera settings
                    for (int i = 0; i < availableConfigs.Count; i++)                     // (string config in availableConfigs)
                    {
                        if (PlayerPrefsHandler.Instance.GetInt(availableConfigs[i], -1) == 1)
                        {
                            Debug.Log($"Changing config to {availableConfigs[i]}");
                            storedValue = true;
                            PlayerPrefsHandler.Instance.SetDefaultXRCameraConfig(availableConfigs[i]);
                            ChangeConfig();
                        }
                    }

                    //storing the default setting
                    if (storedValue == false)
                    {
                        if (availableConfigs.Count <= 1)
                        {
                            Debug.Log("there is just one config, not resetting");
                            return;
                        }

                        Debug.Log("No previous config has been stored");
                        PlayerPrefsHandler.Instance.SetDefaultXRCameraConfig(cameraConfiguration.ToString());
                    }
                }
            }
        }
        //preferd config stored in player prefs
        static bool isPreferredConfig(XRCameraConfiguration config)
        {
            bool m_bool = false;

            for (int i = 0; i < PlayerPrefsHandler.Instance.CameraConfigList.Count; i++)
            {
                if (PlayerPrefsHandler.Instance.GetInt(PlayerPrefsHandler.Instance.CameraConfigList[i], -1) == 1)
                {
                    if (PlayerPrefsHandler.Instance.CameraConfigList[i] == config.ToString())
                    {
                        m_bool = true;
                    }
                }
            }
            return(m_bool);
        }
            /// <summary>
            /// Queries the supported camera configurations.
            /// </summary>
            /// <param name="defaultCameraConfiguration">A default value used to fill the returned array before copying
            /// in real values. This ensures future additions to this struct are backwards compatible.</param>
            /// <param name="allocator">The allocation strategy to use for the returned data.</param>
            /// <returns>
            /// The supported camera configurations.
            /// </returns>
            public override NativeArray <XRCameraConfiguration> GetConfigurations(XRCameraConfiguration defaultCameraConfiguration,
                                                                                  Allocator allocator)
            {
                int    configurationsCount;
                int    configurationSize;
                IntPtr configurations = NativeApi.UnityARCore_Camera_AcquireConfigurations(out configurationsCount,
                                                                                           out configurationSize);

                try
                {
                    unsafe
                    {
                        return(NativeCopyUtility.PtrToNativeArrayWithDefault(defaultCameraConfiguration,
                                                                             (void *)configurations,
                                                                             configurationSize, configurationsCount,
                                                                             allocator));
                    }
                }
                finally
                {
                    NativeApi.UnityARCore_Camera_ReleaseConfigurations(configurations);
                }
            }
 public static CameraConfigurationResult UnityARCore_Camera_TrySetCurrentConfiguration(XRCameraConfiguration cameraConfiguration)
 {
     return(CameraConfigurationResult.Success);
 }
 public static bool UnityARCore_Camera_TryGetCurrentConfiguration(out XRCameraConfiguration cameraConfiguration)
 {
     cameraConfiguration = default(XRCameraConfiguration);
     return(false);
 }
 public static extern CameraConfigurationResult UnityARCore_Camera_TrySetCurrentConfiguration(XRCameraConfiguration cameraConfiguration);
 public static extern bool UnityARCore_Camera_TryGetCurrentConfiguration(out XRCameraConfiguration cameraConfiguration);
Ejemplo n.º 13
0
 /// <summary>
 /// Gets <paramref name="cameraConfiguration"/> as an ARCore <see cref="ArCameraConfig"/>.
 /// </summary>
 /// <remarks>
 /// **Note:** Do not <see cref="ArCameraConfig.Dispose"/> the returned <see cref="ArCameraConfig"/>.
 /// </remarks>
 /// <param name="cameraConfiguration">The
 ///     [XRCameraConfiguration](xref:UnityEngine.XR.ARSubsystems.XRCameraConfiguration) being extended.</param>
 /// <returns>Returns the ARCore-specific representation of <paramref name="cameraConfiguration"/>.</returns>
 public static ArCameraConfig AsArCameraConfig(this XRCameraConfiguration cameraConfiguration) =>
 ArCameraConfig.FromIntPtr(cameraConfiguration.nativeConfigurationHandle);
 /// <summary>
 /// Gets the target camera capture frame rate range for this camera config.
 /// </summary>
 /// <param name="cameraConfig">An XRCameraConfiguration instance.
 /// </param>
 /// <returns>Returns the range from minimal target FPS to maximal target FPS.</returns>
 public static Vector2Int GetFPSRange(this XRCameraConfiguration cameraConfig)
 {
     return(CameraConfigApi.GetFPSRange(
                ARCoreExtensions._instance.currentARCoreSessionHandle,
                cameraConfig.nativeConfigurationHandle));
 }
Ejemplo n.º 15
0
 /// <summary>
 /// Gets the dimensions of the GPU-accessible external texture for this camera config.
 /// </summary>
 /// <param name="cameraConfig">An XRCameraConfiguration instance.
 /// </param>
 /// <returns>Returns the GPU texture dimensions.</returns>
 public static Vector2Int GetTextureDimensions(this XRCameraConfiguration cameraConfig)
 {
     return(CameraConfigApi.GetTextureDimensions(
                ARCoreExtensions.Instance.CurrentARCoreSessionHandle,
                cameraConfig.nativeConfigurationHandle));
 }