diff --git a/src/assets/sfx/Chiptone_Settings/settings_SpawnBuildup.cpt b/src/assets/sfx/Chiptone_Settings/settings_SpawnBuildup.cpt new file mode 100755 index 0000000000000000000000000000000000000000..fb72bb1c0cdb868587f492a8862cc9f0d3cef85d Binary files /dev/null and b/src/assets/sfx/Chiptone_Settings/settings_SpawnBuildup.cpt differ diff --git a/src/assets/sfx/Chiptone_Settings/settings_TeleportArc.cpt b/src/assets/sfx/Chiptone_Settings/settings_TeleportArc.cpt new file mode 100755 index 0000000000000000000000000000000000000000..5d3430538890207b67d52f1555e747c2ab0186c6 Binary files /dev/null and b/src/assets/sfx/Chiptone_Settings/settings_TeleportArc.cpt differ diff --git a/src/assets/sfx/Chiptone_Settings/settings_tick.cpt b/src/assets/sfx/Chiptone_Settings/settings_tick.cpt new file mode 100755 index 0000000000000000000000000000000000000000..4135f4a621b44b84fde074dc40ac5f3341b6ae89 Binary files /dev/null and b/src/assets/sfx/Chiptone_Settings/settings_tick.cpt differ diff --git a/src/assets/sfx/Eb_blip.wav b/src/assets/sfx/Eb_blip.wav index 7428237df05a6655ba8a01a88878d43045967794..c8e8194d21e133ee2fb19b2ddc3e3b372cd89c4b 100644 Binary files a/src/assets/sfx/Eb_blip.wav and b/src/assets/sfx/Eb_blip.wav differ diff --git a/src/assets/sfx/pop.wav b/src/assets/sfx/pop.wav new file mode 100755 index 0000000000000000000000000000000000000000..b0fc22210c5114f8cc786e09d5816750cc667063 Binary files /dev/null and b/src/assets/sfx/pop.wav differ diff --git a/src/assets/sfx/suspense.wav b/src/assets/sfx/suspense.wav new file mode 100755 index 0000000000000000000000000000000000000000..3b9043984412fe96c8949a6927a051f66738e50b Binary files /dev/null and b/src/assets/sfx/suspense.wav differ diff --git a/src/assets/sfx/tack.wav b/src/assets/sfx/tack.wav new file mode 100755 index 0000000000000000000000000000000000000000..1f16efbdbbcf02548c16a4803da7f329948b4bec Binary files /dev/null and b/src/assets/sfx/tack.wav differ diff --git a/src/assets/sfx/teleportArc.wav b/src/assets/sfx/teleportArc.wav new file mode 100755 index 0000000000000000000000000000000000000000..cfedc3100094cc377ba7a9a0acb3c965a043819f Binary files /dev/null and b/src/assets/sfx/teleportArc.wav differ diff --git a/src/assets/sfx/tick.wav b/src/assets/sfx/tick.wav new file mode 100755 index 0000000000000000000000000000000000000000..c91e1b66c27a96bfcecdd95df64982f7209a66ca Binary files /dev/null and b/src/assets/sfx/tick.wav differ diff --git a/src/assets/sfx/welcome.wav b/src/assets/sfx/welcome.wav new file mode 100755 index 0000000000000000000000000000000000000000..9a85364db26dc7761926170547704ec023cc8f31 Binary files /dev/null and b/src/assets/sfx/welcome.wav differ diff --git a/src/components/scene-sound.js b/src/components/scene-sound.js index 249da3ebf130cca91a0ca6a544a3c33e9a3fc4b7..3454fa9ba6b9f50bcfea53d4e983964d47f14a27 100644 --- a/src/components/scene-sound.js +++ b/src/components/scene-sound.js @@ -5,11 +5,17 @@ AFRAME.registerComponent("scene-sound", { multiple: true, schema: { sound: { type: "string" }, - on: { type: "string" } + on: { type: "string" }, + off: { type: "string" } }, init() { const sound = this.el.components[`${this.attrName.replace("scene-", "")}`]; this.el.sceneEl.addEventListener(this.data.on, sound.playSound); + sound.stopSound = sound.stopSound.bind(sound); // wat + + if (this.data.off) { + this.el.sceneEl.addEventListener(this.data.off, sound.stopSound); + } } }); diff --git a/src/hub.html b/src/hub.html index 33bada3b71ba3093fe3ba03a6bde7a391e84d50c..6ecee5f04f1d91ab168c22853497067f5923d52d 100644 --- a/src/hub.html +++ b/src/hub.html @@ -68,29 +68,32 @@ <a-asset-item id="quack" src="./assets/sfx/quack.mp3" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="specialquack" src="./assets/sfx/specialquack.mp3" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-teleport_start" src="./assets/sfx/D_teleportStart.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-teleport_end" src="./assets/sfx/D_teleportEnd.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-teleport_start" src="./assets/sfx/teleportArc.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-teleport_end" src="./assets/sfx/quickTurn.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="sound_asset-snap_rotate" src="./assets/sfx/quickTurn.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="sound_asset-media_loaded" src="./assets/sfx/A_bendUp.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-hud_hover_start" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-hover" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="DISABLED_sound_asset-hover_off" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-cursor_distance_change_blocked" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-cursor_distance_changed" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-hud_click" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-toggle_mute" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-toggle_freeze" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-freeze" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-thaw" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-toggle_space_bubble" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-media_loading" src="./assets/sfx/suspense.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-hud_hover_start" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-grab" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-grab_off" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-pinned" src="./assets/sfx/tack.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-cursor_distance_change_blocked" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-cursor_distance_changed" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-hud_click" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-toggle_mute" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-toggle_freeze" src="./assets/sfx/Eb_blip.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-freeze" src="./assets/sfx/Eb_blip.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-thaw" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-toggle_space_bubble" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="sound_asset-spawn_pen" src="./assets/sfx/PenSpawn.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-increase_pen_radius" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-decrease_pen_radius" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-next_pen_color" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-prev_pen_color" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-increase_pen_radius" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-decrease_pen_radius" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-next_pen_color" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-prev_pen_color" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="sound_asset-start_draw" src="./assets/sfx/PenDraw1.wav" response-type="arraybuffer" preload="auto"></a-asset-item> - <a-asset-item id="sound_asset-stop_draw" src="./assets/sfx/tap_mellow.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-stop_draw" src="./assets/sfx/tick.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <a-asset-item id="sound_asset-camera_tool_took_snapshot" src="./assets/sfx/PicSnapHey.wav" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="sound_asset-welcome" src="./assets/sfx/welcome.wav" response-type="arraybuffer" preload="auto"></a-asset-item> <!-- Templates --> <template id="video-template"> @@ -174,10 +177,12 @@ destroy-at-extreme-distances set-yxz-order pinnable - sound__hover="src: #sound_asset-hover; on: hovered; poolSize: 1;" - sound__hoveroff ="src: #sound_asset-hover_off; on: unhovered; poolSize: 1;" - emit-state-change__hovered="state: hovered; transform: rising; event: hovered;" - emit-state-change__unhovered="state: hovered; transform: falling; event: unhovered;" + sound__grab="src: #sound_asset-grab; on: grabbed; poolSize: 1;" + sound__graboff ="src: #sound_asset-grab_off; on: ungrabbed; poolSize: 1;" + sound__pinned ="src: #sound_asset-pinned; on: pinned; poolSize: 1;" + emit-state-change__grabbed="state: grabbed; transform: rising; event: grabbed;" + emit-state-change__ungrabbed="state: grabbed; transform: falling; event: ungrabbed;" + emit-state-change__pinned="state: pinned; transform: rising; event: pinned;" > <a-entity class="interactable-ui" stop-event-propagation__grab-start="event: grab-start" stop-event-propagation__grab-end="event: grab-end"> <a-entity class="freeze-menu" visible-while-frozen="withinDistance: 3;"> @@ -205,10 +210,10 @@ sound__stop_draw="src: #sound_asset-stop_draw; on: stop_draw; poolSize: 2;" sound__increase_pen_radius="src: #sound_asset-increase_pen_radius; on: increase_pen_radius; poolSize: 2;" sound__decrease_pen_radius="src: #sound_asset-decrease_pen_radius; on: decrease_pen_radius; poolSize: 2;" - sound__hover="src: #sound_asset-hover; on: hovered; poolSize: 1;" - sound__hoveroff ="src: #sound_asset-hover_off; on: unhovered; poolSize: 1;" - emit-state-change__hovered="state: hovered; transform: rising; event: hovered;" - emit-state-change__unhovered="state: hovered; transform: falling; event: unhovered;" + sound__grab="src: #sound_asset-grab; on: grabbed; poolSize: 1;" + sound__graboff ="src: #sound_asset-grab_off; on: ungrabbed; poolSize: 1;" + emit-state-change__grabbed="state: grabbed; transform: rising; event: grabbed;" + emit-state-change__ungrabbed="state: grabbed; transform: falling; event: ungrabbed;" > <a-sphere id="pen" @@ -434,10 +439,10 @@ rotation pitch-yaw-rotator set-yxz-order - sound__teleport_start="positional: false; src: #sound_asset-teleport_start; on: nothing; poolSize: 2;" - scene-sound__teleport_start="on: right-teleport_down;" - sound__teleport_start2="positional: false; src: #sound_asset-teleport_start; on: nothing; poolSize: 2;" - scene-sound__teleport_start2="on: left-teleport_down;" + sound__teleport_start="positional: false; src: #sound_asset-teleport_start; on: nothing; poolSize: 2; loop: true;" + scene-sound__teleport_start="on: right-teleport_down; off: right-teleport_up;" + sound__teleport_start2="positional: false; src: #sound_asset-teleport_start; on: nothing; poolSize: 2; loop: true;" + scene-sound__teleport_start2="on: left-teleport_down; off: left-teleport_up;" sound__teleport_end="positional: false; src: #sound_asset-teleport_end; on: nothing; poolSize: 2;" scene-sound__teleport_end="on: right-teleport_up;" sound__teleport_end2="positional: false; src: #sound_asset-teleport_end; on: nothing; poolSize: 2;" @@ -446,10 +451,10 @@ scene-sound__snap_rotate_left="on: snap_rotate_left;" sound__snap_rotate_right="positional: false; src: #sound_asset-snap_rotate; on: nothing; poolSize: 3;" scene-sound__snap_rotate_right="on: snap_rotate_right;" - sound__model_loaded="positional: false; src: #sound_asset-media_loaded; on: nothing; poolSize: 2;" - scene-sound__model_loaded="on: object_spawned;" - sound__image_loaded="positional: false; src: #sound_asset-media_loaded; on: nothing; poolSize: 2;" - scene-sound__image_loaded="on: image-loaded;" + sound__media_loaded="positional: false; src: #sound_asset-media_loaded; on: nothing; poolSize: 2;" + scene-sound__media_loaded="on: media-loaded;" + sound__media_loading="positional: false; src: #sound_asset-media_loading; on: nothing; poolSize: 2; loop: true; " + scene-sound__media_loading="on: media-loading; off: media-loaded;" sound__hud_action_mute="positional: false; src: #sound_asset-toggle_mute; on: nothing; poolSize: 2;" scene-sound__hud_action_mute="on: action_mute;" sound__hud_action_freeze="positional: false; src: #sound_asset-toggle_freeze; on: nothing; poolSize: 2;" @@ -471,6 +476,8 @@ scene-sound__cursor_distance_change_blocked="on: cursor-distance-change-blocked;" sound__camera_tool_took_snapshot="positional: false; src: #sound_asset-camera_tool_took_snapshot; on: nothing; poolSize: 1;" scene-sound__camera_tool_took_snapshot="on: camera_tool_took_snapshot;" + sound__welcome="positional: false; src: #sound_asset-welcome; on: nothing; poolSize: 2;" + scene-sound__welcome="on: entered;" > <a-entity id="gaze-teleport" diff --git a/src/utils/media-utils.js b/src/utils/media-utils.js index 7a05a2c725b9ade88eb21bdd0df6e075459f8920..74dfd96eb7bcf6b2483ddea4d81b93acf39cd9c1 100644 --- a/src/utils/media-utils.js +++ b/src/utils/media-utils.js @@ -108,6 +108,17 @@ export const addMedia = (src, template, contentOrigin, resolve = false, resize = entity.setAttribute("media-loader", { resize, resolve, src: typeof src === "string" ? src : "" }); scene.appendChild(entity); + const fireLoadingTimeout = setTimeout(() => { + scene.emit("media-loading", { src: src }); + }, 100); + + ["model-loaded", "video-loaded", "image-loaded"].forEach(eventName => { + entity.addEventListener(eventName, () => { + clearTimeout(fireLoadingTimeout); + scene.emit("media-loaded", { src: src }); + }); + }); + const orientation = new Promise(function(resolve) { if (src instanceof File) { getOrientation(src, x => {