Files
2024-11-20 15:21:28 +01:00

87 lines
1.8 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Camera)]
[Tooltip("Fade to a fullscreen Color. NOTE: Uses OnGUI so requires a PlayMakerGUI component in the scene.")]
public class CameraFadeOut : FsmStateAction
{
[RequiredField]
[Tooltip("Color to fade to. E.g., Fade to black.")]
public FsmColor color;
[RequiredField]
[HasFloatSlider(0,10)]
[Tooltip("Fade out time in seconds.")]
public FsmFloat time;
[Tooltip("Event to send when finished.")]
public FsmEvent finishEvent;
[Tooltip("Ignore TimeScale. Useful if the game is paused.")]
public bool realTime;
public override void Reset()
{
color = Color.black;
time = 1.0f;
finishEvent = null;
}
private float startTime;
private float currentTime;
private Color colorLerp;
public override void OnEnter()
{
startTime = FsmTime.RealtimeSinceStartup;
currentTime = 0f;
colorLerp = Color.clear;
}
public override void OnUpdate()
{
if (realTime)
{
currentTime = FsmTime.RealtimeSinceStartup - startTime;
}
else
{
currentTime += Time.deltaTime;
}
colorLerp = Color.Lerp(Color.clear, color.Value, currentTime/time.Value);
if (currentTime > time.Value)
{
if (finishEvent != null)
{
Fsm.Event(finishEvent);
}
// Don't finish since it will stop drawing the fullscreen color
//Finish();
}
}
public override void OnGUI()
{
var guiColor = GUI.color;
GUI.color = colorLerp;
GUI.DrawTexture(new Rect(0,0,Screen.width, Screen.height), ActionHelpers.WhiteTexture);
GUI.color = guiColor;
}
#if UNITY_EDITOR
public override float GetProgress()
{
return Mathf.Min(currentTime/time.Value , 1f);
}
#endif
}
}