mirror of https://github.com/ppy/osu
Fix scrolling hit object displayed in wrong position for one frame
This commit is contained in:
parent
8757c89246
commit
a548269c34
|
@ -225,10 +225,19 @@ protected override void Update()
|
|||
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 @@ private void updateLayoutRecursive(DrawableHitObject hitObject)
|
|||
}
|
||||
}
|
||||
|
||||
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