diff --git a/osu.Game/Audio/SampleInfo.cs b/osu.Game/Audio/SampleInfo.cs index 566813dd44..64a9aa50a0 100644 --- a/osu.Game/Audio/SampleInfo.cs +++ b/osu.Game/Audio/SampleInfo.cs @@ -2,9 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; -using osu.Framework.Audio; using osu.Framework.Audio.Sample; -using osu.Framework.Configuration; namespace osu.Game.Audio { @@ -19,8 +17,7 @@ namespace osu.Game.Audio public SampleChannel GetChannel(SampleManager manager) { var channel = manager.Get($"Gameplay/{Bank}-{Name}"); - - channel.AddAdjustment(AdjustableProperty.Volume, new BindableDouble(Volume / 100.0)); + channel.Volume.Value = Volume / 100.0; return channel; } diff --git a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs index 8cfdda0413..47c4c4d05c 100644 --- a/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs @@ -84,25 +84,23 @@ namespace osu.Game.Rulesets.Objects.Drawables [BackgroundDependencyLoader] private void load(AudioManager audio) { - foreach (SampleInfo sample in HitObject.Samples) + if (HitObject.SampleControlPoint == null) + throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)} must always have an attached {nameof(HitObject.SampleControlPoint)}."); + + foreach (SampleInfo s in HitObject.Samples) { - if (HitObject.SampleControlPoint == null) - throw new ArgumentNullException(nameof(HitObject.SampleControlPoint), $"{nameof(HitObject)} must always have an attached {nameof(HitObject.SampleControlPoint)}."); + SampleInfo localSampleInfo = new SampleInfo + { + Bank = s.Bank ?? HitObject.SampleControlPoint.SampleBank, + Name = s.Name, + Volume = s.Volume > 0 ? s.Volume : HitObject.SampleControlPoint.SampleVolume + }; - var bank = sample.Bank; - if (string.IsNullOrEmpty(bank)) - bank = HitObject.SampleControlPoint.SampleBank; - - int volume = sample.Volume; - if (volume == 0) - volume = HitObject.SampleControlPoint.SampleVolume; - - SampleChannel channel = audio.Sample.Get($@"Gameplay/{bank}-{sample.Name}"); + SampleChannel channel = localSampleInfo.GetChannel(audio.Sample); if (channel == null) continue; - channel.Volume.Value = volume; Samples.Add(channel); } }