profile
viewpoint
jshaughnessy johnshaughnessy Mozilla

ecsyjs/ecsy 727

Entity Component System for javascript

ecsyjs/ecsy-three 51

ECSY and three.js components, systems and helpers

johnshaughnessy/aframe 0

:a: web framework for building virtual reality experiences.

johnshaughnessy/aframe-gui 0

Graphical User Interface Component Framework for A-Frame VR

johnshaughnessy/aframe-teleport-controls 0

A-Frame teleport controls component

johnshaughnessy/aframe-tooltip-component 0

A-Frame tooltip component

johnshaughnessy/claremontcravings 0

Claremont Cravings

push eventmozilla/reticulum

John Shaughnessy

commit sha 617a3bf5148d918110faceaeaa20dfc0a916cbf3

Change title of guide

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 275cfde5a160e02874bb0212b5e58a433039beef

Move dataloader config

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 41499f568954b11e692f86e6bd9d29e8040e7f91

Move dataloader config

view details

push time in a day

Pull request review commentmozilla/reticulum

Add GraphQL API for managing rooms

+defmodule RetWeb.Middleware.TimingUtil do+  @moduledoc false+  def add_timing_info(%Absinthe.Resolution{private: private} = resolution, identifier, key, value) do+    timing = Map.get(private, :timing) || %{}+    info = Map.put(Map.get(timing, identifier) || %{}, key, value)++    %{+      resolution+      | private: Map.put(private, :timing, Map.put(timing, identifier, info))+    }+  end+end++defmodule RetWeb.Middleware.StartTiming do+  @moduledoc false++  import RetWeb.Middleware.TimingUtil, only: [add_timing_info: 4]++  @behaviour Absinthe.Middleware+  def call(resolution, _) do+    add_timing_info(resolution, resolution.definition.schema_node.identifier, :started_at, NaiveDateTime.utc_now())+  end+end++defmodule RetWeb.Middleware.EndTiming do+  @moduledoc false++  import RetWeb.Middleware.TimingUtil, only: [add_timing_info: 4]++  @behaviour Absinthe.Middleware+  def call(resolution, _) do+    add_timing_info(resolution, resolution.definition.schema_node.identifier, :ended_at, NaiveDateTime.utc_now())+  end+end++defmodule RetWeb.Middleware.InspectTiming do+  @moduledoc false++  @behaviour Absinthe.Middleware+  def call(resolution, _) do+    case resolution do+      %{private: %{timing: timing}} ->+        inspect_timing_info(timing)++      _ ->+        nil+    end++    resolution+  end++  defp inspect_timing_info(timing) do+    Enum.each(timing, fn item ->+      case item do+        {identifier, %{started_at: started_at, ended_at: ended_at}} ->+          diff = NaiveDateTime.diff(ended_at, started_at, :microsecond)+          IO.puts("#{Atom.to_string(identifier)} took #{diff} microseconds to run.")

TODO: Remove this and add Cachex or :telemetry metrics

johnshaughnessy

comment created time in a day

PullRequestReviewEvent

push eventmozilla/reticulum

John Shaughnessy

commit sha 560da978a594be56dee0ada9ab30a82717cddd1f

Remove unused error message

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 8d0d6df108a8cf2990f8586ddd52a0bf0a479eab

Update justification in guide table

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 04ee343fa9f4d326d5929e84b83c274599226d44

Update formatting in guide

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 737b7160a94b6cf0cabdd147435c36243ec81583

Update scopes table in guide

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 8a2e6f4400c03c765f436d0faea865fc7bc09c5e

Remove graphiql notes

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 6f810a4e2ddfaa770c42dd0d6be5eff83fda71ac

Update API Guide

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha a32f8402373b91384423da305ea25cc2de0b8a59

Format

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 6c229905a3bcf2d21d62e7c073363d7170d0931e

Remove TODO

view details

John Shaughnessy

commit sha d3bf7879c8388682097d27768821fb5dd20c4d5d

Fix tests

view details

John Shaughnessy

commit sha 300bf33f75b8183f7b8f393fc991d794b9ae7194

Add sample graphiql workspace

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 75a2087d1b2b970382fda31361991eeab9fe2dcd

Fix warnings

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha c5096c7c13bbc76fb6596ba9dbf9eeed4f595f64

Check for introspection types how Absinthe does

view details

push time in a day

PR closed mozilla/reticulum

Add revocable API tokens using guardian_db

Adds revocable API tokens

TODO: Configure prod.exs

+252 -0

1 comment

11 changed files

johnshaughnessy

pr closed time in a day

pull request commentmozilla/reticulum

Add revocable API tokens using guardian_db

Closing this. I removed the guardian_db dependency and created a new API Token module in the big graphql api: https://github.com/mozilla/reticulum/pull/399/commits/9f23b27b5c3e9d3f215d4098eb8436c7e13dc60e

johnshaughnessy

comment created time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha 272003df8dd69d724a67fef84b7808035ca28008

Fix introspection queries and invalid token errors

view details

push time in a day

push eventmozilla/reticulum

John Shaughnessy

commit sha c88e0a0b89ccc3d1e04e8b5386bebaf5ff844c70

(Re)Implement revoke for tokens

view details

push time in 2 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 3040fb4795dbdeda7df4989ac98c229d3d2cf5de

Remove unused function

view details

John Shaughnessy

commit sha 8dc209c6a38a67410a5f8370baaa56051367bc62

Removed unused alias/import

view details

push time in 2 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 884893bf0c64ac9c4b3af9d3d61ff5c9227a8e42

Remove unused secrets

view details

push time in 2 days

push eventmozilla/reticulum

John Shaughnessy

commit sha dfaf3f81160f4ea2153c4b9f36debf40d8869781

Remove guardian db

view details

push time in 2 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 550863cf68e96ce8697bf3450af4ca73030ed31f

Add comments

view details

John Shaughnessy

commit sha 7f1c1cb6524723e8afa3f7bd67d9e2ae7a9d2f3e

Lengthen ttl

view details

John Shaughnessy

commit sha 9f23b27b5c3e9d3f215d4098eb8436c7e13dc60e

Create API token module. Replace jwt's in API

view details

push time in 2 days

create barnchjohnshaughnessy/guardian

branch : fix-typo

created branch time in 2 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

 AFRAME.registerComponent("mute-mic", {     if (!NAF.connection.adapter) return;     if (!this.el.sceneEl.is("entered")) return; -    this.el.sceneEl.systems["hubs-systems"].soundEffectsSystem.playSoundOneShot(SOUND_TOGGLE_MIC);

Discord makes a sound when you mute/unmute your mic (by clicking the button or using a hotkey). I think it's helpful

robertlong

comment created time in 2 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmozilla/hubs

Updates CONTRIBUTING.md with a pointer to spritesheet-generation.md &…

 The testing process for Hubs is mostly a manual one. You need to test your chang  The Hubs team has a more in-depth testing and release process internally, but we don't have any additional testing process for external contributors at this time. -### 5. High Level Project Organization++### 5. Modifying The 2-D Sprite Graphics++To update the 2-D sprite graphics, you must (manually) install [ImageMagick](https://imagemagick.org/script/download.php) to your command line.  See `doc/spritesheet-generation.md` for further details

We may want to remove the last paragraph of the spritesheet-generation.md file referring to Figma because it's not really relevant to external contributors.

DougReeder

comment created time in 3 days

Pull request review commentmozilla/hubs

Updates CONTRIBUTING.md with a pointer to spritesheet-generation.md &…

 These steps are what's necessary to enable development on your device     `adb devices -l`     Lists all connected devices. The -l flag will list device specific details, one of which should be: `model:Quest`     -    `adb -s model:Quest reverse tcp:8080 tcp:8080`-    `adb reverse tcp:8080 tcp:8080`+    `adb -s model:Quest reverse tcp:8080 tcp:8080`  +    `adb reverse tcp:8080 tcp:8080`       This command routes all port 8080 requests from the Quest device to port 8080 on your local web server. The first one is if you want to do things wirelessly, while the second is a quicker (albeit tethered) solution that is less prone to the error below.      If you encounter the following error:     adb: error: more than one device/emulator      Try killing and restarting adb with the following commands:-     `adb kill-server`+     `adb kill-server` or

Do you not have to run both commands?

DougReeder

comment created time in 3 days

Pull request review commentmozilla/hubs

Updates CONTRIBUTING.md with a pointer to spritesheet-generation.md &…

 These steps are what's necessary to enable development on your device     `adb devices -l`     Lists all connected devices. The -l flag will list device specific details, one of which should be: `model:Quest`     -    `adb -s model:Quest reverse tcp:8080 tcp:8080`-    `adb reverse tcp:8080 tcp:8080`+    `adb -s model:Quest reverse tcp:8080 tcp:8080`  +    `adb reverse tcp:8080 tcp:8080`       This command routes all port 8080 requests from the Quest device to port 8080 on your local web server. The first one is if you want to do things wirelessly, while the second is a quicker (albeit tethered) solution that is less prone to the error below.      If you encounter the following error:     adb: error: more than one device/emulator      Try killing and restarting adb with the following commands:-     `adb kill-server`+     `adb kill-server` or      `adb start-server`     Then retry the reverse command above again -3. Open a browser on the Quest device and test.-    Go to the following url: `https://localhost:8080` in the Oculus broswer or Firefox Reality browser+3. Open a browser on the Quest device and test. Either  +    `adb shell am start -a android.intent.action.VIEW -d 'https://localhost:8080'`  +    or launch the Oculus browser or Firefox Reality browser and go to the following url: `https://localhost:8080`      > Note the client runs over https with a self-signed SSL certificate. You'll be presented with a warning the first time you open the page. You can accept the SSL certificate warning and continue onto the site.  4. You should see the Hubs index page, the same one you see in a browser on your development machine. -### Other Devices+You may find the tool [scrcpy](https://github.com/Genymobile/scrcpy) useful to display the screen of your headset on your development computer. It doesn't require the headset user to accept, so it's less hassle than casting to a phone or tablet, in some circumstances.++#### Other Devices -Please feel free to contribute setup instructions for additional devices.+Please feel free to contribute setup instructions for additional devices. Pico headsets use command very similar to the Quest ones.

command -> commands

Are they similar enough to have "Pico" in its own section and have it say, "Follow the same instructions for Oculus Quest except do this and that differently"

DougReeder

comment created time in 3 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import React, { useEffect, useState, useCallback } from "react";+import PropTypes from "prop-types";+import { ReactComponent as ReactionIcon } from "../icons/Reaction.svg";+import { ToolbarButton } from "../input/ToolbarButton";++export function ReactionButtonContainer({ scene }) {+  const [isFrozen, setIsFrozen] = useState(scene.is("frozen"));++  useEffect(+    () => {+      function onSceneStateChange(event) {+        if (event.detail === "frozen") {+          setIsFrozen(scene.is("frozen"));+        }+      }++      scene.addEventListener("stateadded", onSceneStateChange);+      scene.addEventListener("stateremoved", onSceneStateChange);++      return () => {+        scene.removeEventListener("stateadded", onSceneStateChange);+        scene.removeEventListener("stateremoved", onSceneStateChange);+      };+    },+    [scene]+  );++  // TODO: We probably shouldn't use freeze mode for users spawning emojis on a 2d device.

I especially like that when Discord's emoji button is hovered, it will change the emoji each time. I would like to do the same for our emoji button. Maybe it would fit for our "Place" menu too.

robertlong

comment created time in 3 days

PullRequestReviewEvent

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import React, { useEffect, useState, useCallback } from "react";+import PropTypes from "prop-types";+import { ReactComponent as ReactionIcon } from "../icons/Reaction.svg";+import { ToolbarButton } from "../input/ToolbarButton";++export function ReactionButtonContainer({ scene }) {+  const [isFrozen, setIsFrozen] = useState(scene.is("frozen"));++  useEffect(+    () => {+      function onSceneStateChange(event) {+        if (event.detail === "frozen") {+          setIsFrozen(scene.is("frozen"));+        }+      }++      scene.addEventListener("stateadded", onSceneStateChange);+      scene.addEventListener("stateremoved", onSceneStateChange);++      return () => {+        scene.removeEventListener("stateadded", onSceneStateChange);+        scene.removeEventListener("stateremoved", onSceneStateChange);+      };+    },+    [scene]+  );++  // TODO: We probably shouldn't use freeze mode for users spawning emojis on a 2d device.

I like the suggested design of the emoji popover menu as a first (or second) pass. I think eventually we'll want something integrated into the chat sidebar and easily extended / searchable like slack or discord's emoji menu: image image

robertlong

comment created time in 3 days

PullRequestReviewEvent

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import { waitForDOMContentLoaded } from "../utils/async-utils";++// Used for tracking and managing pen tools in the scene+AFRAME.registerSystem("pen-tools", {

You may also need to listen to alternative event for knowing when to update the place UI: https://github.com/mozilla/hubs/blob/redesign/toolbar-buttons/src/react-components/room/PlacePopoverContainer.js#L100

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

-import { useState, useEffect, useRef } from "react";+import { useState, useEffect, useRef, useCallback } from "react"; import MovingAverage from "moving-average"; -const MOVING_AVG_TIMESPAN = 100; const UPDATE_RATE = 50; -export function useMicrophoneVolume(scene) {+export function useMicrophone(scene, updateRate = UPDATE_RATE) {

Should this line below use updateRate (instead of UPDATE_RATE)? https://github.com/mozilla/hubs/blob/7159d67ccc84d6dfccf7bf3b1590275f04092367/src/react-components/room/useMicrophone.js#L29

Seems like you can remove UPDATE_RATE and write updateRate = 50.

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import React, { useEffect, useState, useCallback } from "react";+import PropTypes from "prop-types";+import { ReactComponent as ReactionIcon } from "../icons/Reaction.svg";+import { ToolbarButton } from "../input/ToolbarButton";++export function ReactionButtonContainer({ scene }) {+  const [isFrozen, setIsFrozen] = useState(scene.is("frozen"));++  useEffect(+    () => {+      function onSceneStateChange(event) {+        if (event.detail === "frozen") {+          setIsFrozen(scene.is("frozen"));+        }+      }++      scene.addEventListener("stateadded", onSceneStateChange);+      scene.addEventListener("stateremoved", onSceneStateChange);++      return () => {+        scene.removeEventListener("stateadded", onSceneStateChange);+        scene.removeEventListener("stateremoved", onSceneStateChange);+      };+    },+    [scene]+  );++  // TODO: We probably shouldn't use freeze mode for users spawning emojis on a 2d device.

+1 - Good idea to either implement a 2D emoji menu or separate the logic that ties their visibility to the frozen state. https://github.com/mozilla/hubs/blob/7159d67ccc84d6dfccf7bf3b1590275f04092367/src/components/emoji-hud.js#L88-L91

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import React, { useEffect, useState, useCallback } from "react";+import PropTypes from "prop-types";+import { ReactComponent as ReactionIcon } from "../icons/Reaction.svg";+import { ToolbarButton } from "../input/ToolbarButton";++export function ReactionButtonContainer({ scene }) {

We'll need to do some thinking around the UX for "send to 3D world" vs "send to chat" vs "send to both" . It is surprising to me that there's a "react" (emoji) menu in the toolbar rather than in the chat sidebar or the "Place" popover menu

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

 import { Popover } from "../popover/Popover"; import { ToolbarButton } from "../input/ToolbarButton"; import { ReactComponent as ObjectIcon } from "../icons/Object.svg"; -export function PlacePopoverButton({ items, onSelect }) {+export function PlacePopoverButton({ items }) {

I've mentioned this before but at some point I hope we find a clearer word for this menu than "Place". I suspect "Place" will give people the wrong impression of it being about "this place we're in" (aka the scene), not "place a pen in your hand or an object in the scene". Some alternatives to consider:

  • Add
  • Create
  • Load
  • New
  • Spawn
  • Generate

Similarly, I think "Share" is overloaded in the mobile world and we might want to consider something like, "Broadcast" or "Stream"

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import { waitForDOMContentLoaded } from "../utils/async-utils";++// Used for tracking and managing pen tools in the scene+AFRAME.registerSystem("pen-tools", {

This system tracks the pens you own, but since pens are not really "active" unless you are currently holding them, you could instead write:

function isMyPen(el) {
  isTagged(el, "isPen") && NAF.utils.isMine(el)
}
scene.systems.interaction.isHoldingAnything(isMyPen)

At the two call sites where this state is needed: https://github.com/mozilla/hubs/blob/7159d67ccc84d6dfccf7bf3b1590275f04092367/src/react-components/room/PlacePopoverContainer.js#L21 https://github.com/mozilla/hubs/blob/7159d67ccc84d6dfccf7bf3b1590275f04092367/src/components/in-world-hud.js#L18

This would allow you to remove the pen-tools system.

The only issue I can see with this approach is that you'd need to patch (or replace) isMine with a version that does not throw an error if you try it on something that is not itself or a child of a networked entity. (See https://github.com/MozillaReality/networked-aframe/blob/21c21536af77b3d726807699a3dcc0b7cd0e866e/src/utils.js#L92-L104 )

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import { waitForDOMContentLoaded } from "../utils/async-utils";++// Used for tracking and managing pen tools in the scene+AFRAME.registerSystem("pen-tools", {+  init() {+    this.penEls = [];+    this.updateMyPen = this.updateMyPen.bind(this);++    waitForDOMContentLoaded().then(() => {+      this.updateMyPen();+    });+  },++  register(el) {+    this.penEls.push(el);+    el.addEventListener("ownership-changed", this.updateMyPen);+    this.updateMyPen();+  },++  deregister(el) {+    this.penEls.splice(this.penEls.indexOf(el), 1);+    el.removeEventListener("ownership-changed", this.updateMyPen);+    this.updateMyPen();+  },++  getMyPen() {

Maybe would expose hasActivePen() since the only use is:

        const hasActivePen = !!scene.systems["pen-tools"].getMyPen();
robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

+import { waitForDOMContentLoaded } from "../utils/async-utils";++// Used for tracking and managing pen tools in the scene+AFRAME.registerSystem("pen-tools", {+  init() {+    this.penEls = [];+    this.updateMyPen = this.updateMyPen.bind(this);++    waitForDOMContentLoaded().then(() => {+      this.updateMyPen();+    });+  },++  register(el) {+    this.penEls.push(el);+    el.addEventListener("ownership-changed", this.updateMyPen);+    this.updateMyPen();+  },++  deregister(el) {+    this.penEls.splice(this.penEls.indexOf(el), 1);+    el.removeEventListener("ownership-changed", this.updateMyPen);+    this.updateMyPen();+  },++  getMyPen() {+    return this.myPen;+  },++  updateMyPen() {+    if (!this.penEls.length) {+      this.myPen = null;+    } else {+      this.myPen = this.penEls.find(NAF.utils.isMine);+    }

Can drop this if and just keep

      this.myPen = this.penEls.find(NAF.utils.isMine);

It will be undefined if penEls.length === 0 or if none of the penEls isMine. If it's important to be null instead of undefined,

      this.myPen = this.penEls.find(NAF.utils.isMine) || null;
robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Toolbar Buttons / Menus

 AFRAME.registerComponent("mute-mic", {     if (!NAF.connection.adapter) return;     if (!this.el.sceneEl.is("entered")) return; -    this.el.sceneEl.systems["hubs-systems"].soundEffectsSystem.playSoundOneShot(SOUND_TOGGLE_MIC);

I don't think this sound effect should be removed. If we are getting rid of it though, this is the only use of SOUND_TOGGLE_MIC so we can remove it from sound-effects-system.js too:

./src/systems/sound-effects-system.js:26:export const SOUND_TOGGLE_MIC = soundEnum++;
./src/systems/sound-effects-system.js:70:      [SOUND_TOGGLE_MIC, URL_TICK],
robertlong

comment created time in 3 days

PullRequestReviewEvent
PullRequestReviewEvent

issue commentmozilla/hubs

Encourage avatars to stand closer together

@camelgod I agree - A third-person mode (that actually works) would be really nice.

I would want a third person mode to communicate a person's interest. It is convenient that when most people are in first person most of the time, it is obvious where everyone is directing their attention because it is whatever their heads are directed at. This does not apply when the browser is not in focus (the user alt-tabbed) or for our current "inspect"/"focus" mechanic for media and avatars, and I'd love for us to do something for these cases too. This is also important for setting correct expectations in the room about who is within earshot or in view at a given time.

I would like a third person mode to allow for "sims-like" navigation. We already have a nav-mesh so implementation shouldn't be too difficult, and I think many users would feel more comfortable with a point-and-click (or touch) interface for directing the avatar rather than having to operate WASD, on-screen joysticks, or pinch gestures.

Camera rules for third person are often made to be aware of the scene in important ways (so that it either cuts-out certain geometry to show your character or restricts motion in a way that is flattering to the level design). I doubt we'd want to go deep on this aspect because in-room content is so dynamic and customizable.

I would like to experiment with a "streamer-focused" viewing mode that allowed for full-screen, ui-less capture in one window and a control panel in a second window. This may allow setting up multiple camera angles/shots, tracking, etc. I could see this being a value-add for a twitch streamer who wants to interact with a few audience members in hubs while a moderator operates the "hubs streamer mode" ui to decide what to shown on the twitch stream.

johnshaughnessy

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Object List and Object Menu

+import React, { useState, useEffect, useContext, createContext, useCallback, Children, cloneElement } from "react";+import PropTypes from "prop-types";+import { mediaSort, getMediaType } from "../../utils/media-sorting.js";++function getDisplayString(el) {+  // Having a listed-media component does not guarantee the existence of a media-loader component,+  // so don't crash if there isn't one.+  const url = (el.components["media-loader"] && el.components["media-loader"].data.src) || "";+  const split = url.split("/");+  const resourceName = split[split.length - 1].split("?")[0];+  let httpIndex = -1;+  for (let i = 0; i < split.length; i++) {+    if (split[i].indexOf("http") !== -1) {+      httpIndex = i;+    }+  }++  let host = "";+  let lessHost = "";+  if (httpIndex !== -1 && split.length > httpIndex + 3) {+    host = split[httpIndex + 2];+    const hostSplit = host.split(".");+    if (hostSplit.length > 1) {+      lessHost = `${hostSplit[hostSplit.length - 2]}.${hostSplit[hostSplit.length - 1]}`;+    }+  }++  const firstPart =+    url.indexOf("poly.google") !== -1+      ? "Google Poly"+      : url.indexOf("sketchfab.com") !== -1+        ? "Sketchfab"+        : url.indexOf("youtube.com") !== -1+          ? "YouTube"+          : lessHost;++  return `${firstPart} ... ${resourceName.substr(0, 4)}`;+}++const ObjectListContext = createContext({+  objects: [],+  focusedObject: null,+  selectedObject: null,+  focusObject: () => {},+  unfocusObject: () => {},+  inspectObject: () => {},+  uninspectObject: () => {}+});++export function ObjectListProvider({ scene, children }) {+  const [objects, setObjects] = useState([]);+  const [focusedObject, setFocusedObject] = useState(null); // The object currently shown in the viewport+  const [selectedObject, setSelectedObject] = useState(null); // The object currently selected in the object list++  useEffect(+    () => {+      function updateMediaEntities() {+        const objects = scene.systems["listed-media"].els.sort(mediaSort).map(el => ({+          id: el.object3D.id,+          name: getDisplayString(el),+          type: getMediaType(el),+          el+        }));++        setObjects(objects);+      }++      let timeout;++      function onListedMediaChanged() {+        // HACK: The listed-media component exists before the media-loader component does, in cases where an entity is created from a network template because of an incoming message, so don't updateMediaEntities right away.+        // Sorry in advance for the day this comment is out of date.+        timeout = setTimeout(() => updateMediaEntities(), 0);+      }++      scene.addEventListener("listed_media_changed", onListedMediaChanged);++      updateMediaEntities();++      return () => {+        scene.removeEventListener("listed_media_changed", updateMediaEntities);+        clearTimeout(timeout);+      };+    },+    [scene, setObjects]+  );++  useEffect(+    () => {+      function onInspectTargetChanged() {+        const cameraSystem = scene.systems["hubs-systems"].cameraSystem;++        const focusedEl = focusedObject && focusedObject.el;+        const selectedEl = selectedObject && selectedObject.el;+        const inspectedEl = cameraSystem.inspectable && cameraSystem.inspectable.el;++        if (inspectedEl && inspectedEl !== selectedEl && inspectedEl !== focusedEl) {+          setSelectedObject({+            id: inspectedEl.object3D.id,+            name: getDisplayString(inspectedEl),+            type: getMediaType(inspectedEl),+            el: inspectedEl+          });+        } else if (!inspectedEl && !focusedEl && selectedEl) {+          setSelectedObject(null);+        }+      }++      scene.addEventListener("inspect-target-changed", onInspectTargetChanged);++      return () => {+        scene.removeEventListener("inspect-target-changed", onInspectTargetChanged);+      };+    },+    [scene, setSelectedObject, objects, focusedObject, selectedObject]+  );++  const selectObject = useCallback(+    object => {+      const cameraSystem = scene.systems["hubs-systems"].cameraSystem;++      setSelectedObject(object);++      if (object.el.object3D !== cameraSystem.inspectable) {+        cameraSystem.enableLights = false;+        cameraSystem.inspect(object.el.object3D, object.el.object3D, 1.5, true);+      }+    },+    [scene, setSelectedObject]+  );++  const deselectObject = useCallback(+    () => {+      const cameraSystem = scene.systems["hubs-systems"].cameraSystem;++      setSelectedObject(null);++      if (!focusedObject) {+        cameraSystem.enableLights = true;+        cameraSystem.uninspect();+      }+    },+    [scene, setSelectedObject, focusedObject]+  );++  const focusObject = useCallback(+    object => {+      const cameraSystem = scene.systems["hubs-systems"].cameraSystem;++      setFocusedObject(object);++      if (object.el.object3D !== cameraSystem.inspectable) {+        cameraSystem.enableLights = false;

Whether to show or hide other objects while focusing one is optional, so this setting should come from a user preference (in local storage). This allows us to view something individually or view something in its larger context.

Currently this setting affects object focus (via the objects menu or in the world) and avatar focus (yourself or others). See https://github.com/mozilla/hubs/pull/3193/files#diff-5be16d87c7d3814f9e1d500130ad516e731de0aae3ad2682a6d89c42e3660871L162 for details

I'm open to suggestions for how to improve the UX here (e.g. including this option from the other focus modes), but I don't think we should drop it entirely.

robertlong

comment created time in 10 days

Pull request review commentmozilla/hubs

Room UI Redesign: Object List and Object Menu

 export class MouseDevice {     const left = event.button === 0;     const middle = event.button === 1;     const right = event.button === 2;-    this.coords[0] = (event.clientX / window.innerWidth) * 2 - 1;-    this.coords[1] = -(event.clientY / window.innerHeight) * 2 + 1;+    // Note: This assumes the canvas always starts in the top left.+    // This works with the current sidebar and toolbar layout.+    this.coords[0] = (event.clientX / this.canvas.clientWidth) * 2 - 1;+    this.coords[1] = -(event.clientY / this.canvas.clientHeight) * 2 + 1;

May need to update similar lines for touchscreens:

./src/systems/userinput/devices/app-aware-touchscreen.js:46:      x: (touch.clientX / window.innerWidth) * 2 - 1,
./src/systems/userinput/devices/app-aware-touchscreen.js:174:          (touch.clientX / window.innerWidth) * 2 - 1,
./src/systems/userinput/devices/app-aware-touchscreen.js:234:        (touch.clientX / window.innerWidth) * 2 - 1,
./src/systems/userinput/devices/app-aware-touchscreen.js:355:      frame.setVector2(path.touchCameraDelta, delta[0] / window.innerWidth, delta[1] / window.innerHeight);

It probably won't affect phones because the panels are full-screen takeovers but for bigger touchscreens like ipads, not updating it may cause issues.

robertlong

comment created time in 3 days

Pull request review commentmozilla/hubs

Room UI Redesign: Object List and Object Menu

-import { getInspectableAndPivot } from "../systems/camera-system";- AFRAME.registerComponent("inspect-button", {   tick() {     if (!this.initializedInTick) {       // initialize in tick so that parent's `tags` component has been initialized       this.initializedInTick = true;--      const { inspectable, pivot } = getInspectableAndPivot(this.el);-      if (!pivot) {-        console.error("You put an inspect button but I could not find what you want to inspect.", this.el);-        return;-      }       this.el.object3D.addEventListener("holdable-button-down", () => {-        this.el.sceneEl.systems["hubs-systems"].cameraSystem.inspect(inspectable, pivot, 1, false);+        this.el.sceneEl.systems["hubs-systems"].cameraSystem.inspect(this.el, 1, false);

This may be a regression. Looks like maybe a merge issue. (This file was changed recently. See https://github.com/mozilla/hubs/pull/3067/files#diff-8f22548036a0d3e2a5ede88cf78c72672eb39cd724f8919c05e8352fd27a8cd4R15) Edit: nevermind - I see the related change to camera-system.js

robertlong

comment created time in 7 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmozilla/hubs

Landing page panels

   "home.terms_of_use": "Terms of Use",   "home.made_with_love": "made with 🦆 by ",   "home.environment_author_by": " by ",+  "home.rooms-title": "Instantly create rooms",+  "home.rooms-blurb": "Share virtual spaces with your friends, co-workers, and communities. When you create a room with Hubs, you’ll have a private virtual meeting space that you can instantly share - no downloads or VR headset necessary.",+  "home.communicate-title": "Communicate naturally",+  "home.communicate-blurb": "Choose an avatar to represent you, put on your headphones, and jump right in. Hubs makes it easy to stay connected with voice and text chat to other people in your private room.",

lol, yep. :facepalm:

brianpeiris

comment created time in 6 days

PullRequestReviewEvent

Pull request review commentmozilla/hubs

Landing page panels

   "home.terms_of_use": "Terms of Use",   "home.made_with_love": "made with 🦆 by ",   "home.environment_author_by": " by ",+  "home.rooms-title": "Instantly create rooms",+  "home.rooms-blurb": "Share virtual spaces with your friends, co-workers, and communities. When you create a room with Hubs, you’ll have a private virtual meeting space that you can instantly share - no downloads or VR headset necessary.",+  "home.communicate-title": "Communicate naturally",+  "home.communicate-blurb": "Choose an avatar to represent you, put on your headphones, and jump right in. Hubs makes it easy to stay connected with voice and text chat to other people in your private room.",

I'm a bit concerned that the "put on your headset" part will turn non-VR users away, but it may be OK because rooms-blurb says "no downloads or VR headset necessary"

brianpeiris

comment created time in 6 days

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentmozilla/reticulum

Add steps to setup Reticulum against a local Dialog instance to the README

Thanks for writing this up! I have never set up dialog (and not dialog + reticulum)

keianhzo

comment created time in 7 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 497d97c0f0abb5adbcc7e63169302bc1ee95bfc3

Remove outdated tests

view details

push time in 8 days

issue commentmozilla/hubs

Preload avatar, camera, and pen to prevent hitching

I think we do preload the camera (here https://github.com/mozilla/hubs/blob/master/src/components/camera-tool.js#L13 ), but do not preload the avatar or the pen.

johnshaughnessy

comment created time in 8 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 2eb49341fb72f4b3fccbf6809edaff62501dbe68

Remove unused function

view details

push time in 8 days

push eventmozilla/reticulum

John Shaughnessy

commit sha f121458162d0d47206d2faa707b29a5b701a2a95

Remove unused function

view details

push time in 8 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 1de05d78efd6e17623a3cf81ac2d30c4e48c4fc2

Implement can? for :reticulum_app_token

view details

John Shaughnessy

commit sha e2eec9b33765c6352fb0873560f5002abe9a4e67

Put generated token onto clipboard

view details

John Shaughnessy

commit sha 6f5a4e69f17c7aa55553317cbc0b906735a2d211

Check permissions for getting public rooms

view details

push time in 8 days

push eventmozilla/reticulum

John Shaughnessy

commit sha a386b8fc2ae85b2db50e4d550ed0eaa5ba98783b

Remove IO.inspect

view details

John Shaughnessy

commit sha b876e8632c95dd483dc98d7755ba46303cd64432

Fix warnings

view details

push time in 8 days

PullRequestReviewEvent

issue commentmozilla/hubs

Increase (or remove) NOISY_OCCUPANT_COUNT

@misslivirose I suggested a number (30) higher than the default room size because:

  • I think most join/leave events have been helpful to the conversation I've been in and confusing when they're absent (e.g. people asking, "Where's so-and-so?" not realizing that that person just left, or refreshed and is in the lobby)
  • I don't want to completely remove this limit in case there are many, many people in the lobby
  • It will be more obvious if someone joins the lobby and then is blocked from joining the room (because it is full)

I like the idea of making it configurable at the room setting level. I think the default number should be higher, but maybe not. I suspect we'll eventually want a more nuanced design around this besides "above this number, there's no notification". This could mean a chat filter or auto-combining join/leaves. ("John, Liv, and 4 others entered the lobby"). For now though I figured I'd make this issue because I've noticed this come up frequently in our internal (hubs) meetings.

johnshaughnessy

comment created time in 8 days

push eventmozilla/reticulum

John Shaughnessy

commit sha b9a717531705a8f5c8ae2341d4c00c727d480894

Remove commented code

view details

John Shaughnessy

commit sha 82108fd6e43974d509e8ea261db76bcd7f698b30

Remove unused permissions

view details

push time in 10 days

push eventmozilla/reticulum

John Shaughnessy

commit sha a279ce511ff67b82d398e06a8854569d368f44df

Remove unused middleware

view details

push time in 10 days

push eventmozilla/reticulum

John Shaughnessy

commit sha 05d800811302f22ba9fd80c57ad3fa102e9f0d0a

Add some notes for graphiql testing

view details

push time in 10 days

push eventmozilla/reticulum

John Shaughnessy

commit sha dc45130f04be1fd1cda531ca6652594337e464bb

Generate random room names

view details

John Shaughnessy

commit sha 5084f616a77b74009978efc448f394b2f2d869ff

Reimplement create and update room with auth

view details

push time in 10 days

push eventmozilla/reticulum

John Shaughnessy

commit sha f365bca7ad31be004610a319279026be397262c4

Remove insert auth header helper

view details

John Shaughnessy

commit sha e699e8bcf941753edc879e77c31370ce7536f529

Minor changes

view details

John Shaughnessy

commit sha f96f2262ea64e9ce5e8504d98e280d2eea082833

Remove unnecessary middleware

view details

John Shaughnessy

commit sha 69902c7dda92dc22cfc3a78ec4c875eef89eaa33

Rename Ret.ApiToken -> Ret.Api.Token

view details

John Shaughnessy

commit sha f652f0cee02287c9ff7dfffdace39024b4970d4c

Update room access pattern for user and app tokens

view details

John Shaughnessy

commit sha 9a5c0899b2e02d19f86431692676cd1b0c3f9ce0

Fix tests and warnings

view details

push time in 10 days

issue openedmozilla/hubs

Increase (or remove) NOISY_OCCUPANT_COUNT

Is your feature request related to a problem? Please describe. When we are in meetings of ~15 people, we often still want to know when someone joins or leaves. We have to scan the user list to figure out who is still in the room.

Describe the solution you'd like Increase the NOISY_OCCUPANT_COUNT to 30

Describe alternatives you've considered

  • Remove NOISY_OCCUPANT_COUNT or choose a different number.
  • Add an option to filter the chat so that you only see join/leave events or only see chat messages.

Additional context

NOISY_OCCUPANT_COUNT is set here: https://github.com/mozilla/hubs/blob/3694931de7434a1032040581a60c0b2da349027c/src/hub.js#L178

created time in 10 days

issue openedmozilla/hubs

Improve the in-client description / documetnation of what `/audiomode` does

The /audiomode command is frequently misunderstood. When you toggle it (or see it in the command tip box), it says "positional audio disabled/enabled". This leads people to think it should make all audio sound the same, but it does something different:

It does not disable distance-based attenuation. It disables panner-nodes, so that left/right forward/back directionality will be removed. It replaces the distance-based attenuation from THREE.PositionalAudios with a different falloff curve ( https://github.com/mozilla/hubs/blob/master/src/components/avatar-volume-controls.js#L60 )

I don't know the best way to explain this in a few words ( maybe "toggle left/right panning" ), but it would be good if this feature was explained more clearly in the client and in the docs https://github.com/MozillaReality/hubs-docs/blob/c50f02cece06f70b23d91bcd87f36c16637005e9/docs/hubs-features.md

created time in 10 days

delete branch mozilla/Spoke

delete branch : bug/cant-disable-teleporting

delete time in 10 days

push eventmozilla/Spoke

John Shaughnessy

commit sha 37a6f42567653924bbbbd50a95bc370084f29557

Fix typo that makes it impossible to disable teleporting

view details

jshaughnessy

commit sha d787463ce4c778b4081a4f5c909e4e80463add29

Merge pull request #997 from mozilla/bug/cant-disable-teleporting Fix bug that makes it impossible to disable teleporting

view details

push time in 10 days

PR merged mozilla/Spoke

Fix bug that makes it impossible to disable teleporting

Fix https://github.com/mozilla/Spoke/issues/996

There was a typo in the node editor for waypoints that prevented users from disabling teleport.

In Spoke we had a mix of willDisableTeleporting and willDisableTeleport :

./test/integration/snapshots/Editor.test.js.md:2114:                willDisableTeleporting: false,
./test/fixtures/V4TestScene.spoke:1:[Omitted long matching line]
./src/editor/nodes/WayPointNode.js:31:    this.willDisableTeleporting = false;
./src/editor/nodes/WayPointNode.js:53:    this.willDisableTeleporting = source.willDisableTeleporting;
./src/editor/nodes/WayPointNode.js:76:        willDisableTeleporting: this.willDisableTeleporting,
./src/editor/nodes/WayPointNode.js:92:    node.willDisableTeleporting = waypoint.props.willDisableTeleporting;
./src/editor/nodes/WayPointNode.js:106:      willDisableTeleporting: this.willDisableTeleporting,
./src/ui/properties/WayPointNodeEditor.js:13:  "waypoint.label-willDisableTeleport": "Disable Teleporting",
./src/ui/properties/WayPointNodeEditor.js:22:  "waypoint.description-willDisableTeleport": "Avatars will not be able to teleport after using this waypoint",
./src/ui/properties/WayPointNodeEditor.js:34:  "willDisableTeleport",

In Hubs we have willDisableTeleporting:

./src/gltf-component-mappings.js:116:    willDisableTeleporting: false,
./src/systems/waypoint-system.js:390:    willDisableTeleporting: { default: false },
./src/systems/character-controller-system.js:177:          (!isMobile || this.activeWaypoint.waypointComponentData.willDisableTeleporting);
./src/systems/character-controller-system.js:178:        this.isTeleportingDisabled = this.activeWaypoint.waypointComponentData.willDisableTeleporting;
./src/react-components/object-info-dialog.js:181:        willDisableTeleporting: false,
+3 -3

1 comment

1 changed file

johnshaughnessy

pr closed time in 10 days

issue closedmozilla/Spoke

Way Point option Disable Teleporting is broken

Just testing out the Way Point element and tried to apply the option Disable Teleporting but after clicking on the way point I'm still able to teleport. Using Chrome on desktop.

Wasn't sure if this belongs in Spoke or Hubs.

closed time in 10 days

SeanBannister

push eventmozilla/Spoke

Marcus Morba

commit sha a007e434e4800529e1c32f8369222ea35c7ffd52

Update REMIXING.md ... you account -> your account

view details

jshaughnessy

commit sha de87289da846af20da81a0aba7766d7d26ff1c5f

Merge pull request #962 from MarcusMorba/patch-1 Update REMIXING.md

view details

push time in 10 days

PR merged mozilla/Spoke

Update REMIXING.md

... you account -> your account

+1 -1

1 comment

1 changed file

MarcusMorba

pr closed time in 10 days

push eventmozilla/Spoke

Sean Bannister

commit sha bac3ec0314eaf7367b204f5a54f46723f55fe952

Better describe what the Link element does.

view details

Robert Long

commit sha 4f83b60f2bf0a261cec35e38fbfa89863681d8fd

Reuse existing project when importing

view details

Robert Long

commit sha 8d2742fedb1064cc803b969e444ae3214b089cbf

Fix tests for alpha properties

view details

Robert Long

commit sha 05b9db37a4dcde8943fad985ed59826203a1f8a8

Replace remote assets with local ones when possible

view details

Robert Long

commit sha ddf441cf6738c293c392d6309e280bbbcfd10469

Merge pull request #1001 from mozilla/fix/update-test-snapshots Fix Test Snapshots

view details

Robert Long

commit sha 069087b41c9efbe092a439e804943432c219c87b

Merge branch 'master' into fix/import-project-scene

view details

Robert Long

commit sha f7fe635beb4d3828ef4c378906718199b5402194

Run tests serially and update ava

view details

Robert Long

commit sha d2326b68cdb6d8b5edbcea30a89e4a47491a6654

Update node version for ci

view details

Robert Long

commit sha 2598831ba7b5a766a56bfeb05b3b6a46130e5339

Try chromium in ci instead of chrome

view details

Robert Long

commit sha fc5dcb821f9cdb8ca84a51bde12ad110caa88911

Update test snapshots for webm video

view details

Robert Long

commit sha a1d5d66fb76b58b489fe7ee316e8f6a3381051a4

Try running headless

view details

Robert Long

commit sha cf8d7c220b858cc71071aeb6128ba82e0d126aa0

Add test reporting

view details

Robert Long

commit sha 6e3062a19871bb894e8fd8f9add8f47b79544577

Test failure

view details

Robert Long

commit sha 5cb0722971da5656e6de04b39eda5b28b8f204e0

Fix test

view details

Robert Long

commit sha 544aca50606cf9171ae9c52d33552d3692c70545

Merge pull request #1004 from mozilla/fix/update-test-snapshots Move to headless chromium and add test reporting for CI

view details

Robert Long

commit sha db9eb59a81b65fd7d5390e69b54525a855003af6

Merge branch 'master' into fix/import-project-scene

view details

Robert Long

commit sha 1619d20999b9534d14c4742c3ea6de5bb29a654b

Merge pull request #1000 from mozilla/fix/import-project-scene Reuse existing project when importing

view details

Robert Long

commit sha 360f8129f493a06c57362c16c9289dcf329e389d

Mark scene modified after importing project

view details

Robert Long

commit sha 4f488795c1a4342f6a4d74e5b9595819481d776b

Merge pull request #1005 from mozilla/fix/import-scene-modified Mark scene modified after importing project

view details

Robert Long

commit sha bd2b001b2339131ce34262490729466514cb80ad

Add ScenePreviewCameraNode

view details

push time in 10 days

push eventMozillaReality/hubs-docs

John Shaughnessy

commit sha e9e7c36000fce76bca6dfe969c8325342870dbd3

Update query string parameters

view details

jshaughnessy

commit sha 6dc0fba212f8e7301cc7a21d8c50e5f28fcbc18e

Merge pull request #75 from MozillaReality/update-query-string-parameters Update query string parameters

view details

push time in 10 days

PR merged MozillaReality/hubs-docs

Update query string parameters

Corresponds with this Hubs PR : https://github.com/mozilla/hubs/pull/3179

+4 -2

0 comment

1 changed file

johnshaughnessy

pr closed time in 10 days

push eventmozilla/hubs

John Shaughnessy

commit sha 9655b732617531fe4a6b4a4099058116bbd950f8

Reintroduce query string quality settings

view details

John Shaughnessy

commit sha 6c996cc5136505c283a6cf1ac1cb69a3e47476cc

Rename qs parameter enabling touchscreen

view details

John Shaughnessy

commit sha 7009922de0416d78648a1d24dd855a201e030f77

Don't need try/catch

view details

jshaughnessy

commit sha 3694931de7434a1032040581a60c0b2da349027c

Merge pull request #3179 from mozilla/feature/query_string_quality_settings Set quality setting with query string parameters (again)

view details

push time in 10 days

delete branch mozilla/hubs

delete branch : feature/query_string_quality_settings

delete time in 10 days

PR merged mozilla/hubs

Set quality setting with query string parameters (again)

Fix https://github.com/mozilla/hubs/issues/2937 after a failed attempt that needed to be reverted (https://github.com/mozilla/hubs/pull/2959)

+28 -12

0 comment

3 changed files

johnshaughnessy

pr closed time in 10 days

issue closedmozilla/hubs

Set quality setting with query string parameters (again)

Is your feature request related to a problem? Please describe. We used to set the quality setting with a query string parameter. I removed this feature when adding the preference screen, thinking that it was best left as an end-user feature, and didn't want there to be confusion on the part of the end user in cases where the query string parameter did not match the user pref.

Describe the solution you'd like Re-enable the ability to set quality via query string parameter. If end user has a specific preference saved, I think the user pref should take priority, but if the user does not have any preferences, the query string parameter should take precedence.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Crimson's team ran into this problem because they wanted people's default quality setting to be "low" instead of "high" but couldn't do this with the query string parameter.

Also update the docs when doing this : https://hubs.mozilla.com/docs/hubs-query-string-parameters.html

closed time in 10 days

johnshaughnessy

push eventmozilla/hubs

John Shaughnessy

commit sha 7009922de0416d78648a1d24dd855a201e030f77

Don't need try/catch

view details

push time in 10 days

delete branch mozilla/hubs

delete branch : bug/environment-transition-to-same-scene

delete time in 10 days

push eventmozilla/hubs

John Shaughnessy

commit sha da0d47e52cf2c20354713b8bdd936d2cd559ab9f

Fix scene transitions when src url does not change

view details

jshaughnessy

commit sha a1c1fec82f1b57c52e52202da654b25c97608a40

Merge pull request #3088 from mozilla/bug/environment-transition-to-same-scene Fix scene transitions when src url does not change

view details

push time in 10 days

PR merged mozilla/hubs

Fix scene transitions when src url does not change

If the src of the environment's gltf-model-plus doesn't change (which might happen if you are going to/from the loading scene url on purpose, or if two scene transitions occur in rapid succession), then update is never called and you can get stuck with a black screen because the transition never finishes and the fader never fades back in.

+8 -0

1 comment

1 changed file

johnshaughnessy

pr closed time in 10 days

push eventmozilla/hubs

John Shaughnessy

commit sha 769e364eefbcb6483cd4b92e1d45226361e2bd81

Fix bug where audio is not initialized in the correct place

view details

jshaughnessy

commit sha 4639c97528e26ade810f4574ff003e90be601f96

Merge pull request #3121 from mozilla/bug/invisible-audio-nodes Fix bug where invisible audio nodes initialize at the origin

view details

push time in 10 days

delete branch mozilla/hubs

delete branch : bug/invisible-audio-nodes

delete time in 10 days

PR merged mozilla/hubs

Fix bug where invisible audio nodes initialize at the origin

Fix https://github.com/mozilla/hubs/issues/2855

+5 -0

0 comment

1 changed file

johnshaughnessy

pr closed time in 10 days

issue closedmozilla/hubs

Spatial sound appears to be coming from the wrong location

This remixed scene contains a spatial audio source co-located with a model of a radio. However, the sound is loudest on the boardwalk several metres away from the source.

Tested on:

  • Chrome Version 85.0.4183.59 (Official Build) beta (64-bit) on MacOS
  • Firefox 79.0 (64-bit) on MacOs

closed time in 10 days

rawnsley

push eventmozilla/hubs

John Shaughnessy

commit sha cb9f4d5eee6b0e74a3669e35a06a150f868118e5

Use audio listener for distance based attenuation

view details

jshaughnessy

commit sha 1cbe651cc533d4eb72ee42eb53aad4f1d882c4aa

Merge pull request #3118 from mozilla/bug/audio-listener-for-media Use audio listener for distance based attenuation

view details

push time in 10 days

delete branch mozilla/hubs

delete branch : bug/audio-listener-for-media

delete time in 10 days

PR merged mozilla/hubs

Use audio listener for distance based attenuation

Same fix as https://github.com/mozilla/hubs/pull/3090 but for other media objects in the room.

+1 -1

0 comment

1 changed file

johnshaughnessy

pr closed time in 10 days

push eventmozilla/hubs

Thomas Ortega II

commit sha 66d42147c56050e8d773a83e8e53b610cf78e5f1

Align buttons to center Adjusted top margin for object-list-button, presence-list-button and corner-button to 20 to give the desired centered effect. Fixes mozilla/hubs#1132

view details

Artem Bolgar

commit sha e02d1497904ff87c8be981f9e35d61f659636a59

Fixing exception and black screen on Quest, when Quest is in Hands tracking mode. In the hands mode, the controllers are emulated by the hands. They are represented with the gamepad object with a single button and no axis. Current code expects to have two buttons and two sets of axis, which causes an exception and malfunction.

view details

robin

commit sha 13e912f8205a4fb28e624988c953669713ba3483

remove create button for avatars

view details

John Shaughnessy

commit sha ed15a0bc2347c7963fce828fe00fcfe8c29601c6

Remove space from event name

view details

Manuel Martin

commit sha 87acd54b355652d58f74f0036e79d89eef1ea31a

Update loop-animation struct

view details

Manuel Martin

commit sha c19208155e3f05e44d7191b7fa769f2960c2014f

Update loop-animation schema wip

view details

John Shaughnessy

commit sha 274f076a8f60abb23e6d20db3201ec0bdd5a2cbd

Add ability to inspect avatars

view details

John Shaughnessy

commit sha ecaf2680282a6afbbea6bb239869bd49743af44f

Add ability to inspect yourself

view details

John Shaughnessy

commit sha bf2345a53e535708e2bec826ad788f571cf92c10

Fix avatar inspection when lights are hidden

view details

tfernandesbr

commit sha f817cef2d1555e02b31def173e3cb6f7a0d760a8

pt-br translation add brazilian portuguese support to hubs Co-Authored-By: peusodre <62905555+peusodre@users.noreply.github.com>

view details

John Shaughnessy

commit sha e39145942f59855d92461158b211148c3b831373

Use audio listener for falloff, not camera

view details

Manuel Martin

commit sha f6e481fed049393162d5ae510c65982d9fb3e30a

Fixes the room description scroll

view details

John Shaughnessy

commit sha f6f27244b1447b9e9cfd55fdbd50eddb2e13e5ce

lint

view details

John Shaughnessy

commit sha 6bdfb566965f396fd11bd3345ebdb585f4b59f85

Add user-submitted Japanese translations

view details

John Shaughnessy

commit sha 04bd46828fdc19ba06bdf3fbf67eb2e1771f3032

Ran node sync_locales.js

view details

Manuel Martin

commit sha 20d5d115138205a2306a7868c18cfbd722f65bfb

Get the device Id from the audio track instead of the outbound stream

view details

John Shaughnessy

commit sha 695c28963e239cad8c88aa66e9cbdcc1dccf3e4c

Smaller box, Don't write to depth

view details

John Shaughnessy

commit sha dc92e8da2a7d39a9623cf9a549aecf7f30577614

Merge remote-tracking branch 'origin/feature/inspect-yourself' into feature/inspect-avatars

view details

John Shaughnessy

commit sha b80abf7eea3f7dd30afe031795f3e8cd11f97a0a

PR feedback

view details

John Shaughnessy

commit sha 139f2656d19678a05ff8c1eecbe90bc4b6125517

Rename avatar-inspect-collider

view details

push time in 14 days

PullRequestEvent
more