109 lines
3.3 KiB
C#
109 lines
3.3 KiB
C#
using UnityEngine;
|
|
using System;
|
|
using UnityEngine.Android;
|
|
|
|
namespace Unity.XR.Oculus
|
|
{
|
|
public static partial class Utils
|
|
{
|
|
public struct EnvironmentDepthFrameDesc
|
|
{
|
|
public bool isValid;
|
|
public double createTime;
|
|
public double predictedDisplayTime;
|
|
public int swapchainIndex;
|
|
public Vector3 createPoseLocation;
|
|
public Vector4 createPoseRotation;
|
|
public float fovLeftAngle;
|
|
public float fovRightAngle;
|
|
public float fovTopAngle;
|
|
public float fovDownAngle;
|
|
public float nearZ;
|
|
public float farZ;
|
|
public float minDepth;
|
|
public float maxDepth;
|
|
}
|
|
|
|
public struct EnvironmentDepthCreateParams
|
|
{
|
|
public bool removeHands;
|
|
}
|
|
|
|
private static EnvironmentDepthCreateParams s_EnvironmentDepthCreateParams;
|
|
|
|
static void ScenePermissionGrantedCallback(string permissionName)
|
|
{
|
|
if (permissionName == "com.oculus.permission.USE_SCENE")
|
|
{
|
|
NativeMethods.SetupEnvironmentDepth(s_EnvironmentDepthCreateParams);
|
|
}
|
|
}
|
|
|
|
public static bool IsScenePermissionGranted()
|
|
{
|
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
|
return Permission.HasUserAuthorizedPermission("com.oculus.permission.USE_SCENE");
|
|
#else
|
|
return true;
|
|
#endif
|
|
}
|
|
|
|
public static void SetupEnvironmentDepth(EnvironmentDepthCreateParams createParams)
|
|
{
|
|
if (IsScenePermissionGranted())
|
|
{
|
|
NativeMethods.SetupEnvironmentDepth(createParams);
|
|
}
|
|
else
|
|
{
|
|
s_EnvironmentDepthCreateParams = createParams;
|
|
var permissionCallbacks = new PermissionCallbacks();
|
|
permissionCallbacks.PermissionGranted += ScenePermissionGrantedCallback;
|
|
Permission.RequestUserPermission("com.oculus.permission.USE_SCENE", permissionCallbacks);
|
|
}
|
|
}
|
|
|
|
public static void SetEnvironmentDepthRendering(bool isEnabled)
|
|
{
|
|
if (IsScenePermissionGranted())
|
|
{
|
|
NativeMethods.SetEnvironmentDepthRendering(isEnabled);
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("Failed to set environment depth rendering because permission was not given.");
|
|
}
|
|
}
|
|
|
|
public static void ShutdownEnvironmentDepth()
|
|
{
|
|
NativeMethods.ShutdownEnvironmentDepth();
|
|
}
|
|
|
|
public static bool GetEnvironmentDepthTextureId(ref uint id)
|
|
{
|
|
return NativeMethods.GetEnvironmentDepthTextureId(ref id);
|
|
}
|
|
|
|
public static EnvironmentDepthFrameDesc GetEnvironmentDepthFrameDesc(int eye)
|
|
{
|
|
return NativeMethods.GetEnvironmentDepthFrameDesc(eye);
|
|
}
|
|
|
|
public static bool SetEnvironmentDepthHandRemoval(bool isEnabled)
|
|
{
|
|
return NativeMethods.SetEnvironmentDepthHandRemoval(isEnabled);
|
|
}
|
|
|
|
public static bool GetEnvironmentDepthSupported()
|
|
{
|
|
return NativeMethods.GetEnvironmentDepthSupported();
|
|
}
|
|
|
|
public static bool GetEnvironmentDepthHandRemovalSupported()
|
|
{
|
|
return NativeMethods.GetEnvironmentDepthHandRemovalSupported();
|
|
}
|
|
}
|
|
}
|