85 lines
2.3 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|