Commit Graph

38 Commits

Author SHA1 Message Date
Dean Herbert 27c497145f Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0 2022-12-16 18:16:26 +09:00
andy840119 6c964dee30 Rename the nullable disable annotation in the Audio namespace and mark some properties as nullable. 2022-07-31 22:00:14 +08:00
Dan Balasescu f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Bartłomiej Dach 15d9147edd Ensure equality member consistency for SampleInfo
The previous implementation of `SampleInfo`'s equality members was not
completely correct in its treatment of the `sampleNames` array. While
`Equals()` compared the values of `sampleNames` using `SequenceEqual()`,
therefore performing a structural check that inspects the contents of
both arrays, `GetHashCode()` used `HashCode.Combine()` directly on the
arrays, therefore operating on reference equality. This could cause the
pooling mechanism of samples to fail, as pointed out in #11079.

To resolve, change the `GetHashCode()` implementation such that it also
considers the contents of the array rather than just the reference to
the array itself. This is achieved by leveraging
`StructuralEqualityComparer`.

Additionally, as a bonus, an array sort was added to the constructor of
`SampleInfo`. This is intended to be a "canonicalisation" processing
step for the array of sample names. Thanks to that sort, two instances
of `SampleInfo` that have the same sample names but permutated will also
turn out to be equal and have the same hash codes, given the
implementation of both equality members. This gives `SampleInfo`
set-like semantics.
2020-12-03 23:25:53 +01:00
smoogipoo 730b14b5bb Add initial hit sample pooling 2020-11-19 19:51:09 +09:00
Dean Herbert c9a85587fb Allow SampleInfo to specify fallback sample lookup names 2020-10-30 11:59:29 +09:00
Dean Herbert 740bdee125 Apply remaining uncaught changes 2020-01-20 23:59:21 +09:00
Dean Herbert 60ea3d4e1a Fix skinning support for combobreak 2019-06-30 21:58:30 +09:00
Dean Herbert 26d53d06a9 Fix remaining issues 2019-02-28 13:31:40 +09:00
Dean Herbert 8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
Dean Herbert 14c3cc70b1
Prefer namespace lookups first 2018-07-10 15:23:47 +09:00
Dean Herbert ba258b8a05 Fix lack of fallback logic for custom bank samples
Closes #2966.

---

Was causing some beatmaps to not play all of their hitsounds
2018-07-10 02:56:22 +09:00
Dean Herbert 8f04acc506 Add missing xmldoc 2018-07-05 20:16:55 +09:00
smoogipoo 189194ee8d Don't include empty namespace in sample lookup 2018-07-02 14:35:03 +09:00
smoogipoo 310c4a7d6c Make SampleInfo choose its own lookup name 2018-07-02 14:18:41 +09:00
smoogipoo 8b0c6a4c85 Make SampleControlPoint clone the existing SampleInfo 2018-07-02 14:17:19 +09:00
Dean Herbert 32a74f95a5 Normalize all the line endings 2018-04-13 18:26:38 +09:00
Dean Herbert 768e0a4e2a Add SkinnableSound class
Tidy things up, move logic out of SampleInfo.
2018-02-24 22:47:14 +09:00
Dean Herbert 6ceabfe19e Add basic hitsound skinning 2018-02-23 13:38:12 +09:00
Dean Herbert 37d393bca0 Update licence headers 2018-01-05 20:21:19 +09:00
Dean Herbert 4e6988d21b As it turns out, native directory separators are not supported 2017-12-28 01:05:50 +09:00
Dean Herbert 3f73a9a693 Add better sample fallback logic
Also adds support for null channels at InputDrum level.
2017-12-27 21:44:04 +09:00
Dean Herbert 46ef17354e Simplify path construction 2017-12-27 21:05:16 +09:00
smoogipoo 9690591593 Make taiko use namespaced hitsounds
This is a temporary solution for now that uses DrawableHitObject.SampleNamespace for the override. We will not want to do this going forward, and instead have the rulesets add their custom resource stores to the games', but that requires deciding where/when to apply/remove such resource stores, and is probably left to skinning.
2017-12-26 19:55:56 +09:00
Dean Herbert 2db68df999 Simplify DrawableHitObject's sample load code 2017-12-23 17:20:14 +09:00
Dean Herbert 9ca03c0209 Simplify and tidy sample retrieval
Less static weirdness
2017-12-23 16:46:02 +09:00
Dean Herbert 5026c7a95e SoundControlPoint -> SampleControlPoint 2017-12-23 16:34:34 +09:00
Dean Herbert 46865bbacd Merge remote-tracking branch 'upstream/master' into taiko-hitsounds-fix
# Conflicts:
#	osu.Game/Audio/SampleInfo.cs
2017-12-23 14:50:35 +09:00
smoogipoo a3fcc0b60c Back to using SortedLists 2017-12-21 19:40:41 +09:00
smoogipoo cb7e192aff Determine SampleInfo defaults in DrawableHitObject 2017-12-21 16:02:33 +09:00
FreezyLemon 4b3cf0773d Various CI adjustments 2017-12-08 09:52:58 +01:00
FreezyLemon 61a6a2919e Fixed multiple critical bugs and changed allSamples to a normal Dictionary for faster access 2017-12-08 09:41:13 +01:00
FreezyLemon d2f3d5a807 Added basic SampleInfo.FromSoundPoint and GetChannel methods 2017-12-07 23:09:51 +01:00
smoogipoo 851c20aff0 Add a few comments 2017-12-07 11:17:32 +09:00
smoogipoo ea2c67ca5f Fix incorrect serialization condition 2017-12-07 11:10:46 +09:00
smoogipoo 41b607c165 Dont serialize hitobject sample properties copied from the control point 2017-12-07 03:40:43 +09:00
smoogipooo 4cc309e5a7 Make hit sounds into consts. 2017-04-06 12:14:06 +09:00
smoogipooo eb82a4c090 Back to using SampleInfo + fix taiko beatmap conversion. 2017-04-06 11:41:16 +09:00