From 160138b3f49d124540e454cd11ad49ea394ebf4a Mon Sep 17 00:00:00 2001 From: Michael Mainguy Date: Wed, 19 Jul 2023 16:43:22 -0500 Subject: [PATCH] Moved grabbing to base controller class. --- src/controllers/base.ts | 19 ++++++++++++++++--- src/controllers/right.ts | 15 +-------------- src/menus/MenuState.ts | 1 + src/menus/bmenu.ts | 13 +++++-------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/controllers/base.ts b/src/controllers/base.ts index d6ea3ae..76fc4c0 100644 --- a/src/controllers/base.ts +++ b/src/controllers/base.ts @@ -1,4 +1,4 @@ -import {AbstractMesh, Scene, Vector3, WebXRInputSource} from "@babylonjs/core"; +import {AbstractMesh, Scene, Vector3, WebXRControllerComponent, WebXRInputSource} from "@babylonjs/core"; export class Base { static stickVector = Vector3.Zero(); @@ -23,9 +23,22 @@ export class Base { } }); } + this.initGrip(init.components['xr-standard-squeeze']); }); } - public mesh() { - return this.controller.grip; + + private initGrip(grip: WebXRControllerComponent) { + grip.onButtonStateChangedObservable.add((value) => { + if (value.value > .5) { + if (this.currentMesh) { + this.currentMesh.setParent(this.controller.pointer); + } + } else { + if (this.currentMesh) { + this.currentMesh.setParent(null); + } + } + + }); } } \ No newline at end of file diff --git a/src/controllers/right.ts b/src/controllers/right.ts index 040aad3..4fc0a90 100644 --- a/src/controllers/right.ts +++ b/src/controllers/right.ts @@ -21,7 +21,7 @@ export class Right extends Base { this.initBButton(init.components['b-button']); this.initAButton(init.components['a-button']); this.initThumbstick(init.components['xr-standard-thumbstick']); - this.initGrip(init.components['xr-standard-squeeze']); + }); } @@ -115,20 +115,7 @@ export class Right extends Base { } - private initGrip(grip: WebXRControllerComponent) { - grip.onButtonStateChangedObservable.add((value) => { - if (value.value > .5) { - if (this.currentMesh) { - this.currentMesh.setParent(this.controller.pointer); - } - } else { - if (this.currentMesh) { - this.currentMesh.setParent(null); - } - } - }); - } public setBMenu(menu: Bmenu) { this.bmenu = menu; this.bmenu.setController(this.controller); diff --git a/src/menus/MenuState.ts b/src/menus/MenuState.ts index 125c074..04ec07c 100644 --- a/src/menus/MenuState.ts +++ b/src/menus/MenuState.ts @@ -2,5 +2,6 @@ export enum BmenuState { NONE, ADDING, // Adding a new entity DROPPING, // Dropping an entity + REMOVING, // Removing an entity } \ No newline at end of file diff --git a/src/menus/bmenu.ts b/src/menus/bmenu.ts index 704db43..98c3739 100644 --- a/src/menus/bmenu.ts +++ b/src/menus/bmenu.ts @@ -1,10 +1,4 @@ -import { - AbstractMesh, - Scene, - Vector3, - WebXRExperienceHelper, - WebXRInputSource -} from "@babylonjs/core"; +import {AbstractMesh, Scene, Vector3, WebXRExperienceHelper, WebXRInputSource} from "@babylonjs/core"; import {GUI3DManager, NearMenu, TouchHolographicButton} from "@babylonjs/gui"; import {DiagramManager} from "../diagram/diagramManager"; import {BmenuState} from "./MenuState"; @@ -79,6 +73,7 @@ export class Bmenu { panel.addButton(this.makeButton("Add Sphere", "addSphere")); panel.addButton(this.makeButton("Add Cylinder", "addCylinder")); panel.addButton(this.makeButton("Add Text", "addText")); + panel.addButton(this.makeButton("Remove", "remove")); panel.addButton(this.makeButton("Done Adding", "doneAdding")); this.manager.controlScaling = .5; @@ -119,7 +114,9 @@ export class Bmenu { break; case "doneAdding": this.state = BmenuState.NONE; - + break; + case "remove": + this.state = BmenuState.REMOVING; break; default: console.log("Unknown button");