Skip to content
Snippets Groups Projects
hub.html 40.7 KiB
Newer Older
<!DOCTYPE html>
netpro2k's avatar
netpro2k committed
<html>

<head>
Greg Fodor's avatar
Greg Fodor committed
    <!-- DO NOT REMOVE/EDIT THIS COMMENT - META_TAGS -->
netpro2k's avatar
netpro2k committed
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <link rel="shortcut icon" type="image/png" href="/favicon.ico">
Greg Fodor's avatar
Greg Fodor committed
    <title>Get together | Hubs by Mozilla</title>
Greg Fodor's avatar
Greg Fodor committed
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700" rel="stylesheet">
netpro2k's avatar
netpro2k committed
</head>

    <audio id="test-tone">
        <source src="./assets/sfx/tone.webm" type="audio/webm"/>
        <source src="./assets/sfx/tone.mp3" type="audio/mpeg"/>
        <source src="./assets/sfx/tone.ogg" type="audio/ogg"/>
        <source src="./assets/sfx/tone.wav" type="audio/wav"/>
    </audio>
Greg Fodor's avatar
Greg Fodor committed

netpro2k's avatar
netpro2k committed
    <a-scene
        class="grab-cursor"
        renderer="antialias: true; gammaOutput: true; sortObjects: true; physicallyCorrectLights: true;"
        gamma-factor
        networked-scene="adapter: janus; audio: true; debug: true; connectOnLoad: false;"
        physics="gravity: -6; debug: false;"
        mute-mic="eventSrc: a-scene; toggleEvents: action_mute"
        freeze-controller="toggleEvent: action_freeze"
Robert Long's avatar
Robert Long committed
        vr-mode-ui="enabled: false"
Greg Fodor's avatar
Greg Fodor committed
        stats-plus="false"
netpro2k's avatar
netpro2k committed
        action-to-event__mute="path: /actions/muteMic; event: action_mute;"
Greg Fodor's avatar
Greg Fodor committed
        action-to-event__focus_chat="path: /actions/focusChat; event: action_focus_chat;"
Robert Long's avatar
Robert Long committed
    >
netpro2k's avatar
netpro2k committed

        <a-assets>
            <img id="action-button" crossorigin="anonymous" src="./assets/hud/action_button.9.png">
            <img id="tooltip" crossorigin="anonymous" src="./assets/hud/tooltip.9.png">
            <img id="mute-off" crossorigin="anonymous" src="./assets/hud/mute_off.png">
            <img id="mute-off-hover" crossorigin="anonymous" src="./assets/hud/mute_off-hover.png">
            <img id="mute-on" crossorigin="anonymous" src="./assets/hud/mute_on.png">
            <img id="mute-on-hover" crossorigin="anonymous" src="./assets/hud/mute_on-hover.png">
            <img id="bubble-off" crossorigin="anonymous" src="./assets/hud/bubble_off.png">
            <img id="bubble-off-hover" crossorigin="anonymous" src="./assets/hud/bubble_off-hover.png">
            <img id="bubble-on" crossorigin="anonymous" src="./assets/hud/bubble_on.png">
            <img id="bubble-on-hover" crossorigin="anonymous" src="./assets/hud/bubble_on-hover.png">
            <img id="freeze-off" crossorigin="anonymous" src="./assets/hud/freeze_off.png">
            <img id="freeze-off-hover" crossorigin="anonymous" src="./assets/hud/freeze_off-hover.png">
            <img id="freeze-on" crossorigin="anonymous" src="./assets/hud/freeze_on.png">
            <img id="freeze-on-hover" crossorigin="anonymous" src="./assets/hud/freeze_on-hover.png">
            <img id="spawn-pen" crossorigin="anonymous" src="./assets/hud/spawn_pen.png">
            <img id="spawn-pen-hover" crossorigin="anonymous" src="./assets/hud/spawn_pen-hover.png">
netpro2k's avatar
netpro2k committed
            <img id="spawn-camera" crossorigin="anonymous" src="./assets/hud/spawn_camera.png">
            <img id="spawn-camera-hover" crossorigin="anonymous" src="./assets/hud/spawn_camera-hover.png">
Greg Fodor's avatar
Greg Fodor committed
            <img id="presence-count" crossorigin="anonymous" src="./assets/hud/presence-count.png">
            <img id="water-normal-map" crossorigin="anonymous" src="./assets/waternormals.jpg">
Robert Long's avatar
Robert Long committed
            <a-asset-item id="botdefault" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotDefault_Avatar-9f71f8ff22.gltf"></a-asset-item>
            <a-asset-item id="botbobo" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotBobo_Avatar-f9740a010b.gltf"></a-asset-item>
