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