diff --git a/public/styles.css b/public/styles.css index 0f702b4..61f2c78 100644 --- a/public/styles.css +++ b/public/styles.css @@ -189,7 +189,7 @@ h1 { } -#enterXR.inactive a { +div.overlay div.inactive a { background-color: #222222; color: #555555; border-color: #222222; diff --git a/src/controllers/base.ts b/src/controllers/base.ts index faa4255..b6078ce 100644 --- a/src/controllers/base.ts +++ b/src/controllers/base.ts @@ -19,6 +19,7 @@ import {DiagramObject} from "../diagram/diagramObject"; import {snapAll} from "./functions/snapAll"; import {MeshTypeEnum} from "../diagram/types/meshTypeEnum"; import {getMeshType} from "./functions/getMeshType"; +import {viewOnly} from "../util/functions/getPath"; const CLICK_TIME = 300; @@ -101,6 +102,9 @@ export class Base { protected initClicker(trigger: WebXRControllerComponent) { this._logger.debug("initTrigger"); trigger.onButtonStateChangedObservable.add(() => { + if (viewOnly()) { + return; + } if (trigger.changes.pressed) { if (trigger.pressed) { if (this.diagramManager.diagramMenuManager.scaleMenu.mesh == this._meshUnderPointer) { @@ -140,7 +144,7 @@ export class Base { private grab() { let mesh = this._meshUnderPointer - if (!mesh) { + if (!mesh || viewOnly()) { return; } this.grabbedMesh = mesh; diff --git a/src/diagram/diagramMenuManager.ts b/src/diagram/diagramMenuManager.ts index c845cda..e923f3d 100644 --- a/src/diagram/diagramMenuManager.ts +++ b/src/diagram/diagramMenuManager.ts @@ -12,6 +12,7 @@ import {DiagramEventObserverMask} from "./types/diagramEventObserverMask"; import {ConnectionPreview} from "../menus/connectionPreview"; import {ScaleMenu2} from "../menus/ScaleMenu2"; import {CameraMenu} from "../menus/cameraMenu"; +import {viewOnly} from "../util/functions/getPath"; export class DiagramMenuManager { @@ -38,7 +39,11 @@ export class DiagramMenuManager { }); this.toolbox = new Toolbox(); this.scaleMenu = new ScaleMenu2(this._notifier); - + if (viewOnly()) { + this.toolbox.handleMesh.setEnabled(false); + //this.scaleMenu.handleMesh.setEnabled(false) + this.configMenu.handleMesh.setEnabled(false); + } controllers.controllerObservable.add((event: ControllerEvent) => { if (event.type == ControllerEventType.B_BUTTON) { if (event.value > .8) { diff --git a/src/react/webApp.tsx b/src/react/webApp.tsx index df6b873..d2acb25 100644 --- a/src/react/webApp.tsx +++ b/src/react/webApp.tsx @@ -1,17 +1,30 @@ import {useEffect, useState} from "react"; import {uploadImage} from "./functions/uploadImage"; +import {viewOnly} from "../util/functions/getPath"; function MainMenu({onClick}) { - return ( -
- ) + if (viewOnly()) { + return ( + ) + } else { + return ( + + ) + } + } function CreateMenu({display, toggleCreateMenu}) { @@ -148,4 +161,4 @@ export default function WebApp() { ) -} \ No newline at end of file +} diff --git a/src/util/functions/getPath.ts b/src/util/functions/getPath.ts index d27f5af..b4e8777 100644 --- a/src/util/functions/getPath.ts +++ b/src/util/functions/getPath.ts @@ -5,4 +5,13 @@ export function getPath(): string { } else { return null; } +} + +export function getParameter(name: string) { + const searchParams = new URLSearchParams(window.location.search); + return searchParams.get(name); +} + +export function viewOnly(): boolean { + return getParameter('viewonly') == 'true'; } \ No newline at end of file