Skip to content
Snippets Groups Projects
Commit 69e5a3a2 authored by Greg Fodor's avatar Greg Fodor
Browse files

Refactor

parent 5cf7e6c2
No related branches found
No related tags found
No related merge requests found
import nextTick from "../utils/next-tick";
import SketchfabZipWorker from "../workers/sketchfab-zip.worker.js";
import cubeMapPosX from "../assets/images/cubemap/posx.jpg";
import cubeMapNegX from "../assets/images/cubemap/negx.jpg";
......@@ -190,12 +191,6 @@ function attachTemplate(root, name, templateRoot) {
}
}
function nextTick() {
return new Promise(resolve => {
setTimeout(resolve, 0);
});
}
function getFilesFromSketchfabZip(src) {
return new Promise((resolve, reject) => {
const worker = new SketchfabZipWorker();
......
......@@ -20,6 +20,7 @@ import "aframe-motion-capture-components";
import "./utils/audio-context-fix";
import { getReticulumFetchUrl } from "./utils/phoenix-utils";
import nextTick from "./utils/next-tick";
import trackpad_dpad4 from "./behaviours/trackpad-dpad4";
import trackpad_scrolling from "./behaviours/trackpad-scrolling";
import joystick_dpad4 from "./behaviours/joystick-dpad4";
......@@ -264,47 +265,30 @@ async function handleHubChannelJoined(entryManager, data) {
entryManager.enterSceneWhenLoaded(new MediaStream(), false);
}
const sendHubDataMessage = function(clientId, dataType, data, reliable) {
const event = "naf";
const payload = { dataType, data };
while (!scene.components["networked-scene"] || !scene.components["networked-scene"].data) await nextTick();
if (clientId != null) {
payload.clientId = clientId;
}
if (reliable) {
hubChannel.channel.push(event, payload);
} else {
const topic = hubChannel.channel.topic;
const join_ref = hubChannel.channel.joinRef();
hubChannel.channel.socket.push({ topic, event, payload, join_ref, ref: null }, false);
}
};
const connectWhenNetworkedSceneReady = () => {
if (!scene.components["networked-scene"] || !scene.components["networked-scene"].data) {
setTimeout(connectWhenNetworkedSceneReady, 0);
return;
}
scene.components["networked-scene"]
.connect()
.then(() => {
NAF.connection.adapter.reliableTransport = (clientId, dataType, data) => {
const payload = { dataType, data };
scene.components["networked-scene"]
.connect()
.then(() => {
NAF.connection.adapter.reliableTransport = (clientId, dataType, data) =>
sendHubDataMessage(clientId, dataType, data, true);
})
.catch(connectError => {
// hacky until we get return codes
const isFull = connectError.error && connectError.error.msg.match(/\bfull\b/i);
console.error(connectError);
remountUI({ roomUnavailableReason: isFull ? "full" : "connect_error" });
entryManager.exitScene();
if (clientId) {
payload.clientId = clientId;
}
return;
});
};
hubChannel.channel.push("naf", payload);
};
})
.catch(connectError => {
// hacky until we get return codes
const isFull = connectError.error && connectError.error.msg.match(/\bfull\b/i);
console.error(connectError);
remountUI({ roomUnavailableReason: isFull ? "full" : "connect_error" });
entryManager.exitScene();
connectWhenNetworkedSceneReady();
return;
});
}
document.addEventListener("DOMContentLoaded", () => {
......
export default function nextTick() {
return new Promise(resolve => {
setTimeout(resolve, 0);
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment