mirror of
https://github.com/ppy/osu.git
synced 2024-12-13 08:32:57 +08:00
Fix storyboard sample lifetimes not set if seeked past
This commit is contained in:
parent
281c2041b2
commit
d28eb399a4
@ -61,28 +61,32 @@ namespace osu.Game.Storyboards.Drawables
|
||||
{
|
||||
base.Update();
|
||||
|
||||
// Check if we've yet to pass the sample start time.
|
||||
if (Time.Current < sampleInfo.StartTime)
|
||||
{
|
||||
// We've rewound before the start time of the sample
|
||||
Stop();
|
||||
|
||||
// In the case that the user fast-forwards to a point far beyond the start time of the sample,
|
||||
// we want to be able to fall into the if-conditional below (therefore we must not have a life time end)
|
||||
// Playback has stopped, but if the user fast-forwards to a point after the start time of the sample then
|
||||
// we must not have a lifetime end in order to continue receiving updates and start the sample below.
|
||||
LifetimeStart = sampleInfo.StartTime;
|
||||
LifetimeEnd = double.MaxValue;
|
||||
|
||||
return;
|
||||
}
|
||||
else if (Time.Current - Time.Elapsed <= sampleInfo.StartTime)
|
||||
|
||||
// Ensure that we've elapsed from a point before the sample's start time before playing.
|
||||
if (Time.Current - Time.Elapsed <= sampleInfo.StartTime)
|
||||
{
|
||||
// We've passed the start time of the sample. We only play the sample if we're within an allowable range
|
||||
// from the sample's start, to reduce layering if we've been fast-forwarded far into the future
|
||||
if (!RequestedPlaying && Time.Current - sampleInfo.StartTime < allowable_late_start)
|
||||
Play();
|
||||
|
||||
// In the case that the user rewinds to a point far behind the start time of the sample,
|
||||
// we want to be able to fall into the if-conditional above (therefore we must not have a life time start)
|
||||
LifetimeStart = double.MinValue;
|
||||
LifetimeEnd = sampleInfo.StartTime;
|
||||
}
|
||||
|
||||
// Playback has started, but if the user rewinds to a point before the start time of the sample then
|
||||
// we must not have a lifetime start in order to continue receiving updates and stop the sample above.
|
||||
LifetimeStart = double.MinValue;
|
||||
LifetimeEnd = sampleInfo.StartTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user