observablesManager.ts 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. * Will notify when the viewer init started (after configuration was loaded)
  44. */
  45. public onViewerInitStartedObservable: Observable<any>;
  46. /**
  47. * Functions added to this observable will be executed on each frame rendered.
  48. */
  49. public onFrameRenderedObservable: Observable<any>;
  50. /**
  51. * Will notify when VR mode is entered.
  52. */
  53. public onEnteringVRObservable: Observable<any>;
  54. /**
  55. * Will notify when VR mode is exited.
  56. */
  57. public onExitingVRObservable: Observable<any>;
  58. constructor() {
  59. this.onSceneInitObservable = new Observable();
  60. this.onEngineInitObservable = new Observable();
  61. this.onModelLoadedObservable = new Observable();
  62. this.onModelLoadProgressObservable = new Observable();
  63. this.onModelLoadErrorObservable = new Observable();
  64. this.onModelAddedObservable = new Observable();
  65. this.onModelRemovedObservable = new Observable();
  66. this.onViewerInitDoneObservable = new Observable();
  67. this.onViewerInitStartedObservable = new Observable();
  68. this.onLoaderInitObservable = new Observable();
  69. this.onFrameRenderedObservable = new Observable();
  70. this.onEnteringVRObservable = new Observable();
  71. this.onExitingVRObservable = new Observable();
  72. }
  73. dispose() {
  74. this.onSceneInitObservable.clear();
  75. this.onEngineInitObservable.clear();
  76. this.onModelLoadedObservable.clear();
  77. this.onModelLoadProgressObservable.clear();
  78. this.onModelLoadErrorObservable.clear();
  79. this.onModelAddedObservable.clear();
  80. this.onModelRemovedObservable.clear();
  81. this.onViewerInitDoneObservable.clear();
  82. this.onLoaderInitObservable.clear();
  83. this.onFrameRenderedObservable.clear();
  84. this.onEnteringVRObservable.clear();
  85. this.onExitingVRObservable.clear();
  86. }
  87. }