Exemplo n.º 1
0
 public virtual void OnOverlayGUI(UnityEngine.Object target, SceneView sceneView)
 {
     if (!(target == null))
     {
         Camera  camera = (Camera)target;
         Vector2 mainGameViewTargetSize = GameView.GetMainGameViewTargetSize();
         if (mainGameViewTargetSize.x < 0f)
         {
             mainGameViewTargetSize.x = sceneView.position.width;
             mainGameViewTargetSize.y = sceneView.position.height;
         }
         Rect rect = camera.rect;
         mainGameViewTargetSize.x *= Mathf.Max(rect.width, 0f);
         mainGameViewTargetSize.y *= Mathf.Max(rect.height, 0f);
         if (mainGameViewTargetSize.x > 0f && mainGameViewTargetSize.y > 0f)
         {
             float num = mainGameViewTargetSize.x / mainGameViewTargetSize.y;
             mainGameViewTargetSize.y = 0.2f * sceneView.position.height;
             mainGameViewTargetSize.x = mainGameViewTargetSize.y * num;
             if (mainGameViewTargetSize.y > sceneView.position.height * 0.5f)
             {
                 mainGameViewTargetSize.y = sceneView.position.height * 0.5f;
                 mainGameViewTargetSize.x = mainGameViewTargetSize.y * num;
             }
             if (mainGameViewTargetSize.x > sceneView.position.width * 0.5f)
             {
                 mainGameViewTargetSize.x = sceneView.position.width * 0.5f;
                 mainGameViewTargetSize.y = mainGameViewTargetSize.x / num;
             }
             Rect rect2 = GUILayoutUtility.GetRect(mainGameViewTargetSize.x, mainGameViewTargetSize.y);
             if (Event.current.type == EventType.Repaint)
             {
                 this.previewCamera.CopyFrom(camera);
                 Skybox component = this.previewCamera.GetComponent <Skybox>();
                 if (component)
                 {
                     Skybox component2 = camera.GetComponent <Skybox>();
                     if (component2 && component2.enabled)
                     {
                         component.enabled  = true;
                         component.material = component2.material;
                     }
                     else
                     {
                         component.enabled = false;
                     }
                 }
                 RenderTexture previewTextureWithSize = this.GetPreviewTextureWithSize((int)rect2.width, (int)rect2.height);
                 previewTextureWithSize.antiAliasing = QualitySettings.antiAliasing;
                 this.previewCamera.targetTexture    = previewTextureWithSize;
                 this.previewCamera.pixelRect        = new Rect(0f, 0f, rect2.width, rect2.height);
                 Handles.EmitGUIGeometryForCamera(camera, this.previewCamera);
                 GL.sRGBWrite = (QualitySettings.activeColorSpace == ColorSpace.Linear);
                 this.previewCamera.Render();
                 GL.sRGBWrite = false;
                 Graphics.DrawTexture(rect2, previewTextureWithSize, new Rect(0f, 0f, 1f, 1f), 0, 0, 0, 0, GUI.color, EditorGUIUtility.GUITextureBlit2SRGBMaterial);
             }
         }
     }
 }
