Removed static controller references.
This commit is contained in:
parent
0483bef488
commit
201e19a3aa
@ -7,7 +7,7 @@ import {
|
|||||||
WebXRDefaultExperience,
|
WebXRDefaultExperience,
|
||||||
WebXRState
|
WebXRState
|
||||||
} from "@babylonjs/core";
|
} from "@babylonjs/core";
|
||||||
|
import '@babylonjs/loaders';
|
||||||
import {Rigplatform} from "./controllers/rigplatform";
|
import {Rigplatform} from "./controllers/rigplatform";
|
||||||
import {DiagramManager} from "./diagram/diagramManager";
|
import {DiagramManager} from "./diagram/diagramManager";
|
||||||
import {Toolbox} from "./toolbox/toolbox";
|
import {Toolbox} from "./toolbox/toolbox";
|
||||||
|
|||||||
@ -80,7 +80,7 @@ export class Base {
|
|||||||
if (init.components['xr-standard-squeeze']) {
|
if (init.components['xr-standard-squeeze']) {
|
||||||
this.initGrip(init.components['xr-standard-squeeze'])
|
this.initGrip(init.components['xr-standard-squeeze'])
|
||||||
}
|
}
|
||||||
});
|
}, -1, false, this);
|
||||||
this.controllers.controllerObserver.add((event) => {
|
this.controllers.controllerObserver.add((event) => {
|
||||||
if (event.type == 'pulse') {
|
if (event.type == 'pulse') {
|
||||||
this.logger.debug(event);
|
this.logger.debug(event);
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import {DiagramManager} from "../diagram/diagramManager";
|
|||||||
|
|
||||||
|
|
||||||
export class Left extends Base {
|
export class Left extends Base {
|
||||||
public static instance: Left;
|
|
||||||
public configMenu: ConfigMenu;
|
public configMenu: ConfigMenu;
|
||||||
|
|
||||||
constructor(controller:
|
constructor(controller:
|
||||||
@ -15,7 +14,6 @@ export class Left extends Base {
|
|||||||
|
|
||||||
super(controller, scene, xr, controllers, diagramManager);
|
super(controller, scene, xr, controllers, diagramManager);
|
||||||
this.configMenu = new ConfigMenu(this.scene, xr.baseExperience, this.controllers);
|
this.configMenu = new ConfigMenu(this.scene, xr.baseExperience, this.controllers);
|
||||||
Left.instance = this;
|
|
||||||
this.controller.onMotionControllerInitObservable.add((init) => {
|
this.controller.onMotionControllerInitObservable.add((init) => {
|
||||||
if (init.components['xr-standard-thumbstick']) {
|
if (init.components['xr-standard-thumbstick']) {
|
||||||
init.components['xr-standard-thumbstick']
|
init.components['xr-standard-thumbstick']
|
||||||
|
|||||||
@ -5,13 +5,10 @@ import log from "loglevel";
|
|||||||
import {DiagramManager} from "../diagram/diagramManager";
|
import {DiagramManager} from "../diagram/diagramManager";
|
||||||
|
|
||||||
export class Right extends Base {
|
export class Right extends Base {
|
||||||
public static instance: Right;
|
|
||||||
|
|
||||||
constructor(controller:
|
constructor(controller:
|
||||||
WebXRInputSource, scene: Scene, xr: WebXRDefaultExperience, diagramManager: DiagramManager, controllers: Controllers,
|
WebXRInputSource, scene: Scene, xr: WebXRDefaultExperience, diagramManager: DiagramManager, controllers: Controllers,
|
||||||
) {
|
) {
|
||||||
super(controller, scene, xr, controllers, diagramManager);
|
super(controller, scene, xr, controllers, diagramManager);
|
||||||
Right.instance = this;
|
|
||||||
this.controller.onMotionControllerInitObservable.add((init) => {
|
this.controller.onMotionControllerInitObservable.add((init) => {
|
||||||
this.initTrigger(init.components['xr-standard-trigger']);
|
this.initTrigger(init.components['xr-standard-trigger']);
|
||||||
this.initBButton(init.components['b-button']);
|
this.initBButton(init.components['b-button']);
|
||||||
|
|||||||
@ -29,6 +29,8 @@ export class Rigplatform {
|
|||||||
public bMenu: EditMenu;
|
public bMenu: EditMenu;
|
||||||
private readonly scene: Scene;
|
private readonly scene: Scene;
|
||||||
public static instance: Rigplatform;
|
public static instance: Rigplatform;
|
||||||
|
private rightController: Right;
|
||||||
|
private leftController: Left;
|
||||||
private static xr: WebXRDefaultExperience;
|
private static xr: WebXRDefaultExperience;
|
||||||
private yRotation: number = 0;
|
private yRotation: number = 0;
|
||||||
public body: PhysicsBody;
|
public body: PhysicsBody;
|
||||||
@ -89,7 +91,7 @@ export class Rigplatform {
|
|||||||
this.controllers = controllers;
|
this.controllers = controllers;
|
||||||
Rigplatform.xr = xr;
|
Rigplatform.xr = xr;
|
||||||
Rigplatform.instance = this;
|
Rigplatform.instance = this;
|
||||||
this.bMenu = new EditMenu(scene, xr.baseExperience, this.diagramManager);
|
this.bMenu = new EditMenu(scene, xr, this.diagramManager);
|
||||||
this.camera = scene.activeCamera;
|
this.camera = scene.activeCamera;
|
||||||
|
|
||||||
this.rigMesh = MeshBuilder.CreateBox("platform", {width: 2, height: .02, depth: 2}, scene);
|
this.rigMesh = MeshBuilder.CreateBox("platform", {width: 2, height: .02, depth: 2}, scene);
|
||||||
@ -170,13 +172,13 @@ export class Rigplatform {
|
|||||||
let controller;
|
let controller;
|
||||||
switch (source.inputSource.handedness) {
|
switch (source.inputSource.handedness) {
|
||||||
case "right":
|
case "right":
|
||||||
if (!Right.instance) {
|
if (!this.rightController) {
|
||||||
Right.instance = new Right(source, this.scene, Rigplatform.xr, this.diagramManager, this.controllers);
|
this.rightController = new Right(source, this.scene, Rigplatform.xr, this.diagramManager, this.controllers);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "left":
|
case "left":
|
||||||
if (!Left.instance) {
|
if (!this.leftController) {
|
||||||
Left.instance = new Left(source, this.scene, Rigplatform.xr, this.diagramManager, this.controllers);
|
this.leftController = new Left(source, this.scene, Rigplatform.xr, this.diagramManager, this.controllers);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
import {Right} from "../controllers/right";
|
import {Observable, Scene, WebXRDefaultExperience} from "@babylonjs/core";
|
||||||
import {Left} from "../controllers/left";
|
|
||||||
import {Observable, Scene, WebXRSessionManager} from "@babylonjs/core";
|
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {AdvancedDynamicTexture, InputText} from "@babylonjs/gui";
|
import {AdvancedDynamicTexture, InputText} from "@babylonjs/gui";
|
||||||
|
|
||||||
@ -9,7 +7,7 @@ export type TextEvent = {
|
|||||||
}
|
}
|
||||||
export type InputTextViewOptions = {
|
export type InputTextViewOptions = {
|
||||||
scene?: Scene;
|
scene?: Scene;
|
||||||
xrSession?: WebXRSessionManager;
|
xr?: WebXRDefaultExperience;
|
||||||
text?: string;
|
text?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,14 +15,14 @@ export class InputTextView {
|
|||||||
public readonly onTextObservable: Observable<TextEvent> = new Observable<TextEvent>();
|
public readonly onTextObservable: Observable<TextEvent> = new Observable<TextEvent>();
|
||||||
private readonly text: string;
|
private readonly text: string;
|
||||||
private readonly scene: Scene;
|
private readonly scene: Scene;
|
||||||
private readonly xrSession: WebXRSessionManager;
|
private readonly xr: WebXRDefaultExperience;
|
||||||
|
|
||||||
constructor(options: InputTextViewOptions) {
|
constructor(options: InputTextViewOptions) {
|
||||||
if (options.text) {
|
if (options.text) {
|
||||||
this.text = options.text;
|
this.text = options.text;
|
||||||
}
|
}
|
||||||
if (options.xrSession) {
|
if (options.xr) {
|
||||||
this.xrSession = options.xrSession;
|
this.xr = options.xr;
|
||||||
}
|
}
|
||||||
if (options.scene) {
|
if (options.scene) {
|
||||||
this.scene = options.scene;
|
this.scene = options.scene;
|
||||||
@ -32,7 +30,7 @@ export class InputTextView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public show() {
|
public show() {
|
||||||
if (this?.xrSession?.inXRSession) {
|
if (this?.xr?.baseExperience?.sessionManager?.inXRSession) {
|
||||||
this.showXr();
|
this.showXr();
|
||||||
} else {
|
} else {
|
||||||
this.showWeb();
|
this.showWeb();
|
||||||
@ -64,11 +62,14 @@ export class InputTextView {
|
|||||||
textInput.type = "text";
|
textInput.type = "text";
|
||||||
document.body.appendChild(textInput);
|
document.body.appendChild(textInput);
|
||||||
textInput.value = this.text;
|
textInput.value = this.text;
|
||||||
|
if (this.xr?.baseExperience?.sessionManager?.inXRSession) {
|
||||||
|
this.xr.input.controllers.forEach((controller) => {
|
||||||
|
controller.grip.setEnabled(false);
|
||||||
|
controller.pointer.setEnabled(false);
|
||||||
|
});
|
||||||
|
|
||||||
if (this.xrSession.inXRSession) {
|
|
||||||
Right.instance.disable();
|
|
||||||
Left.instance.disable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textInput.focus();
|
textInput.focus();
|
||||||
if (navigator.userAgent.indexOf('Macintosh') > -1) {
|
if (navigator.userAgent.indexOf('Macintosh') > -1) {
|
||||||
textInput.addEventListener('input', (event) => {
|
textInput.addEventListener('input', (event) => {
|
||||||
@ -79,8 +80,12 @@ export class InputTextView {
|
|||||||
textInput.addEventListener('blur', () => {
|
textInput.addEventListener('blur', () => {
|
||||||
log.getLogger('bmenu').debug("blur");
|
log.getLogger('bmenu').debug("blur");
|
||||||
this.onTextObservable.notifyObservers({text: textInput.value});
|
this.onTextObservable.notifyObservers({text: textInput.value});
|
||||||
Right.instance.enable();
|
if (this.xr?.baseExperience?.sessionManager?.inXRSession) {
|
||||||
Left.instance.enable();
|
this.xr.input.controllers.forEach((controller) => {
|
||||||
|
controller.grip.setEnabled(true);
|
||||||
|
controller.pointer.setEnabled(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
textInput.blur();
|
textInput.blur();
|
||||||
textInput.remove();
|
textInput.remove();
|
||||||
});
|
});
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import {
|
|||||||
Scene,
|
Scene,
|
||||||
StandardMaterial,
|
StandardMaterial,
|
||||||
Vector3,
|
Vector3,
|
||||||
WebXRExperienceHelper
|
WebXRDefaultExperience
|
||||||
} from "@babylonjs/core";
|
} from "@babylonjs/core";
|
||||||
import {Button3D, GUI3DManager, StackPanel3D, TextBlock} from "@babylonjs/gui";
|
import {Button3D, GUI3DManager, StackPanel3D, TextBlock} from "@babylonjs/gui";
|
||||||
import {DiagramManager} from "../diagram/diagramManager";
|
import {DiagramManager} from "../diagram/diagramManager";
|
||||||
@ -31,12 +31,12 @@ export class EditMenu {
|
|||||||
private paintColor: string = null;
|
private paintColor: string = null;
|
||||||
private readonly logger: log.Logger = log.getLogger('EditMenu');
|
private readonly logger: log.Logger = log.getLogger('EditMenu');
|
||||||
private gizmoManager: GizmoManager;
|
private gizmoManager: GizmoManager;
|
||||||
private readonly xr: WebXRExperienceHelper;
|
private readonly xr: WebXRDefaultExperience;
|
||||||
private readonly diagramManager: DiagramManager;
|
private readonly diagramManager: DiagramManager;
|
||||||
private connection: DiagramConnection = null;
|
private connection: DiagramConnection = null;
|
||||||
private panel: StackPanel3D;
|
private panel: StackPanel3D;
|
||||||
|
|
||||||
constructor(scene: Scene, xr: WebXRExperienceHelper, diagramManager: DiagramManager) {
|
constructor(scene: Scene, xr: WebXRDefaultExperience, diagramManager: DiagramManager) {
|
||||||
this.scene = scene;
|
this.scene = scene;
|
||||||
this.xr = xr;
|
this.xr = xr;
|
||||||
this.diagramManager = diagramManager;
|
this.diagramManager = diagramManager;
|
||||||
@ -241,7 +241,7 @@ export class EditMenu {
|
|||||||
if (mesh?.metadata?.text) {
|
if (mesh?.metadata?.text) {
|
||||||
text = mesh.metadata.text;
|
text = mesh.metadata.text;
|
||||||
}
|
}
|
||||||
const textInput = new InputTextView({xrSession: this.xr.sessionManager, text: text});
|
const textInput = new InputTextView({xr: this.xr, text: text});
|
||||||
textInput.show();
|
textInput.show();
|
||||||
textInput.onTextObservable.addOnce((value) => {
|
textInput.onTextObservable.addOnce((value) => {
|
||||||
this.persist(mesh, value.text);
|
this.persist(mesh, value.text);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user