// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Allocation; using osu.Framework.Timing; namespace osu.Framework.Graphics.Transforms { public interface ITransformable { /// /// Start a sequence of s with a (cumulative) relative delay applied. /// /// The offset in milliseconds from current time. Note that this stacks with other nested sequences. /// Whether this should be applied to all children. True by default. /// An to be used in a using() statement. IDisposable BeginDelayedSequence(double delay, bool recursive = true); /// /// Start a sequence of s from an absolute time value (adjusts ). /// /// The new value for . /// Whether this should be applied to all children. True by default. /// An to be used in a using() statement. /// Absolute sequences should never be nested inside another existing sequence. IDisposable BeginAbsoluteSequence(double newTransformStartTime, bool recursive = true); /// /// The current frame's time as observed by this class's s. /// FrameTimeInfo Time { get; } double TransformStartTime { get; } void AddTransform(Transform transform, ulong? customTransformID = null); void RemoveTransform(Transform toRemove); } }