This commit is contained in:
notGreg 2022-09-11 18:48:53 +02:00
parent 364f313e79
commit a9e11d0ba8

View File

@ -3,7 +3,7 @@ using BepInEx.Configuration;
using EFT;
using UnityEngine;
using Comfort.Common;
using System.Collections;
namespace CameraResolutionScale
{
@ -20,13 +20,10 @@ namespace CameraResolutionScale
}
Rect defaultMainCameraRect;
float rectScale;
bool setupDone = false;
Camera scopeCamera = null;
bool isAiming = false;
bool doneOnce = false;
Utils utils = new Utils();
void Update()
@ -37,47 +34,43 @@ namespace CameraResolutionScale
return;
}
if (Camera.allCamerasCount < 1) return;
if (Camera.main == null || Camera.main.isActiveAndEnabled == false)
{
setupDone = false;
return;
}
var handsController = ((Singleton<GameWorld>.Instance.RegisteredPlayers[0].HandsController));
isAiming = handsController.IsAiming;
if (isAiming)
if (isAiming && !doneOnce)
{
if (Camera.main == null || Camera.allCamerasCount <= 1) return;
if (!setupDone)
{
Logger.LogInfo("Storing default Camera.main.rect");
defaultMainCameraRect = Camera.main.rect;
rectScale = defaultMainCameraRect.width;
Logger.LogInfo($"Rect: {defaultMainCameraRect}");
setupDone = true;
}
if (scopeCamera == null) scopeCamera = Camera.allCameras[1];
scopeCamera.GetComponent<SSAAOptic>().OpticCameraToMainCameraResolutionRatio = (float)(scopeCameraResolutionScale.Value / 100f);
float scale = (float)cameraResolutionScale.Value / 100f;
Camera.main.rect = new Rect(0, 0, rectScale * scale, rectScale * scale);
//Logger.LogInfo($"Updating render resolutions: Main Camera: {cameraResolutionScale.Value}% Scope Camera: {scopeCameraResolutionScale.Value}%");
scopeCamera = Camera.allCameras[1];
StartCoroutine(setScaledCameraRes());
doneOnce = true;
return;
}
if (Camera.main.rect != defaultMainCameraRect && setupDone)
if(!isAiming && doneOnce)
{
Logger.LogInfo("Restoring default render resolution");
Camera.main.rect = defaultMainCameraRect;
StartCoroutine(unsetScaledCameraRes());
doneOnce = false;
return;
}
}
IEnumerator setScaledCameraRes()
{
defaultMainCameraRect = Camera.main.rect;
yield return new WaitForSeconds(0.05f);
Camera.main.rect = new Rect(0, 0, defaultMainCameraRect.width * (cameraResolutionScale.Value / 100f), defaultMainCameraRect.height * (cameraResolutionScale.Value / 100f));
scopeCamera.GetComponent<SSAAOptic>().OpticCameraToMainCameraResolutionRatio = (float)(scopeCameraResolutionScale.Value / 100f);
}
IEnumerator unsetScaledCameraRes()
{
Camera.main.rect = defaultMainCameraRect;
yield return null;
}
}
}