observablesManager.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. constructor() {
  51. this.onSceneInitObservable = new Observable();
  52. this.onEngineInitObservable = new Observable();
  53. this.onModelLoadedObservable = new Observable();
  54. this.onModelLoadProgressObservable = new Observable();
  55. this.onModelLoadErrorObservable = new Observable();
  56. this.onModelAddedObservable = new Observable();
  57. this.onModelRemovedObservable = new Observable();
  58. this.onViewerInitDoneObservable = new Observable();
  59. this.onViewerInitStartedObservable = new Observable();
  60. this.onLoaderInitObservable = new Observable();
  61. this.onFrameRenderedObservable = new Observable();
  62. }
  63. dispose() {
  64. this.onSceneInitObservable.clear();
  65. this.onEngineInitObservable.clear();
  66. this.onModelLoadedObservable.clear();
  67. this.onModelLoadProgressObservable.clear();
  68. this.onModelLoadErrorObservable.clear();
  69. this.onModelAddedObservable.clear();
  70. this.onModelRemovedObservable.clear();
  71. this.onViewerInitDoneObservable.clear();
  72. this.onLoaderInitObservable.clear();
  73. this.onFrameRenderedObservable.clear();
  74. }
  75. }