Exemplo n.º 1
0
        public static SrdXrResult SetColorSpaceSettings(IntPtr session, ColorSpace colorSpace)
        {
            var unityGamma = 2.2f;
            var settings   = new SrdXrColorManagementSettings(colorSpace == ColorSpace.Gamma, unityGamma);

            return(XRRuntimeAPI.SetColorManagementSettings(session, ref settings));
        }
Exemplo n.º 2
0
        public static void ShowNativeLog()
        {
            var callback = new XRRuntimeAPI.DebugLogDelegate((message, log_levels) =>
            {
                switch (log_levels)
                {
                case SrdXrLogLevels.LOG_LEVELS_TRACE:
                case SrdXrLogLevels.LOG_LEVELS_DEBUG:
                case SrdXrLogLevels.LOG_LEVELS_INFO:
                    Debug.Log(message);
                    break;

                case SrdXrLogLevels.LOG_LEVELS_WARN:
                    Debug.LogWarning(message);
                    break;

                case SrdXrLogLevels.LOG_LEVELS_ERR:
                    Debug.LogError(message);
                    break;

                default:
                    break;
                }
            });

            XRRuntimeAPI.SetDebugLogCallback(Marshal.GetFunctionPointerForDelegate(callback));
        }
Exemplo n.º 3
0
        public static SrdXrResult GetActiveStateCrosstalkCorrection(IntPtr session, out bool state)
        {
            var result = XRRuntimeAPI.GetCrosstalkCorrectionSettings(session, out var settings);

            state = settings.compensation_enabled;
            return(result);
        }
Exemplo n.º 4
0
 public static int ShowMessageBox(string title, string message, Action <string> debugLogFunc = null)
 {
     if (debugLogFunc != null)
     {
         debugLogFunc(message);
     }
     return(XRRuntimeAPI.ShowMessageBox(SRDApplicationWindow.GetSelfWindowHandle(), title, message));
 }
Exemplo n.º 5
0
        public static SrdXrResult BeginSession(IntPtr session)
        {
            SrdXrSessionBeginInfo begin_info;

            {
                begin_info.primary_view_configuration_type = SrdXrViewConfigurationType.VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO;
            }
            return(XRRuntimeAPI.BeginSession(session, ref begin_info));
        }
Exemplo n.º 6
0
 public static SrdXrResult BeginFrame(IntPtr session, bool callInMainThread = true, bool callinRenderThread = false)
 {
     if (callinRenderThread)
     {
         GL.IssuePluginEvent(XRRuntimeAPI.GetBeginFramePtr(session), 0);
     }
     if (callInMainThread)
     {
         return(XRRuntimeAPI.BeginFrame(session));
     }
     return(SrdXrResult.SUCCESS);
 }
Exemplo n.º 7
0
        public static SrdXrResult EndFrame(IntPtr session, bool callInMainThread = true, bool callinRenderThread = false)
        {
            var end_info = new SrdXrFrameEndInfo();

            if (callinRenderThread)
            {
                GL.IssuePluginEvent(XRRuntimeAPI.GetEndFramePtr(session, ref end_info), 0);
            }
            if (callInMainThread)
            {
                return(XRRuntimeAPI.EndFrame(session, ref end_info));
            }
            return(SrdXrResult.SUCCESS);
        }
Exemplo n.º 8
0
        public static bool GetSRDBodyBounds(IntPtr session, out SRDSettings.BodyBounds bodyBounds)
        {
            SrdXrSRDData data;

            if (XRRuntimeAPI.GetPlatformSpecificData(session, out data) != SrdXrResult.SUCCESS)
            {
                bodyBounds = new SRDSettings.BodyBounds();
                return(false);
            }
            bodyBounds = new SRDSettings.BodyBounds(data.display_size.width_m,
                                                    data.display_size.height_m * Mathf.Sin(data.display_tilt_rad),
                                                    data.display_size.height_m * Mathf.Cos(data.display_tilt_rad));
            return(true);
        }
Exemplo n.º 9
0
        public static SrdXrResult CreateSession(out IntPtr session)
        {
            var devices  = new SrdXrDeviceInfo[1];
            var resultED = SRDCorePlugin.EnumerateDevices(devices, (uint)devices.Length);
            SrdXrSessionCreateInfo info;
            {
                info.platform_id       = SrdXrPlatformId.PLATFORM_ID_SRD;
                info.coordinate_system = SrdXrCoordinateSystem.COORDINATE_SYSTEM_LEFT_Y_UP_Z_FORWARD;
                info.coordinate_unit   = SrdXrCoordinateUnit.COORDINATE_UNIT_METER;
                info.device            = devices[0];
            }
            var resultCS = XRRuntimeAPI.CreateSession(ref info, out session);

            return((resultED != SrdXrResult.SUCCESS) ? resultED : resultCS);
        }
