// Copyright (c) Pixel Crushers. All rights reserved.
using UnityEngine;
namespace PixelCrushers.DialogueSystem.SequencerCommands
{
///
/// Implements sequencer command: "Fade(in|out, [, duration[, webcolor]])".
///
/// Arguments:
/// -# in or out.
/// -# (Optional) Duration in seconds. Default: 1.
/// -# (Optional) Web color in "\#rrggbb" format. Default: Black.
///
[AddComponentMenu("")] // Hide from menu.
public class SequencerCommandFade : SequencerCommand
{
private const float SmoothMoveCutoff = 0.05f;
private const int FaderCanvasSortOrder = 32760;
private string direction;
private float duration;
private Color color;
private bool fadeIn;
private bool stay;
private bool unstay;
float startTime;
float endTime;
private static Canvas faderCanvas = null;
private static UnityEngine.UI.Image faderImage = null;
public void Awake()
{
// Get the values of the parameters:
direction = GetParameter(0);
duration = GetParameterAsFloat(1, 1);
color = Tools.WebColor(GetParameter(2, "#000000"));
if (DialogueDebug.logInfo) Debug.Log(string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}: Sequencer: Fade({1}, {2}, {3})", new System.Object[] { DialogueDebug.Prefix, direction, duration, color }));
stay = string.Equals(direction, "stay", System.StringComparison.OrdinalIgnoreCase);
unstay = string.Equals(direction, "unstay", System.StringComparison.OrdinalIgnoreCase);
fadeIn = unstay || string.Equals(direction, "in", System.StringComparison.OrdinalIgnoreCase);
// Create fader canvas and image:
if (faderCanvas == null)
{
faderCanvas = new GameObject("Canvas (Fader)", typeof(Canvas)).GetComponent