globalState.ts 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  2. import { Nullable } from "babylonjs/types";
  3. import { Observable } from 'babylonjs/Misc/observable';
  4. import { LogEntry } from './components/log/logComponent';
  5. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  6. import { PreviewMeshType } from './components/preview/previewMeshType';
  7. import { DataStorage } from 'babylonjs/Misc/dataStorage';
  8. import { Color4 } from 'babylonjs/Maths/math.color';
  9. import { GraphNode } from './diagram/graphNode';
  10. import { Vector2 } from 'babylonjs/Maths/math.vector';
  11. import { NodePort } from './diagram/nodePort';
  12. import { NodeLink } from './diagram/nodeLink';
  13. import { GraphFrame } from './diagram/graphFrame';
  14. import { FrameNodePort } from './diagram/frameNodePort';
  15. import { FramePortData } from './diagram/graphCanvas';
  16. import { NodeMaterialModes } from 'babylonjs/Materials/Node/Enums/nodeMaterialModes';
  17. export class GlobalState {
  18. nodeMaterial: NodeMaterial;
  19. hostElement: HTMLElement;
  20. hostDocument: HTMLDocument;
  21. hostWindow: Window;
  22. onSelectionChangedObservable = new Observable<Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData>>();
  23. onRebuildRequiredObservable = new Observable<void>();
  24. onBuiltObservable = new Observable<void>();
  25. onResetRequiredObservable = new Observable<void>();
  26. onUpdateRequiredObservable = new Observable<void>();
  27. onZoomToFitRequiredObservable = new Observable<void>();
  28. onReOrganizedRequiredObservable = new Observable<void>();
  29. onLogRequiredObservable = new Observable<LogEntry>();
  30. onErrorMessageDialogRequiredObservable = new Observable<string>();
  31. onIsLoadingChanged = new Observable<boolean>();
  32. onPreviewCommandActivated = new Observable<boolean>();
  33. onLightUpdated = new Observable<void>();
  34. onPreviewBackgroundChanged = new Observable<void>();
  35. onBackFaceCullingChanged = new Observable<void>();
  36. onDepthPrePassChanged = new Observable<void>();
  37. onAnimationCommandActivated = new Observable<void>();
  38. onCandidateLinkMoved = new Observable<Nullable<Vector2>>();
  39. onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();
  40. onFrameCreatedObservable = new Observable<GraphFrame>();
  41. onCandidatePortSelectedObservable = new Observable<Nullable<NodePort | FrameNodePort>>();
  42. onGraphNodeRemovalObservable = new Observable<GraphNode>();
  43. onGetNodeFromBlock: (block: NodeMaterialBlock) => GraphNode;
  44. onGridSizeChanged = new Observable<void>();
  45. onExposePortOnFrameObservable = new Observable<GraphNode>();
  46. previewMeshType: PreviewMeshType;
  47. previewMeshFile: File;
  48. listOfCustomPreviewMeshFiles: File[] = [];
  49. rotatePreview: boolean;
  50. backgroundColor: Color4;
  51. backFaceCulling: boolean;
  52. depthPrePass: boolean;
  53. blockKeyboardEvents = false;
  54. hemisphericLight: boolean;
  55. directionalLight0: boolean;
  56. directionalLight1: boolean;
  57. controlCamera: boolean;
  58. storeEditorData: (serializationObject: any) => void;
  59. _mode: NodeMaterialModes;
  60. /** Gets the mode */
  61. public get mode(): NodeMaterialModes {
  62. return this._mode;
  63. }
  64. /** Sets the mode */
  65. public set mode(m: NodeMaterialModes) {
  66. DataStorage.WriteNumber("Mode", m);
  67. this._mode = m;
  68. this.onPreviewCommandActivated.notifyObservers(true);
  69. }
  70. customSave?: {label: string, action: (data: string) => Promise<void>};
  71. public constructor() {
  72. this.previewMeshType = DataStorage.ReadNumber("PreviewMeshType", PreviewMeshType.Box);
  73. this.backFaceCulling = DataStorage.ReadBoolean("BackFaceCulling", true);
  74. this.depthPrePass = DataStorage.ReadBoolean("DepthPrePass", false);
  75. this.hemisphericLight = DataStorage.ReadBoolean("HemisphericLight", true);
  76. this.directionalLight0 = DataStorage.ReadBoolean("DirectionalLight0", false);
  77. this.directionalLight1 = DataStorage.ReadBoolean("DirectionalLight1", false);
  78. this.controlCamera = DataStorage.ReadBoolean("ControlCamera", true);
  79. this._mode = DataStorage.ReadNumber("Mode", NodeMaterialModes.Material);
  80. let r = DataStorage.ReadNumber("BackgroundColorR", 0.12549019607843137);
  81. let g = DataStorage.ReadNumber("BackgroundColorG", 0.09803921568627451);
  82. let b = DataStorage.ReadNumber("BackgroundColorB", 0.25098039215686274);
  83. this.backgroundColor = new Color4(r, g, b, 1.0);
  84. }
  85. }