globalState.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 './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. export class GlobalState {
  15. nodeMaterial: NodeMaterial;
  16. hostElement: HTMLElement;
  17. hostDocument: HTMLDocument;
  18. hostWindow: Window;
  19. onSelectionChangedObservable = new Observable<Nullable<GraphNode | NodeLink | GraphFrame>>();
  20. onRebuildRequiredObservable = new Observable<void>();
  21. onBuiltObservable = new Observable<void>();
  22. onResetRequiredObservable = new Observable<void>();
  23. onUpdateRequiredObservable = new Observable<void>();
  24. onZoomToFitRequiredObservable = new Observable<void>();
  25. onReOrganizedRequiredObservable = new Observable<void>();
  26. onLogRequiredObservable = new Observable<LogEntry>();
  27. onErrorMessageDialogRequiredObservable = new Observable<string>();
  28. onIsLoadingChanged = new Observable<boolean>();
  29. onPreviewCommandActivated = new Observable<void>();
  30. onLightUpdated = new Observable<void>();
  31. onPreviewBackgroundChanged = new Observable<void>();
  32. onBackFaceCullingChanged = new Observable<void>();
  33. onDepthPrePassChanged = new Observable<void>();
  34. onAnimationCommandActivated = new Observable<void>();
  35. onCandidateLinkMoved = new Observable<Nullable<Vector2>>();
  36. onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();
  37. onFrameCreated = new Observable<GraphFrame>();
  38. onCandidatePortSelected = new Observable<Nullable<NodePort>>();
  39. onGetNodeFromBlock: (block: NodeMaterialBlock) => GraphNode;
  40. onGridSizeChanged = new Observable<void>();
  41. previewMeshType: PreviewMeshType;
  42. previewMeshFile: File;
  43. rotatePreview: boolean;
  44. backgroundColor: Color4;
  45. backFaceCulling: boolean;
  46. depthPrePass: boolean;
  47. blockKeyboardEvents = false;
  48. hemisphericLight: boolean;
  49. directionalLight0: boolean;
  50. directionalLight1: boolean;
  51. controlCamera: boolean;
  52. storeEditorData:(serializationObject: any) => void;
  53. customSave?: {label: string, action: (data: string) => Promise<void>};
  54. public constructor() {
  55. this.previewMeshType = DataStorage.ReadNumber("PreviewMeshType", PreviewMeshType.Box);
  56. this.backFaceCulling = DataStorage.ReadBoolean("BackFaceCulling", true);
  57. this.depthPrePass = DataStorage.ReadBoolean("DepthPrePass", false);
  58. this.hemisphericLight = DataStorage.ReadBoolean("HemisphericLight", true);
  59. this.directionalLight0 = DataStorage.ReadBoolean("DirectionalLight0", false);
  60. this.directionalLight1 = DataStorage.ReadBoolean("DirectionalLight1", false);
  61. this.controlCamera = DataStorage.ReadBoolean("ControlCamera", true);
  62. let r = DataStorage.ReadNumber("BackgroundColorR", 0.37);
  63. let g = DataStorage.ReadNumber("BackgroundColorG", 0.37);
  64. let b = DataStorage.ReadNumber("BackgroundColorB", 0.37);
  65. this.backgroundColor = new Color4(r, g, b, 1.0);
  66. }
  67. }