Added some missing html5 boilerplate and service worker.
@ -36,6 +36,13 @@
|
|||||||
</style>
|
</style>
|
||||||
<link as="script" href="/newRelic.js" rel="preload">
|
<link as="script" href="/newRelic.js" rel="preload">
|
||||||
<script src="/newRelic.js"></script>
|
<script src="/newRelic.js"></script>
|
||||||
|
<meta content="width=device-width, initial-scale=1" name="viewport">
|
||||||
|
<meta content="An immersive vr diagramming experience based on a-frame and webxr" name="description">
|
||||||
|
<link href="/assets/favicon-16x16.png" rel=icon sizes="16x16" type="image/png">
|
||||||
|
<link href="/assets/favicon-32x32.png" rel=icon sizes="32x32" type="image/png">
|
||||||
|
<link href="/assets/favicon-96x96.png" rel=icon sizes="96x96" type="image/png">
|
||||||
|
<link href="/manifest.webmanifest" rel="manifest"/>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="loader" id="loader">Loading...</div>
|
<div class="loader" id="loader">Loading...</div>
|
||||||
|
|||||||
BIN
public/assets/android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/assets/com.oculus.browser-20230121-110512.jpg
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
public/assets/com.oculus.browser-20230121-110746.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
public/assets/com.oculus.browser-20230121-111323.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
public/assets/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 669 B |
BIN
public/assets/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
public/assets/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
public/assets/icon-512x512.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/assets/sounds/birds.mp3
Normal file
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 5.5 MiB |
49
public/manifest.webmanifest
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"name": "Deep Diagram",
|
||||||
|
"display": "standalone",
|
||||||
|
"start_url": "https://deepdiagram.com",
|
||||||
|
"scope": "https://deepdiagram.com",
|
||||||
|
"short_name": "Deep Diagram",
|
||||||
|
"theme_color": "#000000",
|
||||||
|
"background_color": "#000000",
|
||||||
|
"description": "Immersive diagraming tool to dig into deeper meaning behind your ideas",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/assets/android-icon-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "any"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/assets/icon-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"utilities",
|
||||||
|
"business",
|
||||||
|
"education",
|
||||||
|
"productivity"
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"src": "/assets/com.oculus.browser-20230121-110512.jpg",
|
||||||
|
"sizes": "1024x1024",
|
||||||
|
"type": "image/jpeg",
|
||||||
|
"label": "Example 1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/assets/com.oculus.browser-20230121-110746.jpg",
|
||||||
|
"sizes": "1024x1024",
|
||||||
|
"type": "image/jpeg",
|
||||||
|
"label": "Example 2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/assets/com.oculus.browser-20230121-111323.jpg",
|
||||||
|
"sizes": "1024x1024",
|
||||||
|
"type": "image/jpeg",
|
||||||
|
"label": "Complex Architecture Diagram"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
46
public/sw.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
const VERSION = '0';
|
||||||
|
const CACHE = "pwabuilder-offline";
|
||||||
|
const PRECACHE_ASSETS = [
|
||||||
|
'/grass1.jpeg',
|
||||||
|
'/loading-loading-forever.gif',
|
||||||
|
'/outdoor_field2.jpeg'
|
||||||
|
]
|
||||||
|
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.4.1/workbox-sw.js');
|
||||||
|
|
||||||
|
self.addEventListener("message", (event) => {
|
||||||
|
if (event.data && event.data.type === "SKIP_WAITING") {
|
||||||
|
self.skipWaiting();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
new RegExp('/.*\\.png'),
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: CACHE
|
||||||
|
})
|
||||||
|
);
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
new RegExp('/.*\\.jpeg'),
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: CACHE
|
||||||
|
})
|
||||||
|
);
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
new RegExp('/.*\\.jpg'),
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: CACHE
|
||||||
|
})
|
||||||
|
);
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
new RegExp('/.*\\.glb'),
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: CACHE
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
new RegExp('/login'),
|
||||||
|
new workbox.strategies.NetworkFirst()
|
||||||
|
)
|
||||||
@ -29,7 +29,7 @@ export class CustomEnvironment {
|
|||||||
this._groundMeshObservable.notifyObservers(ground);
|
this._groundMeshObservable.notifyObservers(ground);
|
||||||
});
|
});
|
||||||
const photo = new PhotoDome('sky',
|
const photo = new PhotoDome('sky',
|
||||||
'./outdoor_field2.jpeg', {},
|
'/assets/textures/outdoor_field2.jpeg', {},
|
||||||
scene);
|
scene);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ export class CustomEnvironment {
|
|||||||
private createGround() {
|
private createGround() {
|
||||||
const scene = this.scene;
|
const scene = this.scene;
|
||||||
const groundMaterial = new PBRMetallicRoughnessMaterial("groundMaterial", scene);
|
const groundMaterial = new PBRMetallicRoughnessMaterial("groundMaterial", scene);
|
||||||
const gText = new Texture("./grass1.jpeg", scene);
|
const gText = new Texture("/assets/textures/grass1.jpeg", scene);
|
||||||
gText.uScale = 40;
|
gText.uScale = 40;
|
||||||
gText.vScale = 40;
|
gText.vScale = 40;
|
||||||
groundMaterial.baseTexture = gText;
|
groundMaterial.baseTexture = gText;
|
||||||
|
|||||||
@ -5,25 +5,25 @@ export class DiaSounds {
|
|||||||
|
|
||||||
constructor(scene: Scene) {
|
constructor(scene: Scene) {
|
||||||
this.scene = scene;
|
this.scene = scene;
|
||||||
this._enter = new Sound("enter", "./sounds.mp3", this.scene, null, {
|
this._enter = new Sound("enter", "/assets/sounds/sounds.mp3", this.scene, null, {
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
loop: false,
|
loop: false,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
length: 1.0
|
length: 1.0
|
||||||
});
|
});
|
||||||
this._exit = new Sound("exit", "./sounds.mp3", this.scene, null, {
|
this._exit = new Sound("exit", "/assets/sounds/sounds.mp3", this.scene, null, {
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
loop: false,
|
loop: false,
|
||||||
offset: 1,
|
offset: 1,
|
||||||
length: 1.0
|
length: 1.0
|
||||||
});
|
});
|
||||||
this._high = new Sound("high", "./sounds.mp3", this.scene, null, {
|
this._high = new Sound("high", "/assets/sounds/sounds.mp3", this.scene, null, {
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
loop: false,
|
loop: false,
|
||||||
offset: 2,
|
offset: 2,
|
||||||
length: 1.0
|
length: 1.0
|
||||||
});
|
});
|
||||||
this._low = new Sound("low", "./sounds.mp3", this.scene, null, {
|
this._low = new Sound("low", "/assets/sounds/sounds.mp3", this.scene, null, {
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
loop: false,
|
loop: false,
|
||||||
offset: 3,
|
offset: 3,
|
||||||
@ -40,7 +40,7 @@ export class DiaSounds {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public get tick() {
|
public get tick() {
|
||||||
return new Sound("tick", './tick.mp3', this.scene);
|
return new Sound("tick", '/assets/sounds/tick.mp3', this.scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly _enter: Sound;
|
private readonly _enter: Sound;
|
||||||
|
|||||||