using System; using System.Collections; using GPUInstancer; using UnityEngine; public class PlayerManager : Singleton { 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(); gpuiDetailManager = UnityEngine.Object.FindObjectOfType(); 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(); if ((bool)gpuiDetailManager) { gpuiDetailManager.SetCamera(freeCamera.GetComponent()); } if ((bool)gpuiTreeManager) { gpuiTreeManager.SetCamera(freeCamera.GetComponent()); } isFreeCamera = true; Cursor.visible = false; FScriptsHandler.Instance.m_PlayerMain.currentCameraView = freeCamera.GetComponent(); } else { UnityEngine.Object.Destroy(freeCamera.gameObject); isFreeCamera = false; Cursor.visible = false; FScriptsHandler.Instance.m_PlayerMain.currentCameraView = FScriptsHandler.Instance.m_PlayerMain.m_Camera; StartCoroutine(SetupCharacter()); } } }