// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Game.Audio; using osu.Game.Beatmaps.Timing; using osu.Game.Database; using System.Collections.Generic; namespace osu.Game.Modes.Objects { /// /// A HitObject describes an object in a Beatmap. /// /// HitObjects may contain more properties for which you should be checking through the IHas* types. /// /// public class HitObject { /// /// The time at which the HitObject starts. /// public double StartTime { get; set; } /// /// The samples to be played when this hit object is hit. /// public List Samples = new List(); /// /// Applies default values to this HitObject. /// /// The difficulty settings to use. /// The timing settings to use. public virtual void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty) { ControlPoint overridePoint; ControlPoint timingPoint = timing.TimingPointAt(StartTime, out overridePoint); foreach (var sample in Samples) { if (sample.Volume == 0) sample.Volume = (overridePoint ?? timingPoint)?.SampleVolume ?? 0; // If the bank is not assigned a name, assign it from the control point if (!string.IsNullOrEmpty(sample.Bank)) continue; sample.Bank = (overridePoint ?? timingPoint)?.SampleBank ?? @"normal"; } } } }