Exemplo n.º 2
0
 public void OnOverlayGUI(UnityEngine.Object target, SceneView sceneView)
 {
     if (!(target == null))
     {
         Camera  camera = (Camera)target;
         Vector2 mainGameViewTargetSize = GameView.GetMainGameViewTargetSize();
         if (mainGameViewTargetSize.x < 0f)
         {
             mainGameViewTargetSize.x = sceneView.position.width;
             mainGameViewTargetSize.y = sceneView.position.height;
         }
         Rect rect = camera.rect;
         mainGameViewTargetSize.x *= Mathf.Max(rect.width, 0f);
         mainGameViewTargetSize.y *= Mathf.Max(rect.height, 0f);
         if (mainGameViewTargetSize.x > 0f && mainGameViewTargetSize.y > 0f)
         {
             float num = mainGameViewTargetSize.x / mainGameViewTargetSize.y;
             mainGameViewTargetSize.y = 0.2f * sceneView.position.height;
             mainGameViewTargetSize.x = mainGameViewTargetSize.y * num;
             if (mainGameViewTargetSize.y > sceneView.position.height * 0.5f)
             {
                 mainGameViewTargetSize.y = sceneView.position.height * 0.5f;
                 mainGameViewTargetSize.x = mainGameViewTargetSize.y * num;
             }
             if (mainGameViewTargetSize.x > sceneView.position.width * 0.5f)
             {
                 mainGameViewTargetSize.x = sceneView.position.width * 0.5f;
                 mainGameViewTargetSize.y = mainGameViewTargetSize.x / num;
             }
             Rect rect2 = GUILayoutUtility.GetRect(mainGameViewTargetSize.x, mainGameViewTargetSize.y);
             rect2   = EditorGUIUtility.PointsToPixels(rect2);
             rect2.y = (sceneView.position.height + 1f) * EditorGUIUtility.pixelsPerPoint - rect2.y - rect2.height;
             if (Event.current.type == EventType.Repaint)
             {
                 this.previewCamera.CopyFrom(camera);
                 Skybox component = this.previewCamera.GetComponent <Skybox>();
                 if (component)
                 {
                     Skybox component2 = camera.GetComponent <Skybox>();
                     if (component2 && component2.enabled)
                     {
                         component.enabled  = true;
                         component.material = component2.material;
                     }
                     else
                     {
                         component.enabled = false;
                     }
                 }
                 this.previewCamera.targetTexture = null;
                 this.previewCamera.pixelRect     = rect2;
                 Handles.EmitGUIGeometryForCamera(camera, this.previewCamera);
                 this.previewCamera.Render();
             }
         }
     }
 }
Exemplo n.º 3
0
 public void OnOverlayGUI(Object target, SceneView sceneView)
 {
     if (target != null)
     {
         Camera  other = (Camera)target;
         Vector2 sizeOfMainGameView = GameView.GetSizeOfMainGameView();
         if (sizeOfMainGameView.x < 0f)
         {
             sizeOfMainGameView.x = sceneView.position.width;
             sizeOfMainGameView.y = sceneView.position.height;
         }
         Rect rect = other.rect;
         sizeOfMainGameView.x *= Mathf.Max(rect.width, 0f);
         sizeOfMainGameView.y *= Mathf.Max(rect.height, 0f);
         if ((sizeOfMainGameView.x > 0f) && (sizeOfMainGameView.y > 0f))
         {
             float num = sizeOfMainGameView.x / sizeOfMainGameView.y;
             sizeOfMainGameView.y = 0.2f * sceneView.position.height;
             sizeOfMainGameView.x = sizeOfMainGameView.y * num;
             if (sizeOfMainGameView.y > (sceneView.position.height * 0.5f))
             {
                 sizeOfMainGameView.y = sceneView.position.height * 0.5f;
                 sizeOfMainGameView.x = sizeOfMainGameView.y * num;
             }
             if (sizeOfMainGameView.x > (sceneView.position.width * 0.5f))
             {
                 sizeOfMainGameView.x = sceneView.position.width * 0.5f;
                 sizeOfMainGameView.y = sizeOfMainGameView.x / num;
             }
             Rect rect2 = EditorGUIUtility.PointsToPixels(GUILayoutUtility.GetRect(sizeOfMainGameView.x, sizeOfMainGameView.y));
             rect2.y = (((sceneView.position.height + 1f) * EditorGUIUtility.pixelsPerPoint) - rect2.y) - rect2.height;
             if (Event.current.type == EventType.Repaint)
             {
                 this.previewCamera.CopyFrom(other);
                 Skybox component = this.previewCamera.GetComponent <Skybox>();
                 if (component != null)
                 {
                     Skybox skybox2 = other.GetComponent <Skybox>();
                     if ((skybox2 != null) && skybox2.enabled)
                     {
                         component.enabled  = true;
                         component.material = skybox2.material;
                     }
                     else
                     {
                         component.enabled = false;
                     }
                 }
                 this.previewCamera.targetTexture = null;
                 this.previewCamera.pixelRect     = rect2;
                 Handles.EmitGUIGeometryForCamera(other, this.previewCamera);
                 this.previewCamera.Render();
             }
         }
     }
 }
