Browse Source

Fix aspect ratio getting stuck on character screenshot

Bepis 7 years ago
parent
commit
fc5210657a
1 changed files with 13 additions and 11 deletions
  1. 13 11
      Plugins/Screencap/ScreenshotManager.cs

+ 13 - 11
Plugins/Screencap/ScreenshotManager.cs

@@ -52,20 +52,22 @@ namespace Screencap
 
         Texture2D RenderCamera(Camera cam)
         {
-            float oldaspect = cam.aspect;
-            cam.targetTexture = new RenderTexture(1024, 1024, 32); //((int)cam.pixelRect.width, (int)cam.pixelRect.height, 32);
-            cam.aspect = cam.targetTexture.width / (float)cam.targetTexture.height;
+            var go = new GameObject();
+            Camera renderCam = go.AddComponent<Camera>();
+            renderCam.CopyFrom(Camera.main);
+
+            renderCam.targetTexture = new RenderTexture(2048, 2048, 32); //((int)cam.pixelRect.width, (int)cam.pixelRect.height, 32);
+            renderCam.aspect = renderCam.targetTexture.width / (float)renderCam.targetTexture.height;
             RenderTexture currentRT = RenderTexture.active;
-            RenderTexture.active = cam.targetTexture;
-            
-            cam.Render();
-            Texture2D image = new Texture2D(cam.targetTexture.width, cam.targetTexture.height);
-            image.ReadPixels(new Rect(0, 0, cam.targetTexture.width, cam.targetTexture.height), 0, 0);
+            RenderTexture.active = renderCam.targetTexture;
+
+            renderCam.Render();
+            Texture2D image = new Texture2D(renderCam.targetTexture.width, renderCam.targetTexture.height);
+            image.ReadPixels(new Rect(0, 0, renderCam.targetTexture.width, renderCam.targetTexture.height), 0, 0);
             image.Apply();
             RenderTexture.active = currentRT;
-            Destroy(cam.targetTexture);
-            cam.targetTexture = null;
-            cam.aspect = oldaspect;
+            Destroy(renderCam.targetTexture);
+            Destroy(renderCam);
             return image;
         }
     }