Kevin Lee's avatar
Kevin Lee committed
            <a-asset-item id="botdom" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotDom_Avatar-0c48bf15a5.gltf"></a-asset-item>
Robert Long's avatar
Robert Long committed
            <a-asset-item id="botgreg" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotGreg_Avatar-98d39797bb.gltf"></a-asset-item>
            <a-asset-item id="botguest" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotGuest_Avatar-78cd857332.gltf"></a-asset-item>
            <a-asset-item id="botjim" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotJim_Avatar-d28005a687.gltf"></a-asset-item>
            <a-asset-item id="botkev" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotKev_Avatar-a95787bb51.gltf"></a-asset-item>
            <a-asset-item id="botpinky" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotPinky_Avatar-b0b93f8675.gltf"></a-asset-item>
            <a-asset-item id="botrobert" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotRobert_Avatar-e9554880f3.gltf"></a-asset-item>
            <a-asset-item id="botwoody" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotWoody_Avatar-0140485a23.gltf"></a-asset-item>
Brian Peiris's avatar
Brian Peiris committed

johnshaughnessy's avatar
johnshaughnessy committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <a-asset-item id="sound_asset-quack"                          src="./assets/sfx/quack.mp3"          response-type="arraybuffer" preload="auto"></a-asset-item>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <a-asset-item id="sound_asset-snap_rotate"                    src="./assets/sfx/tap_mellow.wav"     response-type="arraybuffer" preload="auto"></a-asset-item>
Greg Fodor's avatar
Greg Fodor committed
            <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-media_loading"                  src="./assets/sfx/suspense.wav"     response-type="arraybuffer" preload="auto"></a-asset-item>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <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>
Greg Fodor's avatar
Greg Fodor committed
            <a-asset-item id="sound_asset-welcome"                        src="./assets/sfx/welcome.wav"     response-type="arraybuffer" preload="auto"></a-asset-item>
Greg Fodor's avatar
Greg Fodor committed
            <a-asset-item id="sound_asset-chat"                           src="./assets/sfx/pop.wav"     response-type="arraybuffer" preload="auto"></a-asset-item>
            <template id="remote-avatar-template">
                <a-entity networked-avatar ik-root player-info>
Robert Long's avatar
Robert Long committed
                    <a-entity class="camera"></a-entity>
Robert Long's avatar
Robert Long committed
                    <a-entity class="left-controller"></a-entity>

                    <a-entity class="right-controller"></a-entity>

                    <a-entity class="model" gltf-model-plus="inflate: true">
                        <template data-name="RootScene">
                            <a-entity ik-controller hand-pose__left hand-pose__right space-invader-mesh="meshName: Bot_Skinned"></a-entity>
                        <template data-name="Neck">
Brian Peiris's avatar
Brian Peiris committed
                            <a-entity>
                                <a-entity
                                    class="nametag"
                                    billboard
                                    text="side: double; align: center; color: #ddd"
                                    position="0 1 0"
                                    scale="6 6 6"
                                ></a-entity>
Brian Peiris's avatar
Brian Peiris committed
                            </a-entity>
Robert Long's avatar
Robert Long committed
                        </template>
                        <template data-name="Chest">
                            <a-entity personal-space-invader="radius: 0.2; useMaterial: true;" bone-visibility>
                                <a-entity billboard>
                                    <a-entity mixin="rounded-text-button" block-button visible-while-frozen="withinDistance: 10;" ui-class-while-frozen position="0 0 .35"> </a-entity>
                                    <a-entity visible-while-frozen="withinDistance: 10;" text="value:Block; width:2.5; align:center;" position="0 0 0.36"></a-entity>
joni's avatar
joni committed
                            </a-entity>
                        <template data-name="Head">
Robert Long's avatar
Robert Long committed
                            <a-entity
                                networked-audio-source
                                networked-audio-analyser
                                personal-space-invader="radius: 0.15; useMaterial: true;"
                                <a-cylinder
                                    static-body
                                    radius="0.13"
                                    height="0.2"
                                    position="0 0.07 0.05"
                                    visible="false"
                                ></a-cylinder>
Robert Long's avatar
Robert Long committed
                            </a-entity>
                        </template>

                        <template data-name="LeftHand">
                            <a-entity personal-space-invader="radius: 0.1" bone-visibility></a-entity>
                        </template>

                        <template data-name="RightHand">
                            <a-entity personal-space-invader="radius: 0.1" bone-visibility></a-entity>
Robert Long's avatar
Robert Long committed
                        </template>
