1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-14 04:12:55 +08:00

Improve previous hitobject lookup efficient and correctness

This commit is contained in:
Dean Herbert 2023-05-17 16:58:43 +09:00
parent 7d7d402d4e
commit e43f2c2c43

View File

@ -44,6 +44,8 @@ namespace osu.Game.Rulesets.Edit
private Bindable<double> startTimeBindable = null!;
private HitObject? getPreviousHitObject() => beatmap.HitObjects.TakeWhile(h => h.StartTime <= startTimeBindable.Value).LastOrDefault();
[Resolved]
private IPlacementHandler placementHandler { get; set; } = null!;
@ -84,7 +86,7 @@ namespace osu.Game.Rulesets.Edit
protected void BeginPlacement(bool commitStart = false)
{
// Take the hitnormal sample of the last hit object
var lastHitNormal = beatmap.HitObjects.LastOrDefault(h => h.GetEndTime() < HitObject.StartTime)?.Samples?.FirstOrDefault(o => o.Name == HitSampleInfo.HIT_NORMAL);
var lastHitNormal = getPreviousHitObject()?.Samples?.FirstOrDefault(o => o.Name == HitSampleInfo.HIT_NORMAL);
if (lastHitNormal != null)
HitObject.Samples[0] = lastHitNormal;