performance optimization, user manager + afterRender were slowing things down.

This commit is contained in:
Michael Mainguy 2024-06-06 19:44:16 -05:00
parent 9e7833b149
commit ffe8f60f38
2 changed files with 35 additions and 14 deletions

View File

@ -33,8 +33,11 @@ export class DiagramObject {
private _eventObservable: Observable<DiagramEvent>;
private _mesh: AbstractMesh;
private _label: AbstractMesh;
private _meshesPresent: boolean = false;
private _positionHash: string;
public grabbed: boolean = false;
public get mesh(): AbstractMesh {
return this._mesh;
}
@ -106,6 +109,7 @@ export class DiagramObject {
temp.dispose();
this._label.position.y = y + .06;
this._label.billboardMode = Mesh.BILLBOARDMODE_Y;
}
}
@ -148,19 +152,37 @@ export class DiagramObject {
if (this._from && this._to) {
if (!this._sceneObserver) {
this._observingStart = Date.now();
let tick = 0;
this._sceneObserver = this._scene.onAfterRenderObservable.add(() => {
const fromMesh = this._scene.getMeshById(this._from);
const toMesh = this._scene.getMeshById(this._to);
if (fromMesh && toMesh) {
this.updateConnection(fromMesh, toMesh);
} else {
if (Date.now() - this._observingStart > 5000) {
this._logger.warn('DiagramObject connection timeout for: ', this._from, this._to, ' removing');
this._eventObservable.notifyObservers({
type: DiagramEventType.REMOVE,
entity: this._diagramEntity
}, DiagramEventObserverMask.ALL);
this.dispose();
tick++;
if (tick % 5 === 0) {
if (this._meshesPresent) {
const fromMesh = this._scene.getMeshById(this._from);
const toMesh = this._scene.getMeshById(this._to);
if (fromMesh && toMesh) {
this.updateConnection(fromMesh, toMesh);
}
} else {
const fromMesh = this._scene.getMeshById(this._from);
const toMesh = this._scene.getMeshById(this._to);
if (fromMesh && toMesh) {
this.updateConnection(fromMesh, toMesh);
this._meshesPresent = true;
} else {
if (Date.now() - this._observingStart > 5000) {
this._logger.warn('DiagramObject connection timeout for: ', this._from, this._to, ' removing');
this._eventObservable.notifyObservers({
type: DiagramEventType.REMOVE,
entity: this._diagramEntity
}, DiagramEventObserverMask.ALL);
this._scene.onAfterRenderObservable.remove(this._sceneObserver);
this.dispose();
}
}
}
}
}, -1, false, this);

View File

@ -12,7 +12,6 @@ import {buildQuestLink} from "./util/functions/buildQuestLink";
import {exportGltf} from "./util/functions/exportGltf";
import {DefaultScene} from "./defaultScene";
import {Introduction} from "./tutorial/introduction";
import {UserManager} from "./users/userManager";
const webGpu = false;
@ -95,7 +94,7 @@ function setMainCamera(scene: Scene) {
async function initDb(diagramManager: DiagramManager) {
const db = new PouchdbPersistenceManager();
const userManager = new UserManager(db.onUserObservable);
//const userManager = new UserManager(db.onUserObservable);
db.setDiagramManager(diagramManager);
await db.initialize();