// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Game.Beatmaps.Samples; 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 sample banks to be played when this hit object is hit. /// public List SampleBanks = 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) { foreach (var bank in SampleBanks) { if (!string.IsNullOrEmpty(bank.Name) && bank.Name != @"none") continue; // If the bank is not assigned a name, assign it from the relevant timing point ControlPoint overridePoint; ControlPoint timingPoint = timing.TimingPointAt(StartTime, out overridePoint); bank.Name = (overridePoint ?? timingPoint)?.SampleBank.Name ?? string.Empty; bank.Volume = (overridePoint ?? timingPoint)?.SampleBank.Volume ?? 0; } } } }