@needle-tools/gltf-progressive 3.6.1 → 3.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/loaders.js CHANGED
@@ -40,7 +40,8 @@ fetch(_remoteDracoDecoderUrl, {
40
40
  }
41
41
  })
42
42
  .finally(() => {
43
- prepareLoaders();
43
+ if (preloadLoaders)
44
+ prepareLoaders();
44
45
  });
45
46
  // #region Loader Configuration
46
47
  /**
@@ -89,15 +90,25 @@ export function setKTX2TranscoderLocation(location) {
89
90
  * @returns The loaders/decoders.
90
91
  */
91
92
  export function createLoaders(renderer) {
92
- prepareLoaders();
93
+ preloadLoaders = true;
94
+ const loaders = prepareLoaders();
93
95
  if (renderer) {
94
- ktx2Loader.detectSupport(renderer);
96
+ loaders.ktx2Loader.detectSupport(renderer);
95
97
  }
96
98
  else if (renderer !== null)
97
99
  console.warn("No renderer provided to detect ktx2 support - loading KTX2 textures might fail");
98
- return { dracoLoader, ktx2Loader, meshoptDecoder };
100
+ return loaders;
101
+ }
102
+ /** Release the shared Draco and KTX2 workers when no engine context uses them. */
103
+ export function disposeLoaders() {
104
+ preloadLoaders = false;
105
+ dracoLoader?.dispose();
106
+ ktx2Loader?.dispose();
107
+ dracoLoader = undefined;
108
+ ktx2Loader = undefined;
99
109
  }
100
110
  export function addDracoAndKTX2Loaders(loader) {
111
+ const { dracoLoader, ktx2Loader, meshoptDecoder } = prepareLoaders();
101
112
  if (!loader.dracoLoader)
102
113
  loader.setDRACOLoader(dracoLoader);
103
114
  if (!loader.ktx2Loader)
@@ -107,6 +118,7 @@ export function addDracoAndKTX2Loaders(loader) {
107
118
  }
108
119
  // #region internal
109
120
  const $dracoDecoderPath = Symbol("dracoDecoderPath");
121
+ let preloadLoaders = true;
110
122
  let dracoLoader;
111
123
  let meshoptDecoder;
112
124
  let ktx2Loader;
@@ -127,6 +139,7 @@ function prepareLoaders() {
127
139
  if (!meshoptDecoder) {
128
140
  meshoptDecoder = MeshoptDecoder;
129
141
  }
142
+ return { dracoLoader, ktx2Loader, meshoptDecoder };
130
143
  }
131
144
  const gltfLoaderConfigurations = new WeakMap();
132
145
  export function configureLoader(loader, opts) {
package/lib/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // replaced at build time
2
- export const version = "3.6.1";
2
+ export const version = "3.6.2";
3
3
  globalThis["GLTF_PROGRESSIVE_VERSION"] = version;
4
4
  console.debug(`[gltf-progressive] version ${version || "-"}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/gltf-progressive",
3
- "version": "3.6.1",
3
+ "version": "3.6.2",
4
4
  "description": "three.js support for loading glTF or GLB files that contain progressive loading data",
5
5
  "homepage": "https://needle.tools",
6
6
  "author": {