@drawcall/glts 0.3.1 → 0.4.1
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/README.md +96 -4
- package/dist/GLTSLoader.d.ts +2 -1
- package/dist/GLTSLoader.d.ts.map +1 -1
- package/dist/GLTSLoader.js +114 -36
- package/dist/GLTSLoader.js.map +1 -1
- package/dist/asset-exports.d.ts +12 -0
- package/dist/asset-exports.d.ts.map +1 -0
- package/dist/asset-exports.js +82 -0
- package/dist/asset-exports.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inline-analysis.d.ts +63 -0
- package/dist/inline-analysis.d.ts.map +1 -0
- package/dist/inline-analysis.js +288 -0
- package/dist/inline-analysis.js.map +1 -0
- package/dist/inline.d.ts.map +1 -1
- package/dist/inline.js +16 -225
- package/dist/inline.js.map +1 -1
- package/dist/loading-manager.d.ts +3 -0
- package/dist/loading-manager.d.ts.map +1 -0
- package/dist/loading-manager.js +9 -0
- package/dist/loading-manager.js.map +1 -0
- package/dist/loading.d.ts +12 -0
- package/dist/loading.d.ts.map +1 -0
- package/dist/loading.js +111 -0
- package/dist/loading.js.map +1 -0
- package/dist/module-graph.d.ts +4 -7
- package/dist/module-graph.d.ts.map +1 -1
- package/dist/module-graph.js +7 -23
- package/dist/module-graph.js.map +1 -1
- package/dist/root.d.ts +20 -0
- package/dist/root.d.ts.map +1 -0
- package/dist/root.js +111 -0
- package/dist/root.js.map +1 -0
- package/dist/runtime.d.ts +7 -5
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +49 -9
- package/dist/runtime.js.map +1 -1
- package/dist/types.d.ts +11 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,7 +64,8 @@ pnpm add @drawcall/glts three
|
|
|
64
64
|
```ts
|
|
65
65
|
import { GLTSLoader } from "@drawcall/glts"
|
|
66
66
|
|
|
67
|
-
const
|
|
67
|
+
const loader = new GLTSLoader()
|
|
68
|
+
const tree = await loader.loadAsync("/assets/tree.glts")
|
|
68
69
|
|
|
69
70
|
scene.add(tree.scene)
|
|
70
71
|
|
|
@@ -88,6 +89,34 @@ loader.load(
|
|
|
88
89
|
)
|
|
89
90
|
```
|
|
90
91
|
|
|
92
|
+
### Create several managed instances
|
|
93
|
+
|
|
94
|
+
Load the reusable managed constructor when one prepared asset needs several
|
|
95
|
+
instances:
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
const Tree = await loader.loadAsyncConstructor("/assets/tree.glts")
|
|
99
|
+
|
|
100
|
+
const first = new Tree()
|
|
101
|
+
const second = new Tree()
|
|
102
|
+
await Promise.all([first.ready, second.ready])
|
|
103
|
+
|
|
104
|
+
scene.add(first, second)
|
|
105
|
+
first.dispose()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`new Tree()` is synchronous and returns a stable `THREE.Group` wrapper. Its
|
|
109
|
+
`ready` promise settles when constructor-started Three.js resources have
|
|
110
|
+
finished. Each live instance participates in `reload()`, `has()`, and loader
|
|
111
|
+
ownership; `loader.dispose()` disposes any instances that remain. Repeated
|
|
112
|
+
constructor retrieval for the same URL returns the same constructor, while
|
|
113
|
+
each construction creates a distinct raw asset.
|
|
114
|
+
|
|
115
|
+
This constructor is GLTS's managed wrapper, not the class default-exported by
|
|
116
|
+
the asset. Authored methods and properties stay on the raw child and are not
|
|
117
|
+
part of the managed API. Use `loadAsync()` when one already-ready `GLTSAsset`
|
|
118
|
+
is more convenient.
|
|
119
|
+
|
|
91
120
|
## Asset contract
|
|
92
121
|
|
|
93
122
|
Each `.glts` file must:
|
|
@@ -115,11 +144,32 @@ export default class Rock extends THREE.Mesh {
|
|
|
115
144
|
}
|
|
116
145
|
```
|
|
117
146
|
|
|
147
|
+
A root module may also export preview-only camera and lighting metadata:
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
export const previewCamera = new THREE.PerspectiveCamera(45, 1, 0.1, 100)
|
|
151
|
+
|
|
152
|
+
export const previewLighting = new THREE.Group()
|
|
153
|
+
previewLighting.add(new THREE.AmbientLight(0xffffff, 0.5))
|
|
154
|
+
|
|
155
|
+
export default class Tree extends THREE.Group {
|
|
156
|
+
// Reusable scene content only.
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
`previewCamera` must be a `THREE.Camera`. `previewLighting` must be a
|
|
161
|
+
`THREE.Object3D` containing at least one `THREE.Light`. The loader exposes them
|
|
162
|
+
as `asset.previewCamera` and `asset.previewLighting`; neither is added to
|
|
163
|
+
`asset.scene`. Both properties are `undefined` when omitted and update after a
|
|
164
|
+
successful reload. When a `.glts` module is imported by another asset, only its
|
|
165
|
+
default scene export is composed into the parent.
|
|
166
|
+
|
|
118
167
|
Supported static imports:
|
|
119
168
|
|
|
120
169
|
| Import | Resolution |
|
|
121
170
|
| --- | --- |
|
|
122
171
|
| `three` | The host application's exact Three.js namespace |
|
|
172
|
+
| `@drawcall/glts` | `loadingManager` for the current loader runtime |
|
|
123
173
|
| `three/addons/...` or `three/examples/...` | Matching Three.js revision through ESM.sh |
|
|
124
174
|
| `./child.glts` | A stable loader-managed wrapper constructor |
|
|
125
175
|
| Bare npm package | An ESM.sh bundle with `three` redirected to the host |
|
|
@@ -127,6 +177,45 @@ Supported static imports:
|
|
|
127
177
|
`import.meta.url` is rewritten to the original `.glts` URL, so relative
|
|
128
178
|
textures and other browser-loaded resources continue to work.
|
|
129
179
|
|
|
180
|
+
### Constructor-started resources
|
|
181
|
+
|
|
182
|
+
Pass the runtime's `loadingManager` to any Three.js loader that starts resource
|
|
183
|
+
work in a constructor:
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
import * as THREE from "three"
|
|
187
|
+
import { loadingManager } from "@drawcall/glts"
|
|
188
|
+
|
|
189
|
+
export default class Branch extends THREE.Group {
|
|
190
|
+
readonly leafTexture: THREE.Texture
|
|
191
|
+
|
|
192
|
+
constructor() {
|
|
193
|
+
super()
|
|
194
|
+
this.leafTexture = new THREE.TextureLoader(loadingManager).load(
|
|
195
|
+
new URL("./leaf.svg", import.meta.url).href,
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
This applies to `TextureLoader`, `GLTFLoader`, `FileLoader`, and comparable
|
|
202
|
+
loaders. A root `loadAsync()` promise and `load()` callback complete only after
|
|
203
|
+
synchronous GLTS construction and the runtime manager becoming idle. Resource
|
|
204
|
+
failures reject the promise or reach the error callback at that boundary.
|
|
205
|
+
|
|
206
|
+
The package root remains safe to import in application code. Using its
|
|
207
|
+
`loadingManager` export outside a `.glts` module evaluated by `GLTSLoader`
|
|
208
|
+
throws, because no loader runtime exists there.
|
|
209
|
+
|
|
210
|
+
Nested `.glts` constructors need no special handling: they automatically use
|
|
211
|
+
the enclosing runtime. Each `GLTSLoader` owns one manager, shared by all of its
|
|
212
|
+
roots. Use one loader for concurrent roots that request the same resolved
|
|
213
|
+
resource URL; Three.js may globally coalesce that URL without notifying every
|
|
214
|
+
manager, so doing this across loaders is unsupported. Nested construction and
|
|
215
|
+
reload replacement stay synchronous and do not wait for resources they start.
|
|
216
|
+
Arbitrary asynchronous work outside a Three.js loader using `loadingManager`
|
|
217
|
+
is not tracked.
|
|
218
|
+
|
|
130
219
|
Dynamic imports, import attributes, local helper `.ts` modules, cyclic module
|
|
131
220
|
graphs, cross-asset inheritance, and custom-method contracts across a `.glts`
|
|
132
221
|
boundary are intentionally outside V1.
|
|
@@ -160,10 +249,13 @@ import { Group } from "three"
|
|
|
160
249
|
Paths in the source record are relative to the entry module unless they start
|
|
161
250
|
at `/` or are absolute URLs. Each dependency must default-export a class and
|
|
162
251
|
may only use default imports for other local `.glts` files. Dependency named
|
|
163
|
-
exports
|
|
164
|
-
|
|
252
|
+
exports other than `previewCamera` and `previewLighting`, dynamic imports,
|
|
253
|
+
import attributes, local helper modules, conflicting external bindings, and
|
|
254
|
+
cycles fail with a `GLTSError`. Dependency
|
|
165
255
|
`import.meta.url` expressions still resolve to the original source path. Local
|
|
166
|
-
GLTS imports are constructor values rather than TypeScript type imports.
|
|
256
|
+
GLTS imports are constructor values rather than TypeScript type imports. The
|
|
257
|
+
two preview exports are permitted in inlined dependencies but remain local to
|
|
258
|
+
their source.
|
|
167
259
|
|
|
168
260
|
## Reload behavior
|
|
169
261
|
|
package/dist/GLTSLoader.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Loader, type LoadingManager } from "three";
|
|
2
|
-
import type { GLTSAsset, GLTSErrorCallback, GLTSLoadCallback, GLTSLoaderOptions, GLTSProgressCallback } from "./types.js";
|
|
2
|
+
import type { GLTSAsset, GLTSConstructor, GLTSErrorCallback, GLTSLoadCallback, GLTSLoaderOptions, GLTSProgressCallback } from "./types.js";
|
|
3
3
|
export declare class GLTSLoader extends Loader {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(manager?: LoadingManager, options?: GLTSLoaderOptions);
|
|
6
6
|
load(url: string, onLoad: GLTSLoadCallback, onProgress?: GLTSProgressCallback, onError?: GLTSErrorCallback): void;
|
|
7
7
|
loadAsync(url: string, onProgress?: GLTSProgressCallback): Promise<GLTSAsset>;
|
|
8
|
+
loadAsyncConstructor(url: string): Promise<GLTSConstructor>;
|
|
8
9
|
has(url: string): boolean;
|
|
9
10
|
reload(url: string): Promise<void>;
|
|
10
11
|
dispose(): void;
|
package/dist/GLTSLoader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GLTSLoader.d.ts","sourceRoot":"","sources":["../src/GLTSLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GLTSLoader.d.ts","sourceRoot":"","sources":["../src/GLTSLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,iBAAiB,EAGjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAqFpB,qBAAa,UAAW,SAAQ,MAAM;;gBAYlC,OAAO,GAAE,cAAsC,EAC/C,OAAO,GAAE,iBAAsB;IAmBxB,IAAI,CACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,oBAAoB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI;IAWQ,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAiB5F,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCxC,OAAO,IAAI,IAAI;CA2JhB"}
|
package/dist/GLTSLoader.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DefaultLoadingManager, Loader } from "three";
|
|
2
2
|
import * as THREE from "three";
|
|
3
3
|
import { GLTSError } from "./errors.js";
|
|
4
|
-
import { canonicalGLTSURL, ModuleGraph
|
|
4
|
+
import { canonicalGLTSURL, ModuleGraph } from "./module-graph.js";
|
|
5
5
|
import { ModuleURLStore } from "./module-url-store.js";
|
|
6
|
+
import { RootOwnership } from "./root.js";
|
|
6
7
|
import { WrapperRuntime } from "./runtime.js";
|
|
7
8
|
function environmentBaseURL() {
|
|
8
9
|
if (typeof document !== "undefined") {
|
|
@@ -19,14 +20,28 @@ function resolvedOptionURL(value, fallback, base) {
|
|
|
19
20
|
class GLTSAssetHandle {
|
|
20
21
|
scene;
|
|
21
22
|
url;
|
|
22
|
-
#
|
|
23
|
-
#
|
|
23
|
+
#assets;
|
|
24
|
+
#loader;
|
|
25
|
+
#previewCamera;
|
|
26
|
+
#previewLighting;
|
|
24
27
|
#disposed = false;
|
|
25
|
-
constructor(scene, url,
|
|
28
|
+
constructor(scene, url, preview, loader, assets) {
|
|
26
29
|
this.scene = scene;
|
|
27
30
|
this.url = url;
|
|
28
|
-
this.#
|
|
29
|
-
this.#
|
|
31
|
+
this.#previewCamera = preview.previewCamera;
|
|
32
|
+
this.#previewLighting = preview.previewLighting;
|
|
33
|
+
this.#loader = loader;
|
|
34
|
+
this.#assets = assets;
|
|
35
|
+
}
|
|
36
|
+
get previewCamera() {
|
|
37
|
+
return this.#previewCamera;
|
|
38
|
+
}
|
|
39
|
+
get previewLighting() {
|
|
40
|
+
return this.#previewLighting;
|
|
41
|
+
}
|
|
42
|
+
updatePreview(preview) {
|
|
43
|
+
this.#previewCamera = preview.previewCamera;
|
|
44
|
+
this.#previewLighting = preview.previewLighting;
|
|
30
45
|
}
|
|
31
46
|
async reload() {
|
|
32
47
|
if (this.#disposed) {
|
|
@@ -35,14 +50,19 @@ class GLTSAssetHandle {
|
|
|
35
50
|
phase: "reload"
|
|
36
51
|
});
|
|
37
52
|
}
|
|
38
|
-
await this.#
|
|
53
|
+
await this.#loader.reload(this.url);
|
|
39
54
|
}
|
|
40
55
|
dispose() {
|
|
41
56
|
if (this.#disposed) {
|
|
42
57
|
return;
|
|
43
58
|
}
|
|
44
59
|
this.#disposed = true;
|
|
45
|
-
|
|
60
|
+
try {
|
|
61
|
+
this.scene.dispose();
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
this.#assets.delete(this);
|
|
65
|
+
}
|
|
46
66
|
}
|
|
47
67
|
}
|
|
48
68
|
export class GLTSLoader extends Loader {
|
|
@@ -51,6 +71,8 @@ export class GLTSLoader extends Loader {
|
|
|
51
71
|
#runtime;
|
|
52
72
|
#graph;
|
|
53
73
|
#assets = new Set();
|
|
74
|
+
#constructors = new Map();
|
|
75
|
+
#roots = new Set();
|
|
54
76
|
#reloadQueues = new Map();
|
|
55
77
|
#disposed = false;
|
|
56
78
|
constructor(manager = DefaultLoadingManager, options = {}) {
|
|
@@ -65,7 +87,7 @@ export class GLTSLoader extends Loader {
|
|
|
65
87
|
fetch: (input, init) => this.#fetch(input, init),
|
|
66
88
|
moduleURLs,
|
|
67
89
|
runtime: this.#runtime,
|
|
68
|
-
threeRevision:
|
|
90
|
+
threeRevision: THREE.REVISION
|
|
69
91
|
});
|
|
70
92
|
}
|
|
71
93
|
load(url, onLoad, onProgress, onError) {
|
|
@@ -78,32 +100,18 @@ export class GLTSLoader extends Loader {
|
|
|
78
100
|
});
|
|
79
101
|
}
|
|
80
102
|
async loadAsync(url, onProgress) {
|
|
81
|
-
this.#assertActive(url);
|
|
82
103
|
void onProgress;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
let handle;
|
|
90
|
-
handle = new GLTSAssetHandle(scene, prepared.url, () => this.reload(prepared.url), () => {
|
|
91
|
-
try {
|
|
92
|
-
this.#runtime.disposeWrapper(scene);
|
|
93
|
-
}
|
|
94
|
-
finally {
|
|
95
|
-
this.#graph.releaseRoot(prepared.url);
|
|
96
|
-
this.#assets.delete(handle);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
this.#assets.add(handle);
|
|
100
|
-
return handle;
|
|
101
|
-
}
|
|
102
|
-
finally {
|
|
103
|
-
this.#graph.settleReachability();
|
|
104
|
-
}
|
|
104
|
+
return this.#withConstructor(url, async (prepared) => {
|
|
105
|
+
const instance = new prepared.Constructor();
|
|
106
|
+
await instance.ready;
|
|
107
|
+
const handle = new GLTSAssetHandle(instance, prepared.url, prepared, this, this.#assets);
|
|
108
|
+
this.#assets.add(handle);
|
|
109
|
+
return handle;
|
|
105
110
|
});
|
|
106
111
|
}
|
|
112
|
+
loadAsyncConstructor(url) {
|
|
113
|
+
return this.#withConstructor(url, (prepared) => prepared.Constructor);
|
|
114
|
+
}
|
|
107
115
|
has(url) {
|
|
108
116
|
return this.#graph.hasAsset(this.#resolveURL(url));
|
|
109
117
|
}
|
|
@@ -124,7 +132,7 @@ export class GLTSLoader extends Loader {
|
|
|
124
132
|
}
|
|
125
133
|
throw error;
|
|
126
134
|
}
|
|
127
|
-
this.#
|
|
135
|
+
this.#commitReload(prepared);
|
|
128
136
|
}
|
|
129
137
|
finally {
|
|
130
138
|
this.#graph.settleReachability();
|
|
@@ -144,26 +152,88 @@ export class GLTSLoader extends Loader {
|
|
|
144
152
|
if (this.#disposed) {
|
|
145
153
|
return;
|
|
146
154
|
}
|
|
155
|
+
this.#disposed = true;
|
|
156
|
+
const reason = new GLTSError("Loader was disposed before the instance became ready", {
|
|
157
|
+
url: "glts://loader",
|
|
158
|
+
phase: "dispose"
|
|
159
|
+
});
|
|
147
160
|
const errors = [];
|
|
148
|
-
for (const
|
|
161
|
+
for (const root of [...this.#roots]) {
|
|
149
162
|
try {
|
|
150
|
-
|
|
163
|
+
root.dispose(reason);
|
|
151
164
|
}
|
|
152
165
|
catch (error) {
|
|
153
166
|
errors.push(error);
|
|
154
167
|
}
|
|
155
168
|
}
|
|
169
|
+
this.#assets.clear();
|
|
156
170
|
try {
|
|
157
171
|
this.#runtime.dispose();
|
|
158
172
|
}
|
|
159
173
|
catch (error) {
|
|
160
174
|
errors.push(error);
|
|
161
175
|
}
|
|
162
|
-
this.#disposed = true;
|
|
163
176
|
if (errors.length > 0) {
|
|
164
177
|
throw new GLTSError("Loader disposal failed", { url: "glts://loader", phase: "dispose" }, new AggregateError(errors));
|
|
165
178
|
}
|
|
166
179
|
}
|
|
180
|
+
async #withConstructor(url, use) {
|
|
181
|
+
this.#assertActive(url);
|
|
182
|
+
const resolvedURL = this.#resolveURL(url);
|
|
183
|
+
return this.#trackLoading(resolvedURL, async () => {
|
|
184
|
+
try {
|
|
185
|
+
const prepared = await this.#prepareConstructor(resolvedURL);
|
|
186
|
+
return await use(prepared);
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
this.#graph.settleReachability();
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
async #prepareConstructor(url) {
|
|
194
|
+
const prepared = await this.#graph.prepareAsset(url, { activate: true, force: false });
|
|
195
|
+
this.#assertActive(prepared.url);
|
|
196
|
+
const existing = this.#constructors.get(prepared.url);
|
|
197
|
+
if (existing) {
|
|
198
|
+
return { Constructor: existing, ...prepared };
|
|
199
|
+
}
|
|
200
|
+
const loader = this;
|
|
201
|
+
class ManagedGLTSInstance extends THREE.Group {
|
|
202
|
+
ready;
|
|
203
|
+
#ownership;
|
|
204
|
+
constructor() {
|
|
205
|
+
super();
|
|
206
|
+
this.#ownership = loader.#mountInstance(this, prepared.url);
|
|
207
|
+
this.ready = this.#ownership.ready;
|
|
208
|
+
}
|
|
209
|
+
dispose() {
|
|
210
|
+
this.#ownership.dispose();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
this.#constructors.set(prepared.url, ManagedGLTSInstance);
|
|
214
|
+
return { Constructor: ManagedGLTSInstance, ...prepared };
|
|
215
|
+
}
|
|
216
|
+
#mountInstance(instance, url) {
|
|
217
|
+
this.#assertActive(url);
|
|
218
|
+
const root = this.#runtime.mountRoot(instance, url);
|
|
219
|
+
try {
|
|
220
|
+
this.#graph.retainRoot(url);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
root.dispose(error);
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
const ownership = new RootOwnership(root, url, (released) => {
|
|
227
|
+
try {
|
|
228
|
+
this.#graph.releaseRoot(url);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
this.#roots.delete(released);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
this.#roots.add(ownership);
|
|
235
|
+
return ownership;
|
|
236
|
+
}
|
|
167
237
|
async #trackLoading(url, operation) {
|
|
168
238
|
this.manager.itemStart(url);
|
|
169
239
|
try {
|
|
@@ -181,6 +251,14 @@ export class GLTSLoader extends Loader {
|
|
|
181
251
|
const managedURL = this.manager.resolveURL(`${this.path}${url}`);
|
|
182
252
|
return canonicalGLTSURL(managedURL, this.#baseURL);
|
|
183
253
|
}
|
|
254
|
+
#commitReload(prepared) {
|
|
255
|
+
this.#graph.activateAsset(prepared);
|
|
256
|
+
for (const asset of this.#assets) {
|
|
257
|
+
if (asset.url === prepared.url) {
|
|
258
|
+
asset.updatePreview(prepared);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
184
262
|
#fetch(input, init) {
|
|
185
263
|
const headers = new Headers(init?.headers);
|
|
186
264
|
for (const [name, value] of Object.entries(this.requestHeader)) {
|
package/dist/GLTSLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GLTSLoader.js","sourceRoot":"","sources":["../src/GLTSLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,MAAM,EAEP,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GLTSLoader.js","sourceRoot":"","sources":["../src/GLTSLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GLTSPreviewExports, RawAssetConstructor } from "./types.js";
|
|
2
|
+
export type PreviewState = Required<GLTSPreviewExports>;
|
|
3
|
+
export interface AssetExports extends PreviewState {
|
|
4
|
+
readonly assetClass: RawAssetConstructor;
|
|
5
|
+
}
|
|
6
|
+
interface AssetModuleContext {
|
|
7
|
+
readonly url: string;
|
|
8
|
+
readonly importChain: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function readAssetExports(namespace: unknown, context: AssetModuleContext): AssetExports;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=asset-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-exports.d.ts","sourceRoot":"","sources":["../src/asset-exports.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAExD,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC1C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AA+GD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,kBAAkB,GAC1B,YAAY,CAMd"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { GLTSError } from "./errors.js";
|
|
3
|
+
const absent = Symbol("absent asset export");
|
|
4
|
+
function moduleExport(namespace, name) {
|
|
5
|
+
if ((typeof namespace !== "object" && typeof namespace !== "function") ||
|
|
6
|
+
namespace === null ||
|
|
7
|
+
!Object.hasOwn(namespace, name)) {
|
|
8
|
+
return absent;
|
|
9
|
+
}
|
|
10
|
+
return Reflect.get(namespace, name);
|
|
11
|
+
}
|
|
12
|
+
function receivedType(value) {
|
|
13
|
+
if (value === null) {
|
|
14
|
+
return "null";
|
|
15
|
+
}
|
|
16
|
+
if (value instanceof THREE.Object3D) {
|
|
17
|
+
return `THREE.${value.type}`;
|
|
18
|
+
}
|
|
19
|
+
return typeof value;
|
|
20
|
+
}
|
|
21
|
+
function isConstructor(value) {
|
|
22
|
+
if (typeof value !== "function") {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
Reflect.construct(Object, [], value);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function readAssetClass(namespace, context) {
|
|
34
|
+
const value = moduleExport(namespace, "default");
|
|
35
|
+
if (isConstructor(value)) {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
throw new GLTSError("Module must default-export a constructible class", {
|
|
39
|
+
...context,
|
|
40
|
+
phase: "evaluate"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function readCamera(namespace, context) {
|
|
44
|
+
const value = moduleExport(namespace, "previewCamera");
|
|
45
|
+
if (value === absent) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if (value instanceof THREE.Camera) {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
throw new GLTSError(`Named export "previewCamera" must be a THREE.Camera; received ${receivedType(value)}`, { ...context, phase: "evaluate" });
|
|
52
|
+
}
|
|
53
|
+
function containsLight(object) {
|
|
54
|
+
let found = false;
|
|
55
|
+
object.traverse((child) => {
|
|
56
|
+
if (child instanceof THREE.Light) {
|
|
57
|
+
found = true;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return found;
|
|
61
|
+
}
|
|
62
|
+
function readLighting(namespace, context) {
|
|
63
|
+
const value = moduleExport(namespace, "previewLighting");
|
|
64
|
+
if (value === absent) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
if (!(value instanceof THREE.Object3D)) {
|
|
68
|
+
throw new GLTSError(`Named export "previewLighting" must be a THREE.Object3D containing at least one THREE.Light; received ${receivedType(value)}`, { ...context, phase: "evaluate" });
|
|
69
|
+
}
|
|
70
|
+
if (!containsLight(value)) {
|
|
71
|
+
throw new GLTSError(`Named export "previewLighting" must contain at least one THREE.Light; received ${receivedType(value)} with no lights`, { ...context, phase: "evaluate" });
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
export function readAssetExports(namespace, context) {
|
|
76
|
+
return {
|
|
77
|
+
assetClass: readAssetClass(namespace, context),
|
|
78
|
+
previewCamera: readCamera(namespace, context),
|
|
79
|
+
previewLighting: readLighting(namespace, context)
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=asset-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-exports.js","sourceRoot":"","sources":["../src/asset-exports.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type GLTSPhase = "resolve" | "fetch" | "transform" | "evaluate" | "construct" | "reload" | "dispose";
|
|
1
|
+
export type GLTSPhase = "resolve" | "fetch" | "transform" | "evaluate" | "construct" | "resource" | "reload" | "dispose";
|
|
2
2
|
export interface GLTSErrorContext {
|
|
3
3
|
readonly url: string;
|
|
4
4
|
readonly phase: GLTSPhase;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,OAAO,GACP,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO;CAaxE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAMX"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,OAAO,GACP,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO;CAaxE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAMX"}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,GAAG,CAAS;IACZ,KAAK,CAAY;IACjB,WAAW,CAAoB;IAExC,YAAY,OAAe,EAAE,OAAyB,EAAE,KAAe;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAErF,KAAK,CAAC,SAAS,OAAO,CAAC,KAAK,KAAK,OAAO,UAAU,OAAO,CAAC,GAAG,GAAG,YAAY,EAAE,EAAE;YAC9E,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CACzB,KAAc,EACd,OAAe,EACf,OAAyB;IAEzB,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { GLTSError, type GLTSPhase } from "./errors.js";
|
|
2
2
|
export { GLTSLoader } from "./GLTSLoader.js";
|
|
3
3
|
export { inline } from "./inline.js";
|
|
4
|
-
export
|
|
4
|
+
export { loadingManager } from "./loading-manager.js";
|
|
5
|
+
export type { GLTSAsset, GLTSConstructor, GLTSErrorCallback, GLTSFetch, GLTSInstance, GLTSLoadCallback, GLTSLoaderOptions, GLTSPreviewExports, GLTSProgressCallback } from "./types.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|