|
|
|
@@ -47,6 +47,34 @@ export class Soundscape { |
|
|
|
this.filters.push(filter); |
|
|
|
} |
|
|
|
|
|
|
|
removeFilter(filter: Filter): void { |
|
|
|
if (this.filters.includes(filter)) { |
|
|
|
const index = this.filters.indexOf(filter); |
|
|
|
|
|
|
|
if (this.filters.length == 1) { |
|
|
|
this.filterBus.disconnect(); |
|
|
|
this.filterBus.connect(context.destination); |
|
|
|
} else if (index == 0) { |
|
|
|
this.filterBus.disconnect(); |
|
|
|
this.filterBus.connect(this.filters[1].input); |
|
|
|
} else if (index == this.filters.length - 1) { |
|
|
|
this.filters[index - 1].output.disconnect(); |
|
|
|
this.filters[index - 1].output.connect(context.destination); |
|
|
|
} else { |
|
|
|
this.filters[index - 1].output.disconnect(); |
|
|
|
this.filters[index - 1].output.connect(this.filters[index + 1].input); |
|
|
|
} |
|
|
|
|
|
|
|
this.filters = this.filters.filter((x) => x !== filter); |
|
|
|
} else { |
|
|
|
console.warn( |
|
|
|
"Tried to remove a filter from a Soundscape that wasn't using it" |
|
|
|
); |
|
|
|
console.warn(this); |
|
|
|
console.warn(filter); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
start(): void { |
|
|
|
setInterval(() => { |
|
|
|
this.sources.forEach((source) => source.tick(100)); |
|
|
|
|