77 lines
2.5 KiB
C#
Raw Normal View History

2022-09-08 21:29:16 +02:00
using BepInEx;
using BepInEx.Configuration;
using EFT;
using UnityEngine;
using Comfort.Common;
2022-09-11 18:48:53 +02:00
using System.Collections;
2022-09-08 21:29:16 +02:00
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;
Camera scopeCamera = null;
bool isAiming = false;
2022-09-11 18:48:53 +02:00
bool doneOnce = false;
2022-09-08 21:29:16 +02:00
Utils utils = new Utils();
void Update()
{
if (!utils.gameIsReady())
{
return;
}
if (Camera.allCamerasCount < 1) return;
var handsController = ((Singleton<GameWorld>.Instance.RegisteredPlayers[0].HandsController));
isAiming = handsController.IsAiming;
2022-09-11 18:48:53 +02:00
if (isAiming && !doneOnce)
2022-09-08 21:29:16 +02:00
{
if (Camera.main == null || Camera.allCamerasCount <= 1) return;
if (scopeCamera == null) scopeCamera = Camera.allCameras[1];
2022-09-11 18:48:53 +02:00
scopeCamera = Camera.allCameras[1];
StartCoroutine(setScaledCameraRes());
doneOnce = true;
2022-09-08 21:29:16 +02:00
return;
}
2022-09-11 18:48:53 +02:00
if(!isAiming && doneOnce)
2022-09-08 21:29:16 +02:00
{
2022-09-11 18:48:53 +02:00
StartCoroutine(unsetScaledCameraRes());
doneOnce = false;
return;
2022-09-08 21:29:16 +02:00
}
}
2022-09-11 18:48:53 +02:00
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;
}
2022-09-08 21:29:16 +02:00
}
}