Robert Long's avatar
Robert Long committed
                </a-entity>
            </template>

            <template id="interactable-media">
                <a-entity
                    class="interactable"
joni's avatar
joni committed
                    super-networked-interactable="counter: #media-counter;"
                    body="type: dynamic; shape: none; mass: 1;"
                    scale="0.5 0.5 0.5"
                    animation__spawn="property: scale; delay: 50; dur: 200; from: 0.5 0.5 0.5; to: 1 1 1; easing: easeInQuad"
                    grabbable
joni's avatar
joni committed
                    stretchable="useWorldPosition: true; usePhysics: never"
                    hoverable-visuals="cursorController: #cursor-controller"
                    auto-scale-cannon-physics-body
joni's avatar
joni committed
                    sticky-object="autoLockOnRelease: true; autoLockOnLoad: true;"
                    position-at-box-shape-border="target:.freeze-menu;"
                    destroy-at-extreme-distances
                    pinnable
                    sound__grab="src: #sound_asset-grab; on: grabbed; poolSize: 1; positional: false;"
                    sound__graboff ="src: #sound_asset-grab_off; on: ungrabbed; poolSize: 1; positional: false; positional: false;"
                    sound__pinned ="src: #sound_asset-pinned; on: pinned; poolSize: 1; positional: false; positional: false;"
                    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="ui interactable-ui" stop-event-propagation__grab-start="event: grab-start" stop-event-propagation__grab-end="event: grab-end" stop-event-propagation__stretch-start="event: stretch-start" stop-event-propagation__stretch-end="event: stretch-end">
                        <a-entity class="freeze-menu" visible-while-frozen="withinDistance: 10;">
                            <a-entity mixin="rounded-text-action-button" pin-networked-object-button="labelSelector:.pin-button-label; hideWhenPinnedSelector:.hide-when-pinned;" position="0 0.125 0.01"> </a-entity>
Greg Fodor's avatar
Greg Fodor committed
                            <a-entity class="pin-button-label" text=" value:pin; width:1.75; align:center;" text-raycast-hack position="0 0.125 0.02"></a-entity>
                            <a-entity mixin="rounded-text-button" camera-focus-button="track: false" position="-0.25 0.375 0.01">
                                <a-entity text=" value:focus; width:1.75; align:center;" text-raycast-hack position="0 0 0.02"></a-entity>
                            </a-entity>
                            <a-entity mixin="rounded-text-button" camera-focus-button="track: true" position="0.25 0.375 0.01">
                                <a-entity text=" value:track; width:1.75; align:center;" text-raycast-hack position="0 0 0.02"></a-entity>
                            </a-entity>
Greg Fodor's avatar
Greg Fodor committed
                            <a-entity mixin="rounded-text-button" class="hide-when-pinned" remove-networked-object-button position="0 -0.125 0.01"> </a-entity>
                            <a-entity text=" value:remove; width:1.75; align:center;" class="hide-when-pinned" text-raycast-hack position="0 -0.125 0.02"></a-entity>
                        </a-entity>
                </a-entity>
            </template>

Kevin Lee's avatar
Kevin Lee committed
            <template id="pen-interactable">
Kevin Lee's avatar
Kevin Lee committed
                <a-entity
netpro2k's avatar
netpro2k committed
                    class="pen interactable"
                    super-networked-interactable="counter: #pen-counter;"
Kevin Lee's avatar
Kevin Lee committed
                    body="type: dynamic; shape: none; mass: 1;"
                    grabbable="maxGrabbers: 1"
                    sticky-object="autoLockOnRelease: true; autoLockOnLoad: true; autoLockSpeedLimit: 0;"
Kevin Lee's avatar
Kevin Lee committed
                    hoverable
                    scale="0.5 0.5 0.5"
                    sound__next_pen_color="src: #sound_asset-next_pen_color; on: next_pen_color; poolSize: 2; positional: false;"
                    sound__prev_pen_color="src: #sound_asset-prev_pen_color; on: prev_pen_color; poolSize: 2; positional: false;"
                    sound__start_draw="src: #sound_asset-start_draw; on: start_draw; poolSize: 2; positional: false;"
                    sound__stop_draw="src: #sound_asset-stop_draw; on: stop_draw; poolSize: 2; positional: false;"
                    sound__increase_pen_radius="src: #sound_asset-increase_pen_radius; on: increase_pen_radius; poolSize: 2; positional: false;"
                    sound__decrease_pen_radius="src: #sound_asset-decrease_pen_radius; on: decrease_pen_radius; poolSize: 2; positional: false;"
                    sound__grab="src: #sound_asset-grab; on: grabbed; poolSize: 1; positional: false;"
                    sound__graboff ="src: #sound_asset-grab_off; on: ungrabbed; poolSize: 1; positional: false;"
                    emit-state-change__grabbed="state: grabbed; transform: rising; event: grabbed;"
                    emit-state-change__ungrabbed="state: grabbed; transform: falling; event: ungrabbed;"
