observablesManager.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Engine, ISceneLoaderPlugin, ISceneLoaderPluginAsync, Observable, Scene, SceneLoaderProgressEvent } from 'babylonjs';
  2. import { ViewerModel } from '../model/viewerModel';
  3. export class ObservablesManager {
  4. /**
  5. * Will notify when the scene was initialized
  6. */
  7. public onSceneInitObservable: Observable<Scene>;
  8. /**
  9. * will notify when the engine was initialized
  10. */
  11. public onEngineInitObservable: Observable<Engine>;
  12. /**
  13. * Will notify when a new model was added to the scene.
  14. * Note that added does not neccessarily mean loaded!
  15. */
  16. public onModelAddedObservable: Observable<ViewerModel>;
  17. /**
  18. * will notify after every model load
  19. */
  20. public onModelLoadedObservable: Observable<ViewerModel>;
  21. /**
  22. * will notify when any model notify of progress
  23. */
  24. public onModelLoadProgressObservable: Observable<SceneLoaderProgressEvent>;
  25. /**
  26. * will notify when any model load failed.
  27. */
  28. public onModelLoadErrorObservable: Observable<{ message: string; exception: any }>;
  29. /**
  30. * Will notify when a model was removed from the scene;
  31. */
  32. public onModelRemovedObservable: Observable<ViewerModel>;
  33. /**
  34. * will notify when a new loader was initialized.
  35. * Used mainly to know when a model starts loading.
  36. */
  37. public onLoaderInitObservable: Observable<ISceneLoaderPlugin | ISceneLoaderPluginAsync>;
  38. /**
  39. * Observers registered here will be executed when the entire load process has finished.
  40. */
  41. public onViewerInitDoneObservable: Observable<any>;
  42. /**
  43. * Functions added to this observable will be executed on each frame rendered.
  44. */
  45. public onFrameRenderedObservable: Observable<any>;
  46. constructor() {
  47. this.onSceneInitObservable = new Observable();
  48. this.onEngineInitObservable = new Observable();
  49. this.onModelLoadedObservable = new Observable();
  50. this.onModelLoadProgressObservable = new Observable();
  51. this.onModelLoadErrorObservable = new Observable();
  52. this.onModelAddedObservable = new Observable();
  53. this.onModelRemovedObservable = new Observable();
  54. this.onViewerInitDoneObservable = new Observable();
  55. this.onLoaderInitObservable = new Observable();
  56. this.onFrameRenderedObservable = new Observable();
  57. }
  58. dispose() {
  59. this.onSceneInitObservable.clear();
  60. this.onEngineInitObservable.clear();
  61. this.onModelLoadedObservable.clear();
  62. this.onModelLoadProgressObservable.clear();
  63. this.onModelLoadErrorObservable.clear();
  64. this.onModelAddedObservable.clear();
  65. this.onModelRemovedObservable.clear();
  66. this.onViewerInitDoneObservable.clear();
  67. this.onLoaderInitObservable.clear();
  68. this.onFrameRenderedObservable.clear();
  69. }
  70. }