void Update() { vrKeyboard keyb = MiddleVR.VRDeviceMgr.GetKeyboard(); // Invert eye if (keyb != null && keyb.IsKeyToggled(MiddleVR.VRK_I) && (keyb.IsKeyPressed(MiddleVR.VRK_LSHIFT) || keyb.IsKeyPressed(MiddleVR.VRK_RSHIFT))) { // For each vrCameraStereo, invert inter eye distance uint camNb = MiddleVR.VRDisplayMgr.GetCamerasNb(); for (uint i = 0; i < camNb; ++i) { vrCamera cam = MiddleVR.VRDisplayMgr.GetCameraByIndex(i); if (cam.IsA("CameraStereo")) { vrCameraStereo stereoCam = MiddleVR.VRDisplayMgr.GetCameraStereo(cam.GetName()); stereoCam.SetInterEyeDistance(-stereoCam.GetInterEyeDistance()); } } } }
protected void Start() { // Check if we are running MiddleVR if (MiddleVR.VRKernel == null) { Debug.Log("[X] VRManager is missing from the scene !"); enabled = false; return; } if (SystemInfo.graphicsDeviceID == 0) { Debug.Log("[~] Running in batchmode - disabling VRWebView script"); enabled = false; return; } m_VirtualMousePosition = new Vector2(0, 0); if (Application.isEditor) { // Get the vrCameras corresponding Cameras m_Cameras = new List <Camera>(); uint camerasNb = MiddleVR.VRDisplayMgr.GetCamerasNb(); for (uint i = 0; i < camerasNb; ++i) { vrCamera vrcamera = MiddleVR.VRDisplayMgr.GetCameraByIndex(i); GameObject cameraObj = GameObject.Find(vrcamera.GetName()); Camera camera = cameraObj.GetComponent <Camera>(); if (camera != null) { m_Cameras.Add(camera); } } } m_Texture = new Texture2D(m_Width, m_Height, TextureFormat.ARGB32, false); m_Texture.wrapMode = TextureWrapMode.Clamp; // Create vrImage and Texture2D #if VRWEBVIEW_UNITY_FREE // Texture2D.SetPixels takes RGBA. m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_RGBA); m_Pixels = m_Texture.GetPixels32(0); m_PixelsHandle = GCHandle.Alloc(m_Pixels, GCHandleType.Pinned); #else // OpenGL and Direct3D 9: Memory order for texture upload is BGRA (little-endian representation of ARGB32) // Direct3D 11: Unity seems to ignore TextureFormat.ARGB32 and always creates an RGBA texture. // We let vrImage do the pixel format conversion because this operation is done in another thread. if (SystemInfo.graphicsDeviceVersion.Contains("Direct3D 11")) { m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_RGBA); } else { m_Image = new vrImage("", (uint)m_Width, (uint)m_Height, VRImagePixelFormat.VRImagePixelFormat_BGRA); } #endif // Fill texture Color32[] colors = new Color32[(m_Width * m_Height)]; for (int i = 0; i < (m_Width * m_Height); i++) { colors[i].r = 0; colors[i].g = 0; colors[i].b = 0; colors[i].a = 0; } m_Texture.SetPixels32(colors); m_Texture.Apply(false, false); #if !VRWEBVIEW_UNITY_FREE m_NativeTexturePtr = m_Texture.GetNativeTexturePtr(); #endif // Attach texture if (gameObject != null && gameObject.GetComponent <GUITexture>() == null && gameObject.GetComponent <Renderer>() != null) { var renderer = gameObject.GetComponent <Renderer>(); // Assign the material/shader to the object attached renderer.material = Resources.Load("VRWebViewMaterial", typeof(Material)) as Material; renderer.material.mainTexture = this.m_Texture; } else if (gameObject != null && gameObject.GetComponent <GUITexture>() != null) { gameObject.GetComponent <GUITexture>().texture = this.m_Texture; } else { MiddleVR.VRLog(2, "VRWebView must be attached to a GameObject with a renderer or a GUITexture !"); enabled = false; return; } // Handle Cluster if (MiddleVR.VRClusterMgr.IsServer() && !MiddleVR.VRKernel.GetEditorMode()) { MiddleVR.VRClusterMgr.AddSynchronizedObject(m_Image); } if (!MiddleVR.VRClusterMgr.IsClient()) { if (m_DirectoryProviders.Length == 0 && m_ArchiveProviders.Length == 0) { m_WebView = new vrWebView("", GetAbsoluteURL(m_URL), (uint)m_Width, (uint)m_Height, m_Image); } else { m_WebView = new vrWebView("", "", (uint)m_Width, (uint)m_Height, m_Image); int order = 0; foreach (VRWebViewDirectoryProvider directoryProvider in m_DirectoryProviders) { m_WebView.AddDirectoryProvider(directoryProvider.m_URL, Application.dataPath + System.IO.Path.DirectorySeparatorChar + directoryProvider.m_DirectoryPath, order, "VRWebViewProvider" + order); order++; } foreach (VRWebViewArchiveProvider archiveProvider in m_ArchiveProviders) { m_WebView.AddArchiveProvider(archiveProvider.m_URL, Application.dataPath + System.IO.Path.DirectorySeparatorChar + archiveProvider.m_ArchivePath, archiveProvider.m_Password, order, "VRWebViewProvider" + order); order++; } m_WebView.SetURL(GetAbsoluteURL(m_URL)); } m_WebView.SetZoom(m_Zoom); } }