Kevin Lee's avatar
Kevin Lee committed
                >
Kevin Lee's avatar
Kevin Lee committed
                        id="pen"
                        scale="1.5, 1.5, 1.5"
                        position="0 -0.18 0"
                        radius="0.02"
Kevin Lee's avatar
Kevin Lee committed
                        color="#FF0033"
                        pen="camera: #player-camera; drawingManager: #drawing-manager"
                        segments-width="16"
                        segments-height="12"
Kevin Lee's avatar
Kevin Lee committed
                    ></a-sphere>
                    <a-entity class="ui delete-button" visible-while-frozen="withinDistance: 10;" stop-event-propagation__grab-start="event: grab-start" stop-event-propagation__grab-end="event: grab-end" stop-event-propagation__stretch-start="event: stretch-start" stop-event-propagation__stretch-end="event: stretch-end">
                        <a-entity mixin="rounded-text-button" remove-networked-object-button position="0 0 0"> </a-entity>
Greg Fodor's avatar
Greg Fodor committed
                        <a-entity text=" value:remove; width:2.5; align:center;" text-raycast-hack position="0 0 0.01"></a-entity>
Kevin Lee's avatar
Kevin Lee committed
                </a-entity>
            </template>

            <template id="interactable-camera">
                <a-entity
                    class="interactable icamera"
                    grabbable
                    hoverable
                    camera-tool
                    animation__spawn="property: scale; delay: 50; dur: 200; from: 0.5 0.5 0.5; to: 1 1 1; easing: easeOutQuad"
                    scale="0.5 0.5 0.5"
                    body="type: dynamic; shape: none; mass: 1;"
                    shape="shape: box; halfExtents: 0.22 0.145 0.1; offset: 0 0.02 0"
                    sticky-object="autoLockOnRelease: true; autoLockOnLoad: true; autoLockSpeedLimit: 0;"
                    super-networked-interactable="counter: #camera-counter;"
Greg Fodor's avatar
Greg Fodor committed
                    position-at-box-shape-border="target:.camera-menu"
Greg Fodor's avatar
Greg Fodor committed
                    set-yxz-order
netpro2k's avatar
netpro2k committed
                    auto-scale-cannon-physics-body
Greg Fodor's avatar
Greg Fodor committed
                    <a-entity class="ui camera-menu" visible-while-frozen="withinDistance: 10;" stop-event-propagation__grab-start="event: grab-start" stop-event-propagation__grab-end="event: grab-end" stop-event-propagation__stretch-start="event: stretch-start" stop-event-propagation__stretch-end="event: stretch-end">
                        <a-entity mixin="rounded-text-action-button" mirror-camera-button="labelSelector:.mirror-button-label;" position="0 0.125 0.01"> </a-entity>
                        <a-entity text=" value:mirror; width:2.5; align:center;" class="mirror-button-label" text-raycast-hack position="0 0.125 0.02"></a-entity>
Greg Fodor's avatar
Greg Fodor committed
                        <a-entity mixin="rounded-text-button" remove-networked-object-button position="0 -0.125 0.01"> </a-entity>
                        <a-entity text=" value:remove; width:2.5; align:center;" text-raycast-hack position="0 -0.125 0.02"></a-entity>
                    </a-entity>
                </a-entity>
            </template>
Kevin Lee's avatar
Kevin Lee committed
            <template id="interactable-drawing">
                <a-entity
                    networked-drawing
                ></a-entity>
            </template>

netpro2k's avatar
netpro2k committed
            <template id="paging-toolbar">
Greg Fodor's avatar
Greg Fodor committed
                <a-entity class="ui paging-toolbar" visible-to-owner>
netpro2k's avatar
netpro2k committed
                    <a-entity class="prev-button" position="-0.3 0 0">
                        <a-entity mixin="rounded-text-button" slice9="width: 0.2"> </a-entity>
                        <a-entity text=" value:<; width:2; align:center;" text-raycast-hack position="0 0 0.01"></a-entity>
                    </a-entity>
                    <a-entity class="page-label" text="width:2; align:center;" text-raycast-hack></a-entity>
                    <a-entity class="next-button" position="0.3 0 0">
                        <a-entity mixin="rounded-text-button" slice9="width: 0.2"> </a-entity>
                        <a-entity text=" value:>; width:2; align:center;" text-raycast-hack position="0 0 0.01"></a-entity>
                    </a-entity>
                </a-entity>
            </template>
            <a-mixin id="rounded-text-button"
                text-button="
                    haptic:#player-right-controller;
                    textHoverColor: #fff;
                    textColor: #fff;
