IHaveLocalTime

v1.0

This is the interface to use to create an object that makes use of the Magic Time system. The Magic Time User is a MonoBehaviour that is ready to go with all the required methods and properties.

I would generally suggest you inherit your characters and other objects from MagicTimeUser, unless you're create a new custom class to use instead of MagicTimeUser.

public interface IHaveLocalTime
{
    /// The value of the local time scale specific to this MagicTimeUser.
    float LocalTimeScaleValue { get; set; }

    /// Returns the LocalTimeScale that is specific to this MagicTimeUser.
    public LocalTimeScale LocalTimeScale { get; }
    
    /// Subscribes to a LocalTimeScale.
    void SubscribeToLocalTimeScale(LocalTimeScale myTimeScale);

    /// Unsubscribes from a LocalTimeScale.
    void UnsubscribeFromLocalTimeScale(LocalTimeScale timeScale);

    /// The list of currently subscribed LocalTimeScales.
    List<LocalTimeScale> SubscribedTimeScales { get; }

    /// DeltaTime adjusted by the combined LocalTimeScales.
    float DeltaTime { get; }

    /// UnscaledDeltaTime adjusted by the combined LocalTimeScales.
    float UnscaledDeltaTime { get; }

    /// FixedDeltaTime adjusted by the combined LocalTimeScales.
    float FixedDeltaTime { get; }
    
    /// Called when a subscribed LocalTimeScale is destroyed.
    void OnTimeScaleDestroyed(LocalTimeScale timeScale);

    /// Used to subscribe to the initial time scales, often called from Awake();
    IEnumerator SubscribeToInitialTimeScales();

    /// Called when the TimeScale is changed.
    void OnTimeScaleChanged(float value, LocalTimeScale localTimeScale);
    
    /// A reference to the GameObject that this MagicTimeUser is attached to.
    GameObject GameObject { get; }
}

Last updated