Exemplo n.º 4
0
        public virtual void OnOverlayGUI(Object target, SceneView sceneView)
        {
            if (target == null)
            {
                return;
            }

            var c = (Camera)target;

            // Do not render the Camera Preview overlay if the target camera GameObject is not part of the objects the SceneView is rendering
            if (!sceneView.IsGameObjectInThisSceneView(c.gameObject))
            {
                return;
            }

            Vector2 previewSize = c.targetTexture ? new Vector2(c.targetTexture.width, c.targetTexture.height) : PlayModeView.GetMainPlayModeViewTargetSize();

            if (previewSize.x < 0f)
            {
                // Fallback to Scene View of not a valid game view size
                previewSize.x = sceneView.position.width;
                previewSize.y = sceneView.position.height;
            }

            // Apply normalizedviewport rect of camera
            Rect normalizedViewPortRect = c.rect;

            // clamp normalized rect in [0,1]
            normalizedViewPortRect.xMin = Math.Max(normalizedViewPortRect.xMin, 0f);
            normalizedViewPortRect.yMin = Math.Max(normalizedViewPortRect.yMin, 0f);
            normalizedViewPortRect.xMax = Math.Min(normalizedViewPortRect.xMax, 1f);
            normalizedViewPortRect.yMax = Math.Min(normalizedViewPortRect.yMax, 1f);

            previewSize.x *= Mathf.Max(normalizedViewPortRect.width, 0f);
            previewSize.y *= Mathf.Max(normalizedViewPortRect.height, 0f);

            // Prevent using invalid previewSize
            if (previewSize.x < 1f || previewSize.y < 1f)
            {
                return;
            }

            float aspect = previewSize.x / previewSize.y;

            // Scale down (fit to scene view)
            previewSize.y = kPreviewNormalizedSize * sceneView.position.height;
            previewSize.x = previewSize.y * aspect;
            if (previewSize.y > sceneView.position.height * 0.5f)
            {
                previewSize.y = sceneView.position.height * 0.5f;
                previewSize.x = previewSize.y * aspect;
            }
            if (previewSize.x > sceneView.position.width * 0.5f)
            {
                previewSize.x = sceneView.position.width * 0.5f;
                previewSize.y = previewSize.x / aspect;
            }

            // Get and reserve rect
            Rect cameraRect = GUILayoutUtility.GetRect(previewSize.x, previewSize.y);

            cameraRect.width = Mathf.Floor(cameraRect.width);

            if (Event.current.type == EventType.Repaint)
            {
                Graphics.DrawTexture(cameraRect, Texture2D.whiteTexture, new Rect(0, 0, 1, 1), 0, 0, 0, 0, Color.black);
            }

            var properWidth = cameraRect.height * aspect;

            cameraRect.x    += (cameraRect.width - properWidth) * 0.5f;
            cameraRect.width = properWidth;


            if (Event.current.type == EventType.Repaint)
            {
                // setup camera and render
                previewCamera.CopyFrom(c);

                // make sure the preview camera is rendering the same stage as the SceneView is
                if (sceneView.overrideSceneCullingMask != 0)
                {
                    previewCamera.overrideSceneCullingMask = sceneView.overrideSceneCullingMask;
                }
                else
                {
                    previewCamera.scene = sceneView.customScene;
                }

                // also make sure to sync any Skybox component on the preview camera
                var dstSkybox = previewCamera.GetComponent <Skybox>();
                if (dstSkybox)
                {
                    var srcSkybox = c.GetComponent <Skybox>();
                    if (srcSkybox && srcSkybox.enabled)
                    {
                        dstSkybox.enabled  = true;
                        dstSkybox.material = srcSkybox.material;
                    }
                    else
                    {
                        dstSkybox.enabled = false;
                    }
                }


                var previewTexture = GetPreviewTextureWithSize((int)cameraRect.width, (int)cameraRect.height);
                previewTexture.antiAliasing = Mathf.Max(1, QualitySettings.antiAliasing);
                previewCamera.targetTexture = previewTexture;
                previewCamera.pixelRect     = new Rect(0, 0, cameraRect.width, cameraRect.height);

                Handles.EmitGUIGeometryForCamera(c, previewCamera);

                if (c.usePhysicalProperties)
                {
                    // when sensor size is reduced, the previous frame is still visible behing so we need to clear the texture before rendering.
                    RenderTexture rt = RenderTexture.active;
                    RenderTexture.active = previewTexture;
                    GL.Clear(false, true, Color.clear);
                    RenderTexture.active = rt;
                }

                previewCamera.Render();
                Graphics.DrawTexture(cameraRect, previewTexture, new Rect(0, 0, 1, 1), 0, 0, 0, 0, GUI.color, EditorGUIUtility.GUITextureBlit2SRGBMaterial);
            }
        }