Greg Fodor's avatar
Greg Fodor committed
                    backgroundHoverColor: #aaa;
                    backgroundColor: #fff;"
                slice9="
                    width: 0.45;
                    height: 0.2;
                    left: 64;
                    top: 64;
                    right: 66;
                    bottom: 66;
                    opacity: 1.0;
                    src: #action-button"
Greg Fodor's avatar
Greg Fodor committed
            <a-mixin id="rounded-text-action-button"
                text-button="
                    haptic:#player-right-controller;
                    textHoverColor: #fff;
                    textColor: #fff;
                    backgroundHoverColor: #cc0515;
                    backgroundColor: #ff0520;"
Greg Fodor's avatar
Greg Fodor committed
                slice9="
                    width: 0.45;
                    height: 0.2;
                    left: 64;
                    top: 64;
                    right: 66;
                    bottom: 66;
                    opacity: 1.0;
                    src: #action-button"
joni's avatar
joni committed
            <a-mixin id="controller-super-hands"
                super-hands="
                    colliderEvent: collisions;
                    colliderEventProperty: els;
                    colliderEndEvent: collisions;
                    colliderEndEventProperty: clearedEls;
                    grabStartButtons: primary_hand_grab, secondary_hand_grab;
                    grabEndButtons: primary_hand_release, secondary_hand_release;
                    stretchStartButtons: primary_hand_grab, secondary_hand_grab;
                    stretchEndButtons: primary_hand_release, secondary_hand_release;
                    dragDropStartButtons: hand_grab, secondary_hand_grab;
                    dragDropEndButtons: hand_release, secondary_hand_release;
                    activateStartButtons: secondary_hand_grab, next_color, previous_color, increase_radius, decrease_radius, scroll_up, scroll_down, scroll_left, scroll_right;
                    activateEndButtons: secondary_hand_release, vertical_scroll_release, horizontal_scroll_release, thumb_up;"
                collision-filter="collisionForces: false"
                physics-collider
netpro2k's avatar
netpro2k committed
        </a-assets>
Robert Long's avatar
Robert Long committed

        <!-- Interactables -->
        <a-entity id="media-counter" networked-counter="max: 10;"></a-entity>
        <a-entity id="pen-counter" networked-counter="max: 10;"></a-entity>
Kevin Lee's avatar
Kevin Lee committed

        <a-entity id="camera-counter" networked-counter="max: 1;"></a-entity>

        <a-entity id="drawing-manager" drawing-manager></a-entity>
            id="cursor-controller"
                camera: #player-camera;
                objects: .collidable, .interactable, .ui;"
            line="visible: false; color: white; opacity: 0.2;"
        ></a-entity>

        <a-sphere
            id="cursor"
            material="depthTest: false; opacity:0.9;"
Kevin Lee's avatar
Kevin Lee committed
            segments-width="9"
            segments-height="9"
            static-body="shape: sphere;"
            collision-filter="collisionForces: false"
            super-hands="
                colliderEvent: raycaster-intersection;
                colliderEndEvent: raycaster-intersection-cleared;
                grabStartButtons: cursor-grab, primary_hand_grab, secondary_hand_grab;
                grabEndButtons: cursor-release, primary_hand_release, secondary_hand_release;
                stretchStartButtons: cursor-grab, primary_hand_grab, secondary_hand_grab;
                stretchEndButtons: cursor-release, primary_hand_release, secondary_hand_release;
                dragDropStartButtons: cursor-grab, primary_hand_grab, secondary_hand_grab;
                dragDropEndButtons: cursor-release, primary_hand_release, secondary_hand_release;
                activateStartButtons: secondary-cursor-grab, secondary_hand_grab, next_color, previous_color, increase_radius, decrease_radius, scroll_up, scroll_down, scroll_left, scroll_right;
                activateEndButtons: secondary-cursor-release, secondary_hand_release, vertical_scroll_release, horizontal_scroll_release, thumb_up;"
            action-to-event__grab="path: /actions/cursorGrab; event: cursor-grab"
            action-to-event__drop="path: /actions/cursorDrop; event: cursor-release"
Robert Long's avatar
Robert Long committed
        <!-- Player Rig -->
        <a-entity
            id="player-rig"
