Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/PlayerManager.cs
2026-03-04 10:03:45 +08:00

85 lines
2.3 KiB
C#

using System;
using System.Collections;
using GPUInstancer;
using UnityEngine;
public class PlayerManager : Singleton<PlayerManager>
{
public FreeCamera freeCamera;
[HideInInspector]
public bool isFreeCamera;
private GPUInstancerTreeManager gpuiTreeManager;
private GPUInstancerDetailManager gpuiDetailManager;
public static event Action OnAfterSettingCharacter;
private void Start()
{
gpuiTreeManager = UnityEngine.Object.FindObjectOfType<GPUInstancerTreeManager>();
gpuiDetailManager = UnityEngine.Object.FindObjectOfType<GPUInstancerDetailManager>();
StartCoroutine(SetupCharacter());
}
private void Update()
{
if (InputManager.isFreeCamera)
{
ShowHideFreeCamera();
}
}
private IEnumerator SetupCharacter()
{
yield return null;
FScriptsHandler.Instance.m_PlayerMain.gameObject.SetActive(value: true);
if ((bool)gpuiDetailManager)
{
gpuiDetailManager.SetCamera(Camera.main);
gpuiDetailManager.InitializeCameraData();
}
if ((bool)gpuiTreeManager)
{
gpuiTreeManager.SetCamera(Camera.main);
gpuiTreeManager.InitializeCameraData();
}
yield return null;
PlayerManager.OnAfterSettingCharacter?.Invoke();
}
private void ShowHideFreeCamera()
{
if (!GameManager.Instance.isDevModeAllowed || (bool)FScriptsHandler.Instance.m_PlayerMain.currentRod)
{
return;
}
isFreeCamera = !isFreeCamera;
if (isFreeCamera)
{
FScriptsHandler.Instance.m_PlayerMain.gameObject.SetActive(value: false);
freeCamera = UnityEngine.Object.Instantiate(FScriptsHandler.Instance.FreeCameraPrefab, FScriptsHandler.Instance.PlayerTransformPoint.position, FScriptsHandler.Instance.PlayerTransformPoint.rotation).GetComponent<FreeCamera>();
if ((bool)gpuiDetailManager)
{
gpuiDetailManager.SetCamera(freeCamera.GetComponent<Camera>());
}
if ((bool)gpuiTreeManager)
{
gpuiTreeManager.SetCamera(freeCamera.GetComponent<Camera>());
}
isFreeCamera = true;
Cursor.visible = false;
FScriptsHandler.Instance.m_PlayerMain.currentCameraView = freeCamera.GetComponent<Camera>();
}
else
{
UnityEngine.Object.Destroy(freeCamera.gameObject);
isFreeCamera = false;
Cursor.visible = false;
FScriptsHandler.Instance.m_PlayerMain.currentCameraView = FScriptsHandler.Instance.m_PlayerMain.m_Camera;
StartCoroutine(SetupCharacter());
}
}
}