mirror of
https://github.com/ppy/osu.git
synced 2024-11-15 05:57:29 +08:00
Merge pull request #11113 from ekrctb/fix-scrolling-wrong-layout-one-frame
Fix scrolling hit object displayed in wrong position for one frame
This commit is contained in:
commit
87da6b3270
@ -225,10 +225,19 @@ namespace osu.Game.Rulesets.UI.Scrolling
|
||||
hitObject.LifetimeStart = computeOriginAdjustedLifetimeStart(hitObject);
|
||||
|
||||
toComputeLifetime.Clear();
|
||||
}
|
||||
|
||||
// only AliveObjects need to be considered for layout (reduces overhead in the case of scroll speed changes).
|
||||
protected override void UpdateAfterChildrenLife()
|
||||
{
|
||||
base.UpdateAfterChildrenLife();
|
||||
|
||||
// We need to calculate hit object positions (including nested hit objects) as soon as possible after lifetimes
|
||||
// to prevent hit objects displayed in a wrong position for one frame.
|
||||
// Only AliveObjects need to be considered for layout (reduces overhead in the case of scroll speed changes).
|
||||
foreach (var obj in AliveObjects)
|
||||
{
|
||||
updatePosition(obj, Time.Current);
|
||||
|
||||
if (layoutComputed.Contains(obj))
|
||||
continue;
|
||||
|
||||
@ -293,15 +302,6 @@ namespace osu.Game.Rulesets.UI.Scrolling
|
||||
}
|
||||
}
|
||||
|
||||
protected override void UpdateAfterChildrenLife()
|
||||
{
|
||||
base.UpdateAfterChildrenLife();
|
||||
|
||||
// We need to calculate hitobject positions as soon as possible after lifetimes so that hitobjects get the final say in their positions
|
||||
foreach (var obj in AliveObjects)
|
||||
updatePosition(obj, Time.Current);
|
||||
}
|
||||
|
||||
private void updatePosition(DrawableHitObject hitObject, double currentTime)
|
||||
{
|
||||
switch (direction.Value)
|
||||
|
Loading…
Reference in New Issue
Block a user