telemetryLoaderPlugin.ts 1.7 KB

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