FiE-Game/Assets/Cinema Director/System/Runtime/TimelineItems/Base/TimelineItem.cs

85 lines
2.6 KiB
C#
Raw Normal View History

2023-07-26 21:47:00 +02:00
using UnityEngine;
namespace CinemaDirector
{
/// <summary>
/// The basic building block of a Cutscene. Maintains a firetime
/// </summary>
[ExecuteInEditMode]
public abstract class TimelineItem : MonoBehaviour
{
[SerializeField]
protected float firetime = 0f;
/// <summary>
/// The firetime for this timeline item. Cannot be negative.
/// </summary>
public float Firetime
{
get { return this.firetime; }
set
{
firetime = value;
if (firetime < 0f)
{
firetime = 0f;
}
}
}
/// <summary>
/// Called when a cutscene begins or enters preview mode.
/// </summary>
public virtual void Initialize() { }
/// <summary>
/// Called when a cutscene ends or exits preview mode.
/// </summary>
public virtual void Stop() { }
/// <summary>
/// Called when a new timeline item is created from the Director panel.
/// Override to set defaults to your timeline items.
/// </summary>
public virtual void SetDefaults() { }
/// <summary>
/// Called when a new timeline item is created from the Director panel with a paired item.
/// Override to set defaults to your timeline items.
/// </summary>
/// <param name="PairedItem">The paired item of this timeline item.</param>
public virtual void SetDefaults(UnityEngine.Object PairedItem) { }
/// <summary>
/// The cutscene that this timeline item is associated with. Can return null.
/// </summary>
public Cutscene Cutscene
{
get { return ((this.TimelineTrack == null) ? null : this.TimelineTrack.Cutscene); }
}
/// <summary>
/// The track that this timeline item is associated with. Can return null.
/// </summary>
public TimelineTrack TimelineTrack
{
get
{
TimelineTrack track = null;
if (transform.parent != null)
{
track = base.transform.parent.GetComponentInParent<TimelineTrack>();
if (track == null)
{
Debug.LogError("No TimelineTrack found on parent!", this);
}
}
else
{
Debug.LogError("Timeline Item has no parent!", this);
}
return track;
}
}
}
}