Greg Fodor's avatar
Greg Fodor committed
            spawn-controller="loadedEvent: entered; target: #player-rig"
joni's avatar
joni committed
            wasd-to-analog2d
Robert Long's avatar
Robert Long committed
            character-controller="pivot: #player-camera"
            ik-root
            player-info
Robert Long's avatar
Robert Long committed
        >
            <a-entity
                id="player-hud"
                hud-controller="head: #player-camera;"
                vr-mode-toggle-visibility
                vr-mode-toggle-playing__hud-controller
            >
johnshaughnessy's avatar
johnshaughnessy committed
                <a-entity in-world-hud="haptic:#player-right-controller;raycaster:#player-right-controller;" rotation="30 0 0">
Greg Fodor's avatar
Greg Fodor committed
                    <a-rounded height="0.08" width="0.2" color="#000000" position="-0.30 0.125 0" radius="0.040" opacity="0.35" class="hud bg"></a-rounded>
                    <a-image scale="0.07 0.06 0.06" position="-0.23 0.165 0.001" src="#presence-count" material="alphaTest:0.1;"></a-image>
                    <a-entity id="hud-presence-count" text="value:; width:1.1; align:center;" position="-0.155 0.165 0"></a-entity>
                    <a-rounded height="0.08" width="0.5" color="#000000" position="-0.08 0.125 0" radius="0.040" opacity="0.35" class="hud bg"></a-rounded>
                    <a-entity id="hud-hub-entry-link" text="value:; width:1.1; align:center;" position="0.17 0.165 0"></a-entity>
                    <a-rounded height="0.13" width="0.59" color="#000000" position="-0.24 -0.065 0" radius="0.065" opacity="0.35" class="hud bg"></a-rounded>
johnshaughnessy's avatar
johnshaughnessy committed
                <a-image
                    icon-button="tooltip: #hud-tooltip; tooltipText: Mute Mic; activeTooltipText: Unmute Mic; image: #mute-off; hoverImage: #mute-off-hover; activeImage: #mute-on; activeHoverImage: #mute-on-hover"
                    scale="0.1 0.1 0.1"
                    position="-0.17 0 0.001"
                    class="ui hud mic"
                    material="alphaTest:0.1;"
                    hoverable
                    sound__hud_hover_start="src: #sound_asset-hud_hover_start; on: mouseover; poolSize: 5; positional: false;"
johnshaughnessy's avatar
johnshaughnessy committed
                <a-image
                    icon-button="tooltip: #hud-tooltip; tooltipText: Pause; activeTooltipText: Resume; image: #freeze-off; hoverImage: #freeze-off-hover; activeImage: #freeze-on; activeHoverImage: #freeze-on-hover"
                    scale="0.2 0.2 0.2"
                    position="0 0 0.005"
                    class="ui hud freeze"
                    hoverable
                    sound__hud_hover_start="src: #sound_asset-hud_hover_start; on: mouseover; poolSize: 5; positional: false;"
johnshaughnessy's avatar
johnshaughnessy committed
                <a-image
                    icon-button="tooltip: #hud-tooltip; tooltipText: Pen; activeTooltipText: Pen; image: #spawn-pen; hoverImage: #spawn-pen-hover; activeImage: #spawn-pen; activeHoverImage: #spawn-pen-hover"
                    scale="0.1 0.1 0.1"
                    position="0.17 0 0.001"
                    class="ui hud penhud"
                    material="alphaTest:0.1;"
                    hoverable
                    sound__hud_hover_start="src: #sound_asset-hud_hover_start; on: mouseover; poolSize: 5; positional: false;"
johnshaughnessy's avatar
johnshaughnessy committed
                <a-image
                    icon-button="tooltip: #hud-tooltip; tooltipText: Camera; activeTooltipText: Camera; image: #spawn-camera; hoverImage: #spawn-camera-hover; activeImage: #spawn-camera; activeHoverImage: #spawn-camera-hover"
                    scale="0.1 0.1 0.1"
                    position="0.28 0 0.001"
Greg Fodor's avatar
Greg Fodor committed
                    class="ui hud camera-btn"
johnshaughnessy's avatar
johnshaughnessy committed
                    material="alphaTest:0.1;"
                    hoverable
                    sound__hud_hover_start="src: #sound_asset-hud_hover_start; on: mouseover; poolSize: 5; positional: false;"
                ></a-image>
                <a-rounded visible="false" id="hud-tooltip" height="0.08" width="0.3" color="#000000" position="-0.15 -0.2 0" rotation="-20 0 0" radius="0.025" opacity="0.35" class="hud bg">
