globalState.ts 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial"
  2. import { Nullable } from "babylonjs/types"
  3. import { Observable } from 'babylonjs/Misc/observable';
  4. import { DefaultNodeModel } from './components/diagram/defaultNodeModel';
  5. import { LogEntry } from './components/log/logComponent';
  6. import { NodeModel } from 'storm-react-diagrams';
  7. import { INodeLocationInfo } from './nodeLocationInfo';
  8. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  9. import { PreviewMeshType } from './components/preview/previewMeshType';
  10. import { DataStorage } from './dataStorage';
  11. import { Color4 } from 'babylonjs/Maths/math.color';
  12. export class GlobalState {
  13. nodeMaterial: NodeMaterial;
  14. hostElement: HTMLElement;
  15. hostDocument: HTMLDocument;
  16. onSelectionChangedObservable = new Observable<Nullable<DefaultNodeModel>>();
  17. onRebuildRequiredObservable = new Observable<void>();
  18. onResetRequiredObservable = new Observable<Nullable<INodeLocationInfo[]>>();
  19. onUpdateRequiredObservable = new Observable<void>();
  20. onZoomToFitRequiredObservable = new Observable<void>();
  21. onReOrganizedRequiredObservable = new Observable<void>();
  22. onLogRequiredObservable = new Observable<LogEntry>();
  23. onErrorMessageDialogRequiredObservable = new Observable<string>();
  24. onIsLoadingChanged = new Observable<boolean>();
  25. onPreviewCommandActivated = new Observable<void>();
  26. onLightUpdated = new Observable<void>();
  27. onPreviewBackgroundChanged = new Observable<void>();
  28. onBackFaceCullingChanged = new Observable<void>();
  29. onDepthPrePassChanged = new Observable<void>();
  30. onAnimationCommandActivated = new Observable<void>();
  31. onGetNodeFromBlock: (block: NodeMaterialBlock) => NodeModel;
  32. previewMeshType: PreviewMeshType;
  33. previewMeshFile: File;
  34. rotatePreview: boolean;
  35. backgroundColor: Color4;
  36. backFaceCulling: boolean;
  37. depthPrePass: boolean;
  38. blockKeyboardEvents = false;
  39. hemisphericLight: boolean;
  40. directionalLight0: boolean;
  41. directionalLight1: boolean;
  42. controlCamera: boolean;
  43. customSave?: {label: string, action: (data: string) => Promise<void>};
  44. public constructor() {
  45. this.previewMeshType = DataStorage.ReadNumber("PreviewMeshType", PreviewMeshType.Box);
  46. this.backFaceCulling = DataStorage.ReadBoolean("BackFaceCulling", true);
  47. this.depthPrePass = DataStorage.ReadBoolean("DepthPrePass", false);
  48. this.hemisphericLight = DataStorage.ReadBoolean("HemisphericLight", true);
  49. this.directionalLight0 = DataStorage.ReadBoolean("DirectionalLight0", false);
  50. this.directionalLight1 = DataStorage.ReadBoolean("DirectionalLight1", false);
  51. this.controlCamera = DataStorage.ReadBoolean("ControlCamera", true);
  52. let r = DataStorage.ReadNumber("BackgroundColorR", 0.37);
  53. let g = DataStorage.ReadNumber("BackgroundColorG", 0.37);
  54. let b = DataStorage.ReadNumber("BackgroundColorB", 0.37);
  55. this.backgroundColor = new Color4(r, g, b, 1.0);
  56. }
  57. }