SteamVR_ExternalCamera_LegacyManager.cs 1.63 KB
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Used to render an external camera of vr player (split front/back).
//
//=============================================================================

using UnityEngine;
using System.Collections;

namespace Valve.VR
{
    public class SteamVR_ExternalCamera_LegacyManager
    {
        public static bool hasCamera { get { return cameraIndex != -1; } }

        public static int cameraIndex = -1;

        private static SteamVR_Events.Action newPosesAction = null;

        public static void SubscribeToNewPoses()
        {
            if (newPosesAction == null)
                newPosesAction = SteamVR_Events.NewPosesAction(OnNewPoses);

            newPosesAction.enabled = true;
        }

        private static void OnNewPoses(TrackedDevicePose_t[] poses)
        {
            if (cameraIndex != -1)
                return;

            int controllercount = 0;
            for (int index = 0; index < poses.Length; index++)
            {
                if (poses[index].bDeviceIsConnected)
                {
                    ETrackedDeviceClass deviceClass = OpenVR.System.GetTrackedDeviceClass((uint)index);
                    if (deviceClass == ETrackedDeviceClass.Controller || deviceClass == ETrackedDeviceClass.GenericTracker)
                    {
                        controllercount++;
                        if (controllercount >= 3)
                        {
                            cameraIndex = index;
                            break;
                        }
                    }
                }
            }
        }
    }
}