johnshaughnessy's avatar
johnshaughnessy committed
                    <a-entity text="value: Mute Mic; align:center;" position="0.15 0.04 0.001" ></a-entity>
johnshaughnessy's avatar
johnshaughnessy committed
                </a-entity>
Robert Long's avatar
Robert Long committed
            <a-entity
                id="player-camera"
                class="camera"
                camera
                personal-space-bubble="radius: 0.4;"
Greg Fodor's avatar
Greg Fodor committed
                set-yxz-order
                sound__teleport_start="positional: false; src: #sound_asset-teleport_start; on: nothing; poolSize: 2; loop: true; positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                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; positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                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; positional: false;"
                scene-sound__teleport_end="on: right-teleport_up;"
                sound__teleport_end2="positional: false; src: #sound_asset-teleport_end; on: nothing; poolSize: 2; positional: false;"
                scene-sound__teleport_end2="on: left-teleport_up;"
                sound__snap_rotate_left="positional: false; src: #sound_asset-snap_rotate; on: nothing; poolSize: 3; positional: false;"
                scene-sound__snap_rotate_left="on: snap_rotate_left;"
                sound__snap_rotate_right="positional: false; src: #sound_asset-snap_rotate; on: nothing; poolSize: 3; positional: false;"
                scene-sound__snap_rotate_right="on: snap_rotate_right;"
                sound__media_loaded="positional: false; src: #sound_asset-media_loaded; on: nothing; poolSize: 2; positional: false;"
                scene-sound__media_loaded="on: media-loaded;"
                sound__media_loading="positional: false; src: #sound_asset-media_loading; on: nothing; poolSize: 2; loop: true;  positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                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; positional: false;"
                scene-sound__hud_action_mute="on: action_mute;"
                sound__hud_action_freeze="positional: false; src: #sound_asset-toggle_freeze; on: nothing; poolSize: 2; positional: false;"
                scene-sound__hud_action_freeze="on: action_freeze;"
                sound__action_freeze="positional: false; src: #sound_asset-freeze; on: nothing; poolSize: 2; positional: false;"
                scene-sound__action_freeze="on: play_freeze_sound;"
                sound__action_thaw="positional: false; src: #sound_asset-thaw; on: nothing; poolSize: 2; positional: false;"
                scene-sound__action_thaw="on: play_thaw_sound;"
                sound__hud_action_space_bubble="positional: false; src: #sound_asset-toggle_space_bubble; on: nothing; poolSize: 2; positional: false;"
                scene-sound__hud_action_space_bubble="on: action_space_bubble;"
                sound__hud_spawn_pen="positional: false; src: #sound_asset-spawn_pen; on: nothing; poolSize: 2; positional: false;"
                scene-sound__hud_spawn_pen="on: spawn_pen;"
                sound__hud_hover_start="positional: false; src: #sound_asset-hud_hover_start; on: nothing; poolSize: 5;; positional: false;"
                sound__hud_click="positional: false; src: #sound_asset-hud_click; on: nothing; poolSize: 1;"
                scene-sound__hud_click="on: hud_click;"
                sound__cursor_distance_changed="positional: false; src: #sound_asset-cursor_distance_changed; on: nothing; poolSize: 1; positional: false;"
                scene-sound__cursor_distance_changed="on: cursor-distance-changed;"
                sound__cursor_distance_change_blocked="positional: false; src: #sound_asset-cursor_distance_change_blocked; on: nothing; poolSize: 1; positional: false;"
                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; positional: false;"
                scene-sound__camera_tool_took_snapshot="on: camera_tool_took_snapshot;"
                sound__welcome="positional: false; src: #sound_asset-welcome; on: nothing; poolSize: 2; positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                scene-sound__welcome="on: entered;"
                sound__log_chat_message="positional: false; src: #sound_asset-chat; on: nothing; poolSize: 2; positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                scene-sound__log_chat_message="on: presence-log-chat;"
                sound__quack="positional: false; src: #sound_asset-quack; on: nothing; poolSize: 2; positional: false;"
Greg Fodor's avatar
Greg Fodor committed
                scene-sound__quack="on: quack;"
            >
                <a-entity
                    id="gaze-teleport"
                    position = "0.15 0 0"
                    teleport-controls="
                        cameraRig: #player-rig;
                        teleportOrigin: #player-camera;
                        button: gaze-teleport_;
                        collisionEntities: [nav-mesh];
                        drawIncrementally: true;
                        incrementalDrawMs: 300;
                        hitOpacity: 0.3;
                        missOpacity: 0.1;
                        curveShootingSpeed: 12;"
                    action-to-event__start-teleport="path: /actions/startTeleport; event: gaze-teleport_down"
                    action-to-event__stop-teleport="path: /actions/stopTeleport; event: gaze-teleport_up"
                ></a-entity>
