KHR_interactivity.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { GLTFLoader } from "../glTFLoader.js";
  2. import { FlowGraphCoordinator } from "@babylonjs/core/FlowGraph/flowGraphCoordinator.js";
  3. import { FlowGraph } from "@babylonjs/core/FlowGraph/flowGraph.js";
  4. import { convertGLTFToSerializedFlowGraph } from "./interactivityFunctions.js";
  5. import { InteractivityPathToObjectConverter } from "./interactivityPathToObjectConverter.js";
  6. const NAME = "KHR_interactivity";
  7. /**
  8. * Loader extension for KHR_interactivity
  9. */
  10. export class KHR_interactivity {
  11. /**
  12. * @internal
  13. * @param _loader
  14. */
  15. constructor(_loader) {
  16. this._loader = _loader;
  17. /**
  18. * The name of this extension.
  19. */
  20. this.name = NAME;
  21. this.enabled = this._loader.isExtensionUsed(NAME);
  22. this._pathConverter = new InteractivityPathToObjectConverter(this._loader.gltf);
  23. }
  24. dispose() {
  25. this._loader = null;
  26. delete this._pathConverter;
  27. }
  28. onReady() {
  29. if (!this._loader.babylonScene || !this._pathConverter) {
  30. return;
  31. }
  32. const scene = this._loader.babylonScene;
  33. const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity;
  34. const json = convertGLTFToSerializedFlowGraph(interactivityDefinition);
  35. const coordinator = new FlowGraphCoordinator({ scene });
  36. FlowGraph.Parse(json, { coordinator, pathConverter: this._pathConverter });
  37. coordinator.start();
  38. }
  39. }
  40. GLTFLoader.RegisterExtension(NAME, (loader) => new KHR_interactivity(loader));
  41. //# sourceMappingURL=KHR_interactivity.js.map