telemetryLoaderPlugin.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { ILoaderPlugin } from "./loaderPlugin";
  2. import { telemetryManager } from "../../managers/telemetryManager";
  3. import { ViewerModel } from "../../model/viewerModel";
  4. import { Tools, ISceneLoaderPlugin, ISceneLoaderPluginAsync } from "babylonjs";
  5. export class TelemetryLoaderPlugin implements ILoaderPlugin {
  6. private _model: ViewerModel;
  7. private _loadStart: number;
  8. private _loadEnd: number;
  9. public onInit(loader: ISceneLoaderPlugin | ISceneLoaderPluginAsync, model: ViewerModel) {
  10. this._model = model;
  11. this._loadStart = Tools.Now;
  12. }
  13. public onLoaded(model: ViewerModel) {
  14. telemetryManager.broadcast("Model Loaded", model.getViewerId(), {
  15. model: model,
  16. loadTime: Tools.Now - this._loadStart
  17. });
  18. telemetryManager.flushWebGLErrors(model.rootMesh.getEngine(), model.getViewerId());
  19. }
  20. public onError(message: string, exception: any) {
  21. this._loadEnd = Tools.Now;
  22. telemetryManager.broadcast("Load Error", this._model.getViewerId(), {
  23. model: this._model,
  24. loadTime: this._loadEnd - this._loadStart
  25. });
  26. telemetryManager.flushWebGLErrors(this._model.rootMesh.getEngine(), this._model.getViewerId());
  27. }
  28. public onComplete() {
  29. this._loadEnd = Tools.Now;
  30. telemetryManager.broadcast("Load Complete", this._model.getViewerId(), {
  31. model: this._model,
  32. loadTime: this._loadEnd - this._loadStart
  33. });
  34. telemetryManager.flushWebGLErrors(this._model.rootMesh.getEngine(), this._model.getViewerId());
  35. }
  36. }