Exemplo n.º 5
0
        public void OnOverlayGUI(UnityEngine.Object target, SceneView sceneView)
        {
            if (target == null)
            {
                return;
            }
            Camera  camera             = (Camera)target;
            Vector2 sizeOfMainGameView = GameView.GetSizeOfMainGameView();

            if (sizeOfMainGameView.x < 0f)
            {
                sizeOfMainGameView.x = sceneView.position.width;
                sizeOfMainGameView.y = sceneView.position.height;
            }
            Rect rect = camera.rect;

            sizeOfMainGameView.x *= Mathf.Max(rect.width, 0f);
            sizeOfMainGameView.y *= Mathf.Max(rect.height, 0f);
            if (sizeOfMainGameView.x <= 0f || sizeOfMainGameView.y <= 0f)
            {
                return;
            }
            float num = sizeOfMainGameView.x / sizeOfMainGameView.y;

            sizeOfMainGameView.y = 0.2f * sceneView.position.height;
            sizeOfMainGameView.x = sizeOfMainGameView.y * num;
            if (sizeOfMainGameView.y > sceneView.position.height * 0.5f)
            {
                sizeOfMainGameView.y = sceneView.position.height * 0.5f;
                sizeOfMainGameView.x = sizeOfMainGameView.y * num;
            }
            if (sizeOfMainGameView.x > sceneView.position.width * 0.5f)
            {
                sizeOfMainGameView.x = sceneView.position.width * 0.5f;
                sizeOfMainGameView.y = sizeOfMainGameView.x / num;
            }
            Rect rect2 = GUILayoutUtility.GetRect(sizeOfMainGameView.x, sizeOfMainGameView.y);

            rect2.y = sceneView.position.height - rect2.y - rect2.height + 1f;
            if (Event.current.type == EventType.Repaint)
            {
                this.previewCamera.CopyFrom(camera);
                Skybox component = this.previewCamera.GetComponent <Skybox>();
                if (component)
                {
                    Skybox component2 = camera.GetComponent <Skybox>();
                    if (component2 && component2.enabled)
                    {
                        component.enabled  = true;
                        component.material = component2.material;
                    }
                    else
                    {
                        component.enabled = false;
                    }
                }
                this.previewCamera.targetTexture = null;
                this.previewCamera.pixelRect     = rect2;
                Handles.EmitGUIGeometryForCamera(camera, this.previewCamera);
                this.previewCamera.Render();
            }
        }
        public virtual void OnOverlayGUI(Object target, SceneView sceneView)
        {
            if (target == null)
            {
                return;
            }

            // cache some deep values
            var c = (Camera)target;

            Vector2 previewSize = c.targetTexture ? new Vector2(c.targetTexture.width, c.targetTexture.height) : GameView.GetMainGameViewTargetSize();

            if (previewSize.x < 0f)
            {
                // Fallback to Scene View of not a valid game view size
                previewSize.x = sceneView.position.width;
                previewSize.y = sceneView.position.height;
            }

            // Apply normalizedviewport rect of camera
            Rect normalizedViewPortRect = c.rect;

            previewSize.x *= Mathf.Max(normalizedViewPortRect.width, 0f);
            previewSize.y *= Mathf.Max(normalizedViewPortRect.height, 0f);

            // Prevent using invalid previewSize
            if (previewSize.x < 1f || previewSize.y < 1f)
            {
                return;
            }

            float aspect = previewSize.x / previewSize.y;

            // Scale down (fit to scene view)
            previewSize.y = kPreviewNormalizedSize * sceneView.position.height;
            previewSize.x = previewSize.y * aspect;
            if (previewSize.y > sceneView.position.height * 0.5f)
            {
                previewSize.y = sceneView.position.height * 0.5f;
                previewSize.x = previewSize.y * aspect;
            }
            if (previewSize.x > sceneView.position.width * 0.5f)
            {
                previewSize.x = sceneView.position.width * 0.5f;
                previewSize.y = previewSize.x / aspect;
            }

            // Get and reserve rect
            Rect cameraRect = GUILayoutUtility.GetRect(previewSize.x, previewSize.y);

            if (Event.current.type == EventType.Repaint)
            {
                // setup camera and render
                previewCamera.CopyFrom(c);
                // also make sure to sync any Skybox component on the preview camera
                var dstSkybox = previewCamera.GetComponent <Skybox>();
                if (dstSkybox)
                {
                    var srcSkybox = c.GetComponent <Skybox>();
                    if (srcSkybox && srcSkybox.enabled)
                    {
                        dstSkybox.enabled  = true;
                        dstSkybox.material = srcSkybox.material;
                    }
                    else
                    {
                        dstSkybox.enabled = false;
                    }
                }


                var previewTexture = GetPreviewTextureWithSize((int)cameraRect.width, (int)cameraRect.height);
                previewTexture.antiAliasing = Mathf.Max(1, QualitySettings.antiAliasing);
                previewCamera.targetTexture = previewTexture;
                previewCamera.pixelRect     = new Rect(0, 0, cameraRect.width, cameraRect.height);

                Handles.EmitGUIGeometryForCamera(c, previewCamera);

                GL.sRGBWrite = QualitySettings.activeColorSpace == ColorSpace.Linear;

                if (c.usePhysicalProperties)
                {
                    // when sensor size is reduced, the previous frame is still visible behing so we need to clear the texture before rendering.
                    RenderTexture rt = RenderTexture.active;
                    RenderTexture.active = previewTexture;
                    GL.Clear(false, true, Color.clear);
                    RenderTexture.active = rt;
                }

                previewCamera.Render();
                GL.sRGBWrite = false;
                Graphics.DrawTexture(cameraRect, previewTexture, new Rect(0, 0, 1, 1), 0, 0, 0, 0, GUI.color, EditorGUIUtility.GUITextureBlit2SRGBMaterial);
            }
        }
