<!DOCTYPE html> <html> <head> <!-- DO NOT REMOVE/EDIT THIS COMMENT - HUB_META_TAGS --> <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"> <title>Get together | Hubs by Mozilla</title> <link href="https://fonts.googleapis.com/css?family=Zilla+Slab:300,300i,400,400i,700" rel="stylesheet"> </head> <body> <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> <a-scene 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" personal-space-bubble="debug: false;" vr-mode-ui="enabled: false" pinch-to-move input-configurator=" gazeCursorRayObject: #player-camera; cursorController: #cursor-controller; gazeTeleporter: #gaze-teleport; camera: #player-camera; playerRig: #player-rig; leftController: #player-left-controller; leftControllerRayObject: #player-left-controller; rightController: #player-right-controller; rightControllerRayObject: #player-right-controller;" > <a-assets> <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"> <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> <a-asset-item id="botdom" response-type="arraybuffer" src="https://asset-bundles-prod.reticulum.io/bots/BotDom_Avatar-0c48bf15a5.gltf"></a-asset-item> <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> <a-asset-item id="watch-model" response-type="arraybuffer" src="./assets/hud/watch.glb"></a-asset-item> <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> <img id="water-normal-map" crossorigin="anonymous" src="./assets/waternormals.jpg"> <!-- Templates --> <template id="video-template"> <a-entity class="video" geometry="primitive: plane;" material="side: double; shader: flat;" networked-video-player></a-entity> </template> <template id="remote-avatar-template"> <a-entity networked-avatar ik-root player-info> <a-entity class="camera"></a-entity> <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 animation-mixer space-invader-mesh="meshName: Bot_Skinned"></a-entity> </template> <template data-name="Neck"> <a-entity> <a-entity class="nametag" billboard text="side: double; align: center; color: #ddd" position="0 1 0" scale="6 6 6" ></a-entity> </a-entity> </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 ui-class-while-frozen position="0 0 .35"> </a-entity> <a-entity visible-while-frozen text="value:Block; width:2.5; align:center;" position="0 0 0.36"></a-entity> </a-entity> </a-entity> </template> <template data-name="Head"> <a-entity networked-audio-source networked-audio-analyser personal-space-invader="radius: 0.15; useMaterial: true;" bone-visibility > <a-cylinder static-body radius="0.13" height="0.2" position="0 0.07 0.05" visible="false" ></a-cylinder> </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> </template> </a-entity> </a-entity> </template> <template id="interactable-media"> <a-entity class="interactable" super-networked-interactable="counter: #media-counter;" body="type: dynamic; shape: none; mass: 1;" grabbable stretchable="useWorldPosition: true; usePhysics: never" hoverable auto-scale-cannon-physics-body sticky-object="autoLockOnRelease: true; autoLockOnLoad: true;" position-at-box-shape-border="target:.delete-button" destroy-at-extreme-distances rotation > <!-- HACK: rotation component above is required for its side effect of setting YXZ order --> <a-entity class="delete-button" visible-while-frozen> <a-entity mixin="rounded-text-button" remove-networked-object-button position="0 0 0"> </a-entity> <a-entity text=" value:Delete; width:2.5; align:center;" text-raycast-hack position="0 0 0.01"></a-entity> </a-entity> </a-entity> </template> <template id="pen-interactable"> <a-entity class="interactable toggle" super-networked-interactable="counter: #pen-counter;" body="type: dynamic; shape: none; mass: 1;" grabbable-toggle="maxGrabbers: 1;" sticky-object="autoLockOnRelease: true;" hoverable activatable__draw-hand="buttonStartEvents: secondary_hand_grab; buttonEndEvents: secondary_hand_release;" activatable__draw-cursor="buttonStartEvents: secondary-cursor-grab; buttonEndEvents: secondary-cursor-release;" activatable__color-next="buttonStartEvents: next_color, scroll_up; buttonEndEvents: thumb_up, secondary_hand_release, vertical_scroll_release; activatedState: colorNext;" activatable__color-prev="buttonStartEvents: previous_color, scroll_down; buttonEndEvents: thumb_up, secondary_hand_release, vertical_scroll_release; activatedState: colorPrev;" activatable__increase-radius="buttonStartEvents: increase_radius, scroll_right; buttonEndEvents: thumb_up, secondary_hand_release, horizontal_scroll_release; activatedState: radiusUp;" activatable__decrease-radius="buttonStartEvents: decrease_radius, scroll_left; buttonEndEvents: thumb_up, secondary_hand_release, horizontal_scroll_release; activatedState: radiusDown;" scale="0.5 0.5 0.5" > <a-sphere id="pen" scale="1.5, 1.5, 1.5" position="0 -0.18 0" radius="0.02" color="#FF0033" pen="camera: #player-camera; drawingManager: #drawing-manager" ></a-sphere> <a-entity class="delete-button" visible-while-frozen> <a-entity mixin="rounded-text-button" remove-networked-object-button position="0 0 0"> </a-entity> <a-entity text=" value:Delete; width:2.5; align:center;" text-raycast-hack position="0 0 0.01"></a-entity> </a-entity> </a-entity> </template> <template id="interactable-drawing"> <a-entity networked-drawing ></a-entity> </template> <template id="paging-toolbar"> <a-entity class="paging-toolbar" visible-to-owner> <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; backgroundHoverColor: #ea4b54; backgroundColor: #fff;" slice9=" width: 0.45; height: 0.2; left: 53; top: 53; right: 10; bottom: 10; opacity: 1.3; src: #tooltip" ></a-mixin> <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 ></a-mixin> </a-assets> <!-- Interactables --> <a-entity id="media-counter" networked-counter="max: 10;"></a-entity> <a-entity id="pen-counter" networked-counter="max: 10;"></a-entity> <a-entity id="drawing-manager" drawing-manager></a-entity> <a-entity id="cursor-controller" cursor-controller=" cursor: #cursor; camera: #player-camera; " raycaster="objects: .collidable, .interactable, .ui; far: 3;" line="visible: false; color: white; opacity: 0.2;" ></a-entity> <a-sphere id="cursor" material="depthTest: false; opacity:0.9;" radius="0.02" static-body="shape: sphere;" collision-filter="collisionForces: false" super-hands=" colliderEvent: raycaster-intersection; colliderEventProperty: els; colliderEndEvent: raycaster-intersection-cleared; colliderEndEventProperty: clearedEls; 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;" segments-height="9" segments-width="9" event-repeater="events: raycaster-intersection, raycaster-intersection-cleared; eventSource: #cursor-controller" ></a-sphere> <!-- Player Rig --> <a-entity id="player-rig" networked="template: #remote-avatar-template; attachTemplateToLocal: false;" spawn-controller="loadedEvent: bundleloaded; target: #environment-root" wasd-to-analog2d character-controller="pivot: #player-camera" ik-root player-info networked-avatar cardboard-controls > <a-entity id="player-hud" hud-controller="head: #player-camera;" vr-mode-toggle-visibility vr-mode-toggle-playing__hud-controller > <a-entity in-world-hud="haptic:#player-right-controller;raycaster:#player-right-controller;" rotation="30 0 0"> <a-rounded height="0.13" width="0.48" color="#000000" position="-0.24 -0.065 0" radius="0.065" opacity="0.35" class="hud bg"></a-rounded> <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;"></a-image> <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"></a-image> <a-image icon-button="tooltip: #hud-tooltip; tooltipText: Spawn Pen; activeTooltipText: Spawn 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 pen" material="alphaTest:0.1;"></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"> <a-entity text="value: Mute Mic; align:center;" position="0.15 0.04 0.001" ></a-entity> </a-rounded> </a-entity> </a-entity> <a-entity id="player-camera" class="camera" camera position="0 1.6 0" personal-space-bubble="radius: 0.4;" pitch-yaw-rotator > <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: 600; hitOpacity: 0.3; missOpacity: 0.1; curveShootingSpeed: 12;" ></a-entity> </a-entity> <a-entity id="player-left-controller" class="left-controller" hand-controls2="left" tracked-controls teleport-controls=" cameraRig: #player-rig; teleportOrigin: #player-camera; button: cursor-teleport_; collisionEntities: [nav-mesh]; drawIncrementally: true; incrementalDrawMs: 600; hitOpacity: 0.3; missOpacity: 0.1; curveShootingSpeed: 12;" haptic-feedback body="type: static; shape: none;" mixin="controller-super-hands" controls-shape-offset > </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: cursor-teleport_; collisionEntities: [nav-mesh]; drawIncrementally: true; incrementalDrawMs: 600; hitOpacity: 0.3; missOpacity: 0.1; curveShootingSpeed: 12;" haptic-feedback body="type: static; shape: none;" mixin="controller-super-hands" controls-shape-offset > </a-entity> <a-entity gltf-model-plus="inflate: true;" class="model"> <template data-name="RootScene"> <a-entity ik-controller animation-mixer 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> <template data-name="Head"> <a-entity visible="false" bone-visibility></a-entity> </template> <template data-name="LeftHand"> <a-entity bone-visibility></a-entity> </template> <template data-name="RightHand"> <a-entity bone-visibility></a-entity> </template> </a-entity> </a-entity> <!-- Environment --> <a-entity id="environment-root" nav-mesh-helper static-body="shape: none;" ></a-entity> <a-entity super-spawner=" template: #pen-interactable; src: https://asset-bundles-prod.reticulum.io/interactables/DrawingPen/DrawingPen-484ae5682f.gltf; centerSpawnedObject: true; spawnEvent: spawn_pen; defaultHand: #cursor; useCustomSpawnScale: true; spawnScale: 0.5 0.5 0.5;" ></a-entity> </a-scene> <div id="ui-root"></div> </body> </html>