public static List <HitsoundEvent> GetHitsounds(List <SamplePackage> samplePackages, ref Dictionary <SampleGeneratingArgs, SampleSoundGenerator> loadedSamples, ref Dictionary <SampleGeneratingArgs, string> names, ref Dictionary <SampleGeneratingArgs, Vector2> positions) { HashSet <SampleGeneratingArgs> allSampleArgs = new HashSet <SampleGeneratingArgs>(); foreach (SamplePackage sp in samplePackages) { allSampleArgs.UnionWith(sp.Samples.Select(o => o.SampleArgs)); } if (loadedSamples == null) { loadedSamples = SampleImporter.ImportSamples(allSampleArgs); } if (names == null) { names = HitsoundExporter.GenerateSampleNames(allSampleArgs, loadedSamples); } if (positions == null) { positions = HitsoundExporter.GenerateHitsoundPositions(allSampleArgs); } var hitsounds = new List <HitsoundEvent>(); foreach (var p in samplePackages) { foreach (var s in p.Samples) { hitsounds.Add(new HitsoundEvent(p.Time, positions[s.SampleArgs], s.OutsideVolume, names[s.SampleArgs], s.SampleSet, s.SampleSet, 0, s.Whistle, s.Finish, s.Clap)); } } return(hitsounds); }
public static List <HitsoundEvent> GetHitsounds(List <SamplePackage> samplePackages, ref Dictionary <SampleGeneratingArgs, SampleSoundGenerator> loadedSamples, ref Dictionary <SampleGeneratingArgs, string> names, ref Dictionary <SampleGeneratingArgs, Vector2> positions, bool maniaPositions = false, bool includeRegularHitsounds = true, bool allowNamingGrowth = false, bool validateSampleFile = true, SampleGeneratingArgsComparer comparer = null) { if (comparer == null) { comparer = new SampleGeneratingArgsComparer(); } HashSet <SampleGeneratingArgs> allSampleArgs = new HashSet <SampleGeneratingArgs>(comparer); foreach (SamplePackage sp in samplePackages) { allSampleArgs.UnionWith(sp.Samples.Select(o => o.SampleArgs)); } if (loadedSamples == null) { loadedSamples = SampleImporter.ImportSamples(allSampleArgs, comparer); } if (names == null) { names = HitsoundExporter.GenerateSampleNames(allSampleArgs, loadedSamples, validateSampleFile, comparer); } if (positions == null) { positions = maniaPositions ? HitsoundExporter.GenerateManiaHitsoundPositions(allSampleArgs, comparer) : HitsoundExporter.GenerateHitsoundPositions(allSampleArgs, comparer); } var hitsounds = new List <HitsoundEvent>(); foreach (var p in samplePackages) { foreach (var s in p.Samples) { string filename; if (names.ContainsKey(s.SampleArgs)) { filename = names[s.SampleArgs]; } else { // Validate the sample because we expect only valid samples to be present in the sample schema if (SampleImporter.ValidateSampleArgs(s.SampleArgs, loadedSamples, validateSampleFile)) { if (allowNamingGrowth) { HitsoundExporter.AddNewSampleName(names, s.SampleArgs, loadedSamples); filename = names[s.SampleArgs]; } else { throw new Exception($"Given sample schema doesn't support sample ({s.SampleArgs}) and growth is disabled."); } } else { filename = string.Empty; } } if (includeRegularHitsounds) { hitsounds.Add(new HitsoundEvent(p.Time, positions[s.SampleArgs], s.OutsideVolume, filename, s.SampleSet, s.SampleSet, 0, s.Whistle, s.Finish, s.Clap)); } else { hitsounds.Add(new HitsoundEvent(p.Time, positions[s.SampleArgs], s.OutsideVolume, filename, SampleSet.Auto, SampleSet.Auto, 0, false, false, false)); } } } return(hitsounds); }