Exemplo n.º 7
0
        public void OnOverlayGUI(UnityEngine.Object target, SceneView sceneView)
        {
            if (target == (UnityEngine.Object)null)
            {
                return;
            }
            Camera  camera             = (Camera)target;
            Vector2 sizeOfMainGameView = GameView.GetSizeOfMainGameView();

            if ((double)sizeOfMainGameView.x < 0.0)
            {
                sizeOfMainGameView.x = sceneView.position.width;
                sizeOfMainGameView.y = sceneView.position.height;
            }
            Rect rect = camera.rect;

            sizeOfMainGameView.x *= Mathf.Max(rect.width, 0.0f);
            sizeOfMainGameView.y *= Mathf.Max(rect.height, 0.0f);
            if ((double)sizeOfMainGameView.x <= 0.0 || (double)sizeOfMainGameView.y <= 0.0)
            {
                return;
            }
            float num = sizeOfMainGameView.x / sizeOfMainGameView.y;

            sizeOfMainGameView.y = 0.2f * sceneView.position.height;
            sizeOfMainGameView.x = sizeOfMainGameView.y * num;
            if ((double)sizeOfMainGameView.y > (double)sceneView.position.height * 0.5)
            {
                sizeOfMainGameView.y = sceneView.position.height * 0.5f;
                sizeOfMainGameView.x = sizeOfMainGameView.y * num;
            }
            if ((double)sizeOfMainGameView.x > (double)sceneView.position.width * 0.5)
            {
                sizeOfMainGameView.x = sceneView.position.width * 0.5f;
                sizeOfMainGameView.y = sizeOfMainGameView.x / num;
            }
            Rect pixels = EditorGUIUtility.PointsToPixels(GUILayoutUtility.GetRect(sizeOfMainGameView.x, sizeOfMainGameView.y));

            pixels.y = (sceneView.position.height + 1f) * EditorGUIUtility.pixelsPerPoint - pixels.y - pixels.height;
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            this.previewCamera.CopyFrom(camera);
            Skybox component1 = this.previewCamera.GetComponent <Skybox>();

            if ((bool)((UnityEngine.Object)component1))
            {
                Skybox component2 = camera.GetComponent <Skybox>();
                if ((bool)((UnityEngine.Object)component2) && component2.enabled)
                {
                    component1.enabled  = true;
                    component1.material = component2.material;
                }
                else
                {
                    component1.enabled = false;
                }
            }
            this.previewCamera.targetTexture = (RenderTexture)null;
            this.previewCamera.pixelRect     = pixels;
            Handles.EmitGUIGeometryForCamera(camera, this.previewCamera);
            this.previewCamera.Render();
        }