Exemplo n.º 10
0
        public static SrdXrResult EnumerateDevices([In, Out] SrdXrDeviceInfo[] devices, UInt32 loadCount)
        {
            var result = XRRuntimeAPI.EnumerateDevices(devices, loadCount);

            if (result != SrdXrResult.SUCCESS)
            {
                for (int i = 0; i < loadCount; i++)
                {
                    devices[i].device_index              = 0;
                    devices[i].device_serial_number      = "";
                    devices[i].primary_monitor_rectangle = new SrdXrRect(0, 0, 0, 0);
                    devices[i].target_monitor_rectangle  = new SrdXrRect(0, 0, 0, 0);
                }
            }
            return(result);
        }
Exemplo n.º 11
0
        public static SrdXrResult GetFacePose(IntPtr session,
                                              out Pose headPose, out Pose eyePoseL, out Pose eyePoseR)
        {
            var views          = new SrdXrView[3];
            var viewLocateInfo = new SrdXrViewLocateInfo();
            {
                viewLocateInfo.view_configuration_type = SrdXrViewConfigurationType.VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO;
            }

            var xrResult = XRRuntimeAPI.LocateViews(session, ref viewLocateInfo, views);

            headPose = ToUnityPose(views[0].pose);
            eyePoseL = ToUnityPose(views[1].pose);
            eyePoseR = ToUnityPose(views[2].pose);
            return(xrResult);
        }
Exemplo n.º 12
0
        public static SrdXrResult GetProjectionMatrix(IntPtr session, float nearClip, float farClip,
                                                      out Matrix4x4 leftProjectionMatrix, out Matrix4x4 rightProjectionMatrix)
        {
            var projMat = new SrdXrProjectionMatrix();
            var projectionMatrixInfo = new SrdXrProjectionMatrixInfo
            {
                graphics_api      = XRRuntimeGraphicsDeviceType[SystemInfo.graphicsDeviceType],
                coordinate_system = SrdXrCoordinateSystem.COORDINATE_SYSTEM_RIGHT_Y_UP_Z_FORWARD,
                near_clip         = nearClip,
                far_clip          = farClip,
                reversed_z        = false
            };

            var xrResult = XRRuntimeAPI.GetProjectionMatrix(session, ref projectionMatrixInfo, out projMat);

            leftProjectionMatrix  = ToUnityMatrix4x4(projMat.left_projection);
            rightProjectionMatrix = ToUnityMatrix4x4(projMat.right_projection);

            return(xrResult);
        }
Exemplo n.º 13
0
 public static SrdXrResult DestroySession(out IntPtr session)
 {
     return(XRRuntimeAPI.DestroySession(out session));
 }
Exemplo n.º 14
0
 public static void UnlinkXrLibraryWin64()
 {
     XRRuntimeAPI.UnlinkXrLibraryWin64();
 }
Exemplo n.º 15
0
 public static SrdXrResult SetGraphicsAPI(IntPtr session, UnityEngine.Rendering.GraphicsDeviceType graphicsAPI)
 {
     return(XRRuntimeAPI.SetGraphicsAPI(session, XRRuntimeGraphicsDeviceType[graphicsAPI]));
 }
Exemplo n.º 16
0
 public static void GenerateTextureAndShaders(IntPtr session, ref SrdXrTexture leftTextureData, ref SrdXrTexture rightTextureData, ref SrdXrTexture outTextureData)
 {
     GL.IssuePluginEvent(XRRuntimeAPI.GetGenerateTextureAndShadersPtr(session, ref leftTextureData, ref rightTextureData, ref outTextureData), 0);
 }
Exemplo n.º 17
0
 public static SrdXrResult ShowCameraWindow(IntPtr session, bool show)
 {
     return(XRRuntimeAPI.ShowCameraWindow(session, show));
 }
Exemplo n.º 18
0
 public static int CountDevices()
 {
     return((int)XRRuntimeAPI.CountDevices());
 }
Exemplo n.º 19
0
 public static SrdXrResult GetDeviceState(IntPtr session, out SrdXrDeviceState device_state)
 {
     return(XRRuntimeAPI.GetDeviceState(session, out device_state));
 }
Exemplo n.º 20
0
 public static bool LinkXrLibraryWin64()
 {
     return(XRRuntimeAPI.LinkXrLibraryWin64());
 }
Exemplo n.º 21
0
 public static SrdXrResult PollEvent(IntPtr session, out SrdXrEventDataBuffer eventData)
 {
     return(XRRuntimeAPI.PollEvent(session, out eventData));
 }
Exemplo n.º 22
0
 public static SrdXrResult EndSession(IntPtr session)
 {
     return(XRRuntimeAPI.EndSession(session));
 }
Exemplo n.º 23
0
        public static SrdXrResult SetActiveStateCrosstalkCorrection(IntPtr session, bool state)
        {
            var settings = new SrdXrCrosstalkCorrectionSettings(state);

            return(XRRuntimeAPI.SetCrosstalkCorrectionSettings(session, ref settings));
        }