observablesManager.ts 3.6 KB

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