Refactored scene to use DefaultScene.
This commit is contained in:
parent
a1248a2e34
commit
f7dd6840e7
@ -1,5 +1,7 @@
|
||||
import {Scene} from "@babylonjs/core";
|
||||
import log from "loglevel";
|
||||
|
||||
const logger = log.getLogger('DefaultScene');
|
||||
export class DefaultScene {
|
||||
private static _scene: Scene;
|
||||
|
||||
@ -8,6 +10,18 @@ export class DefaultScene {
|
||||
}
|
||||
|
||||
static create(scene: Scene) {
|
||||
if (DefaultScene._scene) {
|
||||
logger.error('default scene already created, disposing and recreating');
|
||||
if (DefaultScene._scene.isDisposed) {
|
||||
logger.warn('default scene is already disposed');
|
||||
} else {
|
||||
DefaultScene._scene.dispose();
|
||||
logger.info('default scene disposed');
|
||||
}
|
||||
|
||||
DefaultScene._scene = null;
|
||||
}
|
||||
DefaultScene._scene = scene;
|
||||
logger.info('default scene created');
|
||||
}
|
||||
}
|
||||
@ -12,13 +12,11 @@ export class PouchdbPersistenceManager {
|
||||
configObserver: Observable<AppConfigType> = new Observable<AppConfigType>();
|
||||
updateObserver: Observable<DiagramEntity> = new Observable<DiagramEntity>();
|
||||
removeObserver: Observable<DiagramEntity> = new Observable<DiagramEntity>();
|
||||
//implement IPersistenceManager interface with pouchdb apis
|
||||
|
||||
private db: PouchDB;
|
||||
private remote: PouchDB;
|
||||
|
||||
private diagramListings: PouchDB;
|
||||
|
||||
|
||||
private user: string;
|
||||
|
||||
constructor() {
|
||||
@ -43,7 +41,7 @@ export class PouchdbPersistenceManager {
|
||||
this.modify(evt.entity);
|
||||
break;
|
||||
default:
|
||||
//this.logger.warn('App', 'unknown diagram event type', evt);
|
||||
logger.warn('unknown diagram event type', evt);
|
||||
}
|
||||
}, 2);
|
||||
this.updateObserver.add((evt) => {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import {Scene, TransformNode, Vector3, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
import {Handle} from "../objects/handle";
|
||||
import {DefaultScene} from "../defaultScene";
|
||||
|
||||
export abstract class AbstractMenu {
|
||||
protected handle: Handle;
|
||||
@ -8,8 +9,8 @@ export abstract class AbstractMenu {
|
||||
protected xr: WebXRDefaultExperience;
|
||||
protected controllers: Controllers;
|
||||
|
||||
protected constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
this.scene = scene;
|
||||
protected constructor(xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
this.scene = DefaultScene.scene;
|
||||
this.xr = xr;
|
||||
this.controllers = controllers;
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {AdvancedDynamicTexture, CheckboxGroup, RadioGroup, SelectionPanel, StackPanel} from "@babylonjs/gui";
|
||||
import {MeshBuilder, Scene, TransformNode, Vector3, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {MeshBuilder, TransformNode, Vector3, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {AppConfig} from "../util/appConfig";
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
import {AbstractMenu} from "./abstractMenu";
|
||||
@ -25,9 +25,9 @@ export class ConfigMenu extends AbstractMenu {
|
||||
{label: "90", value: 90},
|
||||
]
|
||||
|
||||
constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers, config: AppConfig) {
|
||||
super(scene, xr, controllers);
|
||||
this.baseTransform = new TransformNode("configMenuBase", scene);
|
||||
constructor(xr: WebXRDefaultExperience, controllers: Controllers, config: AppConfig) {
|
||||
super(xr, controllers);
|
||||
this.baseTransform = new TransformNode("configMenuBase", this.scene);
|
||||
this.config = config;
|
||||
this.buildMenu();
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import {AbstractMenu} from "./abstractMenu";
|
||||
import {Color3, MeshBuilder, Scene, StandardMaterial, Vector2, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {Color3, MeshBuilder, StandardMaterial, Vector2, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
|
||||
export class DeckMenu extends AbstractMenu {
|
||||
private static instance: DeckMenu;
|
||||
|
||||
public constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(scene, xr, controllers);
|
||||
public constructor(xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(xr, controllers);
|
||||
this.buildMenu();
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import {AbstractMesh, MeshBuilder, Scene, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {AbstractMesh, MeshBuilder, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
import {AbstractMenu} from "./abstractMenu";
|
||||
import {AdvancedDynamicTexture, Grid, TextBlock} from "@babylonjs/gui";
|
||||
@ -7,8 +7,8 @@ import {AdvancedDynamicTexture, Grid, TextBlock} from "@babylonjs/gui";
|
||||
export class IntegrationMenu extends AbstractMenu {
|
||||
private plane: AbstractMesh = null;
|
||||
|
||||
constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(scene, xr, controllers);
|
||||
constructor(xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(xr, controllers);
|
||||
this.buildMenu();
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import {AbstractMesh, Scene, TransformNode, Vector3, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {AbstractMesh, TransformNode, Vector3, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
import {DiaSounds} from "../util/diaSounds";
|
||||
@ -17,14 +17,14 @@ export class ScaleMenu extends AbstractMenu {
|
||||
private yTransformNode: TransformNode;
|
||||
private zTransformNode: TransformNode;
|
||||
|
||||
constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(scene, xr, controllers);
|
||||
this.transformNode = new TransformNode("scaleMenu", scene);
|
||||
this.xTransformNode = new TransformNode("xTransformNode", scene);
|
||||
constructor(xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(xr, controllers);
|
||||
this.transformNode = new TransformNode("scaleMenu", this.scene);
|
||||
this.xTransformNode = new TransformNode("xTransformNode", this.scene);
|
||||
this.xTransformNode.parent = this.transformNode;
|
||||
this.yTransformNode = new TransformNode("yTransformNode", scene);
|
||||
this.yTransformNode = new TransformNode("yTransformNode", this.scene);
|
||||
this.yTransformNode.parent = this.transformNode;
|
||||
this.zTransformNode = new TransformNode("zTransformNode", scene);
|
||||
this.zTransformNode = new TransformNode("zTransformNode", this.scene);
|
||||
this.zTransformNode.parent = this.transformNode;
|
||||
//super.createHandle(this.transformNode);
|
||||
this.transformNode.position.y = 0;
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import {AbstractMenu} from "./abstractMenu";
|
||||
import {Scene, WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {WebXRDefaultExperience} from "@babylonjs/core";
|
||||
import {Controllers} from "../controllers/controllers";
|
||||
import {makeButton} from "./functions/makeButton";
|
||||
|
||||
//a class called SequenceMenu that extends AbstraceMenu and has three buttons labeled '1', '2', and '3'
|
||||
export class SequenceMenu extends AbstractMenu {
|
||||
constructor(scene: Scene, xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(scene, xr, controllers);
|
||||
constructor(xr: WebXRDefaultExperience, controllers: Controllers) {
|
||||
super(xr, controllers);
|
||||
this.buildMenu();
|
||||
}
|
||||
|
||||
@ -14,7 +14,6 @@ export class SequenceMenu extends AbstractMenu {
|
||||
const button1 = makeButton("1", "1");
|
||||
const button2 = makeButton("2", "1");
|
||||
const button3 = makeButton("3", "1");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@ export async function groundMeshObserver(ground: AbstractMesh,
|
||||
rig.flyMode = config.flyMode;
|
||||
rig.turnSnap = config.turnSnap;
|
||||
});
|
||||
const config = new ConfigMenu(ground.getScene(), xr, diagramManager.controllers, diagramManager.config);
|
||||
const config = new ConfigMenu(xr, diagramManager.controllers, diagramManager.config);
|
||||
const webController = new WebController(ground.getScene(), rig, diagramManager, diagramManager.controllers);
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user