2024-11-01 16:55:46 +08:00

61 lines
1.4 KiB
C#

using System;
using UnityEngine;
[RequireComponent(typeof(MeshRenderer))]
public class ScreenController : MonoBehaviour
{
public LoadingBar controlPanel;
private Action m_Callback;
private MeshRenderer m_MeshRenderer;
private Animator m_ScreenAnimator;
private void Start()
{
m_MeshRenderer = GetComponent<MeshRenderer>();
m_ScreenAnimator = GetComponent<Animator>();
}
public void TurnScreenOn()
{
if(SceneTransitionManager.IsAvailable())
{
m_MeshRenderer.material.SetTexture("_ScreenColor", SceneTransitionManager.GetScreenRT());
}
if (m_ScreenAnimator != null)
{
m_ScreenAnimator.SetBool("ScreenOn", true);
}
if(controlPanel != null)
{
controlPanel.TurnOn();
}
Shader.SetGlobalColor("_TransitionColor", m_MeshRenderer.material.GetColor("_TransitionEdgeColor"));
}
public void TurnScreenOff(Action callback)
{
m_Callback = callback;
if (m_ScreenAnimator != null)
{
m_ScreenAnimator.SetBool("ScreenOn", false);
}
if(controlPanel != null)
{
controlPanel.TurnOff();
}
}
//This is called by the animation clip when the screens have switched off
public void Callback()
{
if(m_Callback != null)
{
m_Callback();
}
}
}