Robert Long's avatar
Robert Long committed
            <a-entity
                id="player-left-controller"
                class="left-controller"
                hand-controls2="left"
                tracked-controls
                    collisionEntities: [nav-mesh];
                    drawIncrementally: true;
johnshaughnessy's avatar
johnshaughnessy committed
                    incrementalDrawMs: 300;
                    hitOpacity: 0.3;
tony056's avatar
tony056 committed
                    missOpacity: 0.1;
                haptic-feedback
                body="type: static; shape: none;"
                mixin="controller-super-hands"
                controls-shape-offset
                action-to-event__a="path: /actions/leftHandStartTeleport; event: left-teleport_down;"
                action-to-event__b="path: /actions/leftHandStopTeleport; event: left-teleport_up;"
                action-to-event__c="path: /actions/leftHandGrab; event: primary_hand_grab;"
                action-to-event__d="path: /actions/leftHandDrop; event: primary_hand_release;"
            >
            </a-entity>
            <a-entity
                id="player-right-controller"
                class="right-controller"
                hand-controls2="right"
                tracked-controls
                teleport-controls="
                    cameraRig: #player-rig;
                    teleportOrigin: #player-camera;
                    button: right-teleport_;
                    collisionEntities: [nav-mesh];
                    drawIncrementally: true;
                    incrementalDrawMs: 300;
                    hitOpacity: 0.3;
                    missOpacity: 0.1;
                    curveShootingSpeed: 12;"
                haptic-feedback
                body="type: static; shape: none;"
                mixin="controller-super-hands"
                controls-shape-offset
                action-to-event__a="path: /actions/rightHandStartTeleport; event: right-teleport_down;"
                action-to-event__b="path: /actions/rightHandStopTeleport; event: right-teleport_up;"
                action-to-event__c="path: /actions/rightHandGrab; event: primary_hand_grab;"
                action-to-event__d="path: /actions/rightHandDrop; event: primary_hand_release;"
            >
            </a-entity>
            <a-entity gltf-model-plus="inflate: true;" class="model">
                <template data-name="RootScene">
                    <a-entity
                        ik-controller
                        hand-pose__left
                        hand-pose__right
                        hand-pose-controller__left="networkedAvatar:#player-rig;eventSrc:#player-left-controller"
                        hand-pose-controller__right="networkedAvatar:#player-rig;eventSrc:#player-right-controller"
                    ></a-entity>
                </template>

                <template data-name="Neck">
                    <a-entity>
                        <a-entity class="nametag" visible="false" text ></a-entity>
                    </a-entity>
                </template>
Brian Peiris's avatar
Brian Peiris committed
                <template data-name="Head">
                    <a-entity id="player-head" visible="false" bone-visibility></a-entity>
                </template>
                <template data-name="LeftHand">
                    <a-entity bone-visibility hover-visuals="hand: left; controller: #player-left-controller"></a-entity>
                <template data-name="RightHand">
                    <a-entity bone-visibility hover-visuals="hand: right; controller: #player-right-controller"></a-entity>
netpro2k's avatar
netpro2k committed
        </a-entity>

Robert Long's avatar
Robert Long committed
        <!-- Environment -->
            nav-mesh-helper
            static-body="shape: none;"
Greg Fodor's avatar
Greg Fodor committed
        >
Greg Fodor's avatar
Greg Fodor committed
            <a-entity id="environment-scene"></a-entity>
        </a-entity>

        <!-- Objects -->
        <a-entity id="objects-root">
            <a-entity id="objects-scene"></a-entity>
Greg Fodor's avatar
Greg Fodor committed
        </a-entity>
johnshaughnessy's avatar
johnshaughnessy committed
            action-to-event="path: /actions/spawnPen; event: spawn_pen"
            super-spawner="
                template: #pen-interactable;
                src: https://asset-bundles-prod.reticulum.io/interactables/DrawingPen/DrawingPen-34fb4aee27.gltf;
                spawnEvent: spawn_pen;
                superHand: #player-right-controller;
                cursorSuperHand: #cursor;"
Kevin Lee's avatar
Kevin Lee committed
        ></a-entity>
netpro2k's avatar
netpro2k committed
    </a-scene>
netpro2k's avatar
netpro2k committed
    <div id="ui-root"></div>
netpro2k's avatar
netpro2k committed
</body>

</html>