diff --git a/data_static/glide/web_audio_html.xml b/data_static/glide/web_audio_html.xml
index 60b7a52b..b0e8ff4a 100644
--- a/data_static/glide/web_audio_html.xml
+++ b/data_static/glide/web_audio_html.xml
@@ -144,7 +144,9 @@ debug.setValue = (id, value) => {
Logic to handle each individual Engine Stream
*/
-let DEFAULT_STREAM_PARAMETERS = {};
+let DEFAULT_STREAM_PARAMETERS = {
+ fadeDist: 2500
+};
class EngineStream {
constructor(id, streamManager) {
@@ -196,13 +198,13 @@ class EngineStream {
this.pannerNode = new PannerNode(context, {
panningModel: "equalpower", //"HRTF",
- distanceModel: "inverse",
+ distanceModel: "linear",
positionX: this.position[0],
positionY: this.position[1],
positionZ: this.position[2],
- refDistance: this.params.fadeDist * 0.1,
+ refDistance: this.params.fadeDist * 0.5,
maxDistance: this.params.fadeDist,
- rolloffFactor: 0.8
+ rolloffFactor: 1.0
});
this.pannerNode.channelCount = 1;
@@ -239,10 +241,11 @@ class EngineStream {
this.compressorNode = undefined;
// Remove references to data
- this.layers = undefined;
+ this.layers = {};
this.position = undefined;
this.inputs = undefined;
this.params = undefined;
+ this.isPlaying = false;
}
setPosition(x, y, z) {
@@ -268,6 +271,13 @@ class EngineStream {
const layer = this.layers[id];
+ // Remove event handlers from the load request, if it exists
+ if (layer.loadRequest) {
+ layer.loadRequest.onload = null;
+ layer.loadRequest.onerror = null;
+ layer.loadRequest.onabort = null;
+ }
+
// Abort an existing download request, if it is active
if (layer.loadRequest && layer.loadRequest.readyState < 4) {
layer.loadRequest.abort();
@@ -386,8 +396,10 @@ class EngineStream {
const inputs = this.inputs;
const params = this.params;
- this.pannerNode.refDistance = params.fadeDist * 0.1;
- this.pannerNode.maxDistance = params.fadeDist;
+ if (params.fadeDist > 0) {
+ this.pannerNode.refDistance = params.fadeDist * 0.5;
+ this.pannerNode.maxDistance = params.fadeDist;
+ }
let baseVol = params.volume * this.volumeMultiplier;
let pitch = 1;