Exemplo n.º 8
0
        public override void OnGUI()
        {
            UpdateSize();

            imguiContainer.style.minWidth        = collapsed ? new StyleLength(240) : new StyleLength(StyleKeyword.Auto);
            imguiContainer.style.minHeight       = collapsed ? new StyleLength(135) : new StyleLength(StyleKeyword.Auto);
            imguiContainer.parent.style.flexGrow = 1;
            imguiContainer.style.flexGrow        = 1;

            if (selectedCamera == null)
            {
                GUILayout.Label("No camera selected", EditorStyles.centeredGreyMiniLabel);
                return;
            }

            if (!CameraEditorUtils.IsViewportRectValidToRender(selectedCamera.rect))
            {
                return;
            }

            var sceneView = SceneView.lastActiveSceneView;

            // Do not render the Camera Preview overlay if the target camera GameObject is not part of the objects the
            // SceneView is rendering
            if (!sceneView.IsGameObjectInThisSceneView(selectedCamera.gameObject))
            {
                return;
            }

            var cameraRect = imguiContainer.rect;

            cameraRect.width = Mathf.Floor(cameraRect.width);

            if (cameraRect.width < 1 || cameraRect.height < 1)
            {
                return;
            }

            if (Event.current.type == EventType.Repaint)
            {
                Graphics.DrawTexture(cameraRect, Texture2D.whiteTexture, new Rect(0, 0, 1, 1), 0, 0, 0, 0, Color.black);

                // setup camera and render
                previewCamera.CopyFrom(selectedCamera);

                // make sure the preview camera is rendering the same stage as the SceneView is
                if (sceneView.overrideSceneCullingMask != 0)
                {
                    previewCamera.overrideSceneCullingMask = sceneView.overrideSceneCullingMask;
                }
                else
                {
                    previewCamera.scene = sceneView.customScene;
                }

                // also make sure to sync any Skybox component on the preview camera
                var dstSkybox = previewCamera.GetComponent <Skybox>();
                if (dstSkybox)
                {
                    var srcSkybox = selectedCamera.GetComponent <Skybox>();
                    if (srcSkybox && srcSkybox.enabled)
                    {
                        dstSkybox.enabled  = true;
                        dstSkybox.material = srcSkybox.material;
                    }
                    else
                    {
                        dstSkybox.enabled = false;
                    }
                }

                Vector2 previewSize = selectedCamera.targetTexture
                    ? new Vector2(selectedCamera.targetTexture.width, selectedCamera.targetTexture.height)
                    : PlayModeView.GetMainPlayModeViewTargetSize();

                if (previewSize.x < 0f)
                {
                    // Fallback to Scene View of not a valid game view size
                    previewSize.x = sceneView.position.width;
                    previewSize.y = sceneView.position.height;
                }

                float rectAspect    = cameraRect.width / cameraRect.height;
                float previewAspect = previewSize.x / previewSize.y;
                Rect  previewRect   = cameraRect;
                if (rectAspect > previewAspect)
                {
                    float stretch = previewAspect / rectAspect;
                    previewRect = new Rect(cameraRect.xMin + cameraRect.width * (1.0f - stretch) * .5f, cameraRect.yMin, stretch * cameraRect.width, cameraRect.height);
                }
                else
                {
                    float stretch = rectAspect / previewAspect;
                    previewRect = new Rect(cameraRect.xMin, cameraRect.yMin + cameraRect.height * (1.0f - stretch) * .5f, cameraRect.width, stretch * cameraRect.height);
                }

                var previewTexture = GetPreviewTextureWithSizeAndAA((int)previewRect.width, (int)previewRect.height);
                previewCamera.targetTexture = previewTexture;
                previewCamera.pixelRect     = new Rect(0, 0, previewRect.width, previewRect.height);

                Handles.EmitGUIGeometryForCamera(selectedCamera, previewCamera);

                if (selectedCamera.usePhysicalProperties)
                {
                    // when sensor size is reduced, the previous frame is still visible behing so we need to clear the texture before rendering.
                    RenderTexture rt = RenderTexture.active;
                    RenderTexture.active = previewTexture;
                    GL.Clear(false, true, Color.clear);
                    RenderTexture.active = rt;
                }

                previewCamera.Render();

                Graphics.DrawTexture(previewRect, previewTexture, new Rect(0, 0, 1, 1), 0, 0, 0, 0, GUI.color, EditorGUIUtility.GUITextureBlit2SRGBMaterial);
            }
        }