84 lines
2.8 KiB
C#
84 lines
2.8 KiB
C#
|
using BepInEx;
|
|||
|
using BepInEx.Configuration;
|
|||
|
using EFT;
|
|||
|
using UnityEngine;
|
|||
|
using Comfort.Common;
|
|||
|
|
|||
|
|
|||
|
namespace CameraResolutionScale
|
|||
|
{
|
|||
|
[BepInPlugin("com.notGreg.cameraScaleControl", "notGreg's Camera Resolution Settings", "1.0.0")]
|
|||
|
public class Plugin : BaseUnityPlugin
|
|||
|
{
|
|||
|
ConfigEntry<int> cameraResolutionScale;
|
|||
|
ConfigEntry<int> scopeCameraResolutionScale;
|
|||
|
|
|||
|
void Awake()
|
|||
|
{
|
|||
|
cameraResolutionScale = Config.Bind("General", "Main camera scale %", 50, new ConfigDescription("Main camera resulution scae", new AcceptableValueRange<int>(10,200)));
|
|||
|
scopeCameraResolutionScale = Config.Bind("General", "Scope camera scale %", 33, new ConfigDescription("Scope camera resulution scae", new AcceptableValueRange<int>(10, 200)));
|
|||
|
}
|
|||
|
|
|||
|
Rect defaultMainCameraRect;
|
|||
|
float rectScale;
|
|||
|
bool setupDone = false;
|
|||
|
|
|||
|
|
|||
|
Camera scopeCamera = null;
|
|||
|
|
|||
|
bool isAiming = false;
|
|||
|
|
|||
|
Utils utils = new Utils();
|
|||
|
void Update()
|
|||
|
{
|
|||
|
if (!utils.gameIsReady())
|
|||
|
|
|||
|
{
|
|||
|
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 (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}%");
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (Camera.main.rect != defaultMainCameraRect && setupDone)
|
|||
|
{
|
|||
|
Logger.LogInfo("Restoring default render resolution");
|
|||
|
Camera.main.rect = defaultMainCameraRect;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|