private void SetValid(bool value) { if (value && m_externalCamera == null && SteamVR_Render.instance.externalCamera == null && File.Exists(m_configPath)) { // don't know why SteamVR_ExternalCamera must be instantiated from the prefab // when create SteamVR_ExternalCamera using AddComponent, errors came out when disabling var prefab = Resources.Load <GameObject>("SteamVR_ExternalCamera"); if (prefab == null) { Debug.LogError("SteamVR_ExternalCamera prefab not found!"); } else { var ctrlMgr = Instantiate(prefab); var extCam = ctrlMgr.transform.GetChild(0); extCam.gameObject.name = "SteamVR External Camera"; extCam.SetParent(transform, false); DestroyImmediate(extCam.GetComponent <SteamVR_TrackedObject>()); DestroyImmediate(ctrlMgr); m_externalCamera = extCam.GetComponent <SteamVR_ExternalCamera>(); SteamVR_Render.instance.externalCamera = m_externalCamera; m_externalCamera.configPath = m_configPath; m_externalCamera.ReadConfig(); } } if (m_externalCamera != null) { m_externalCamera.gameObject.SetActive(value); } }
private void InternalSetQuadViewActive(bool value) { if (value && m_externalCamera == null && !string.IsNullOrEmpty(m_configPath) && File.Exists(m_configPath)) { // don't know why SteamVR_ExternalCamera must be instantiated from the prefab // when create SteamVR_ExternalCamera using AddComponent, errors came out when disabling var prefab = Resources.Load <GameObject>("SteamVR_ExternalCamera"); if (prefab == null) { Debug.LogError("SteamVR_ExternalCamera prefab not found!"); } else { var ctrlMgr = Instantiate(prefab); var extCam = ctrlMgr.transform.GetChild(0); extCam.gameObject.name = "SteamVR External Camera"; extCam.SetParent(transform, false); DestroyImmediate(extCam.GetComponent <SteamVR_TrackedObject>()); DestroyImmediate(ctrlMgr); m_externalCamera = extCam.GetComponent <SteamVR_ExternalCamera>(); SteamVR_Render.instance.externalCamera = m_externalCamera; // resolve config file m_externalCamera.enabled = false; m_externalCamera.configPath = m_configPath; m_externalCamera.ReadConfig(); m_externalCamera.enabled = true; // to preserve sceneResolutionScale on enabled // resolve RenderTexture m_externalCamera.AttachToCamera(SteamVR_Render.Top()); var w = Screen.width / 2; var h = Screen.height / 2; var cam = m_externalCamera.GetComponentInChildren <Camera>(); if (cam.targetTexture == null || cam.targetTexture.width != w || cam.targetTexture.height != h) { var tex = new RenderTexture(w, h, 24, RenderTextureFormat.ARGB32, QualitySettings.activeColorSpace == ColorSpace.Linear ? RenderTextureReadWrite.Linear : RenderTextureReadWrite.Default); tex.antiAliasing = QualitySettings.antiAliasing == 0 ? 1 : QualitySettings.antiAliasing; cam.targetTexture = tex; } } } if (m_externalCamera != null) { m_externalCamera.gameObject.SetActive(value); if (value) { VivePose.AddNewPosesListener(this); } else { VivePose.RemoveNewPosesListener(this); } } }
private void Awake() { if (externalCamera == null && File.Exists(externalCameraConfigPath)) { var prefab = Resources.Load <GameObject>("SteamVR_ExternalCamera"); var instance = Instantiate(prefab); instance.gameObject.name = "External Camera"; externalCamera = instance.transform.GetChild(0).GetComponent <SteamVR_ExternalCamera>(); externalCamera.configPath = externalCameraConfigPath; externalCamera.ReadConfig(); } }
private bool TryGetTargetExCam(out SteamVR_ExternalCamera excam) { if (!ExternalCameraHook.Active || ExternalCameraHook.Instance.externalCamera == null) { excam = null; return(false); } else { excam = ExternalCameraHook.Instance.externalCamera; return(true); } }
private bool TryGetTargetExCam(out SteamVR_ExternalCamera excam, out Camera camera) { if (!TryGetTargetExCam(out excam)) { camera = null; return(false); } excam = ExternalCameraHook.Instance.externalCamera; var excamTrans = excam.transform; if (excamTrans.childCount <= 1) { camera = excam.GetComponentInChildren <Camera>(); } else { // Locate the camera component on the last child and clean up other duplicated cameras // Note that SteamVR_ExternalCamera.ReadConfig triggers making a new clone from head camera // And ReadConfig is called when externalcamera.cfg is changed on disk var duplicateCamsObj = ListPool <GameObject> .Get(); camera = null; for (int i = excamTrans.childCount - 1; i >= 0; --i) { var cam = excamTrans.GetChild(i).GetComponent <Camera>(); if (cam == null) { continue; } if (camera == null) { camera = cam; } else { duplicateCamsObj.Add(cam.gameObject); } } for (int i = duplicateCamsObj.Count - 1; i >= 0; --i) { Destroy(duplicateCamsObj[i]); } ListPool <GameObject> .Release(duplicateCamsObj); } return(true); }
private void Awake() { if (externalCamera == null && File.Exists(externalCameraConfigPath)) { GameObject original = Resources.Load <GameObject>("SteamVR_ExternalCamera"); GameObject gameObject = Object.Instantiate(original); gameObject.gameObject.name = "External Camera"; externalCamera = gameObject.transform.GetChild(0).GetComponent <SteamVR_ExternalCamera>(); externalCamera.configPath = externalCameraConfigPath; externalCamera.ReadConfig(); } }
void Awake() { var go = new GameObject("cameraMask"); go.transform.parent = transform; cameraMask = go.AddComponent <SteamVR_CameraMask>(); if (externalCamera == null && System.IO.File.Exists(externalCameraConfigPath)) { var prefab = Resources.Load <GameObject>("SteamVR_ExternalCamera"); var instance = Instantiate(prefab); instance.gameObject.name = "External Camera"; externalCamera = instance.transform.GetChild(0).GetComponent <SteamVR_ExternalCamera>(); externalCamera.configPath = externalCameraConfigPath; externalCamera.ReadConfig(); } }
void Awake() { var go = new GameObject("cameraMask"); go.transform.parent = transform; cameraMask = go.AddComponent<SteamVR_CameraMask>(); if (externalCamera == null && System.IO.File.Exists(externalCameraConfigPath)) { var prefab = Resources.Load<GameObject>("SteamVR_ExternalCamera"); var instance = Instantiate(prefab); instance.gameObject.name = "External Camera"; externalCamera = instance.transform.GetChild(0).GetComponent<SteamVR_ExternalCamera>(); externalCamera.configPath = externalCameraConfigPath; externalCamera.ReadConfig(); } }