1
0
mirror of synced 2024-12-05 02:57:57 +01:00
WACVR/Assets/Script/Configuration/SpectatorManager.cs
2022-10-03 02:04:54 +02:00

81 lines
3.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class SpectatorManager : MonoBehaviour
{
CameraSmooth cameraSmooth;
Camera SpectatorCam;
public Transform SpectatorFPTarget;
public Transform SpectatorTPTarget;
void Start()
{
cameraSmooth = GetComponent<CameraSmooth>();
SpectatorCam = GetComponent<Camera>();
ConfigManager.onConfigChanged += ApplyConfig;
ConfigManager.EnsureInitialization();
ApplyConfig();
ApplyTPCamTransform();
}
// Update is called once per frame
void ApplyConfig()
{
if (SpectatorCam == null || cameraSmooth == null || SpectatorFPTarget == null || SpectatorTPTarget == null)
return;
switch ((int)ConfigManager.config.SpectatorMode)
{
case 0:
if (gameObject.activeSelf)
gameObject.SetActive(false);
break;
case 1:
if (!gameObject.activeSelf)
gameObject.SetActive(true);
cameraSmooth.target = SpectatorFPTarget;
cameraSmooth.smoothSpeed = (float)ConfigManager.config.SpectatorSmooth;
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("TPBlock"); // Enable TPBlock Layer Mask
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("FPBlock")); // Disable FPBlock Layer Mask
break;
case 2:
if (!gameObject.activeSelf)
gameObject.SetActive(true);
cameraSmooth.target = SpectatorTPTarget;
cameraSmooth.smoothSpeed = 1;
SpectatorCam.cullingMask &= ~(1 << LayerMask.NameToLayer("TPBlock")); // Disable TPBlock Layer Mask
SpectatorCam.cullingMask |= 1 << LayerMask.NameToLayer("FPBlock"); // Enable FPBlock Layer Mask
break;
}
SpectatorCam.fieldOfView = (float)ConfigManager.config.SpectatorFOV;
string fpsString = Enum.GetName(typeof(Config.captureFPS), ConfigManager.config.CaptureFPS);
Application.targetFrameRate = int.Parse(fpsString.Remove(0, 3));
}
void ApplyTPCamTransform()
{
if (SpectatorTPTarget == null)
return;
SpectatorTPTarget.position = new Vector3(ConfigManager.config.TPCamPosition[0],
ConfigManager.config.TPCamPosition[1],
ConfigManager.config.TPCamPosition[2]);
SpectatorTPTarget.rotation = Quaternion.Euler(ConfigManager.config.TPCamRotation[0],
ConfigManager.config.TPCamRotation[1],
ConfigManager.config.TPCamRotation[2]);
}
public void SaveTransform()
{
if (SpectatorTPTarget == null)
return;
ConfigManager.config.TPCamPosition[0] = SpectatorTPTarget.position.x;
ConfigManager.config.TPCamPosition[1] = SpectatorTPTarget.position.y;
ConfigManager.config.TPCamPosition[2] = SpectatorTPTarget.position.z;
ConfigManager.config.TPCamRotation[0] = SpectatorTPTarget.rotation.eulerAngles.x;
ConfigManager.config.TPCamRotation[1] = SpectatorTPTarget.rotation.eulerAngles.y;
ConfigManager.config.TPCamRotation[2] = SpectatorTPTarget.rotation.eulerAngles.z;
ConfigManager.SaveFile();
}
}