@opsydyn/effect-three 0.3.0 → 0.4.0
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/CHANGELOG.md +15 -0
- package/README.md +12 -0
- package/dist/{index-8cf8t6by.js → index-h3vf50fn.js} +2113 -83
- package/dist/index-h3vf50fn.js.map +53 -0
- package/dist/index-ttwy0znv.js +145 -0
- package/dist/index-ttwy0znv.js.map +12 -0
- package/dist/index.js +488 -147
- package/dist/index.js.map +8 -6
- package/dist/kernel/boxSelect.d.ts +22 -0
- package/dist/kernel/boxSelect.d.ts.map +1 -0
- package/dist/kernel/build.d.ts +142 -6
- package/dist/kernel/build.d.ts.map +1 -1
- package/dist/kernel/cameraShake.d.ts.map +1 -1
- package/dist/kernel/describeScene.d.ts +50 -0
- package/dist/kernel/describeScene.d.ts.map +1 -0
- package/dist/kernel/description.d.ts +155 -1
- package/dist/kernel/description.d.ts.map +1 -1
- package/dist/kernel/diff.d.ts +15 -0
- package/dist/kernel/diff.d.ts.map +1 -1
- package/dist/kernel/equality.d.ts +9 -1
- package/dist/kernel/equality.d.ts.map +1 -1
- package/dist/kernel/gizmo.d.ts +69 -0
- package/dist/kernel/gizmo.d.ts.map +1 -0
- package/dist/kernel/history.d.ts +61 -0
- package/dist/kernel/history.d.ts.map +1 -0
- package/dist/kernel/index.d.ts +13 -2
- package/dist/kernel/index.d.ts.map +1 -1
- package/dist/kernel/index.js +106 -3
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/inspect.d.ts +85 -0
- package/dist/kernel/inspect.d.ts.map +1 -0
- package/dist/kernel/lineGeometry.d.ts +25 -0
- package/dist/kernel/lineGeometry.d.ts.map +1 -0
- package/dist/kernel/lockstep.d.ts +114 -0
- package/dist/kernel/lockstep.d.ts.map +1 -0
- package/dist/kernel/loop.d.ts.map +1 -1
- package/dist/kernel/materials.d.ts.map +1 -1
- package/dist/kernel/pivot.d.ts +54 -0
- package/dist/kernel/pivot.d.ts.map +1 -0
- package/dist/kernel/pointBuffers.d.ts +17 -0
- package/dist/kernel/pointBuffers.d.ts.map +1 -0
- package/dist/kernel/pointer.d.ts +12 -0
- package/dist/kernel/pointer.d.ts.map +1 -1
- package/dist/kernel/renderKit.d.ts +21 -1
- package/dist/kernel/renderKit.d.ts.map +1 -1
- package/dist/kernel/renderer.d.ts +6 -0
- package/dist/kernel/renderer.d.ts.map +1 -1
- package/dist/kernel/sceneChanges.d.ts +87 -0
- package/dist/kernel/sceneChanges.d.ts.map +1 -0
- package/dist/kernel/sceneGraph.d.ts +6 -0
- package/dist/kernel/sceneGraph.d.ts.map +1 -1
- package/dist/kernel/seeded.d.ts +9 -0
- package/dist/kernel/seeded.d.ts.map +1 -0
- package/dist/kernel/shots.d.ts +26 -0
- package/dist/kernel/shots.d.ts.map +1 -0
- package/dist/kernel/tape.d.ts +38 -0
- package/dist/kernel/tape.d.ts.map +1 -0
- package/dist/kernel/trail.d.ts +31 -0
- package/dist/kernel/trail.d.ts.map +1 -0
- package/dist/kernel/viewportGizmo.d.ts +25 -0
- package/dist/kernel/viewportGizmo.d.ts.map +1 -0
- package/dist/runtime/Inspector.d.ts +20 -0
- package/dist/runtime/Inspector.d.ts.map +1 -0
- package/dist/runtime/SceneFile.d.ts +448 -0
- package/dist/runtime/SceneFile.d.ts.map +1 -0
- package/dist/runtime/SceneSchema.d.ts +318 -0
- package/dist/runtime/SceneSchema.d.ts.map +1 -1
- package/dist/runtime/errors.d.ts +9 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +3 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/webgl/index.d.ts.map +1 -1
- package/dist/webgl/index.js +228 -3
- package/dist/webgl/index.js.map +6 -4
- package/dist/webgl/line.d.ts +4 -0
- package/dist/webgl/line.d.ts.map +1 -0
- package/dist/webgl/points.d.ts +4 -0
- package/dist/webgl/points.d.ts.map +1 -0
- package/dist/webgpu/index.d.ts.map +1 -1
- package/dist/webgpu/index.js +206 -26
- package/dist/webgpu/index.js.map +6 -4
- package/dist/webgpu/line.d.ts +4 -0
- package/dist/webgpu/line.d.ts.map +1 -0
- package/dist/webgpu/points.d.ts +4 -0
- package/dist/webgpu/points.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/kernel/boxSelect.ts +73 -0
- package/src/kernel/build.ts +332 -0
- package/src/kernel/cameraShake.ts +3 -13
- package/src/kernel/describeScene.ts +224 -0
- package/src/kernel/description.ts +175 -0
- package/src/kernel/diff.ts +39 -0
- package/src/kernel/equality.ts +101 -0
- package/src/kernel/gizmo.ts +478 -0
- package/src/kernel/history.ts +118 -0
- package/src/kernel/index.ts +97 -0
- package/src/kernel/inspect.ts +214 -0
- package/src/kernel/lineGeometry.ts +75 -0
- package/src/kernel/lockstep.ts +237 -0
- package/src/kernel/loop.ts +5 -0
- package/src/kernel/materials.ts +3 -0
- package/src/kernel/pivot.ts +418 -0
- package/src/kernel/pointBuffers.ts +115 -0
- package/src/kernel/pointer.ts +55 -12
- package/src/kernel/renderKit.ts +23 -1
- package/src/kernel/renderer.ts +6 -0
- package/src/kernel/sceneChanges.ts +265 -0
- package/src/kernel/sceneGraph.ts +319 -8
- package/src/kernel/seeded.ts +18 -0
- package/src/kernel/shots.ts +167 -0
- package/src/kernel/tape.ts +124 -0
- package/src/kernel/trail.ts +170 -0
- package/src/kernel/viewportGizmo.ts +194 -0
- package/src/runtime/Inspector.ts +43 -0
- package/src/runtime/SceneFile.ts +46 -0
- package/src/runtime/SceneSchema.ts +247 -0
- package/src/runtime/errors.ts +6 -0
- package/src/runtime/index.ts +3 -1
- package/src/webgl/index.ts +4 -0
- package/src/webgl/line.ts +66 -0
- package/src/webgl/points.ts +205 -0
- package/src/webgpu/index.ts +4 -0
- package/src/webgpu/line.ts +67 -0
- package/src/webgpu/points.ts +193 -0
- package/dist/index-8cf8t6by.js.map +0 -41
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
__export,
|
|
2
3
|
handJoints2,
|
|
3
4
|
clipTime2,
|
|
4
5
|
clipRunning2,
|
|
@@ -68,6 +69,15 @@ import {
|
|
|
68
69
|
sharedMaterial2,
|
|
69
70
|
group2,
|
|
70
71
|
detailed2,
|
|
72
|
+
line2,
|
|
73
|
+
points2,
|
|
74
|
+
sparkles2,
|
|
75
|
+
stars2,
|
|
76
|
+
catmullRomPoints2,
|
|
77
|
+
catmullRomPointAt2,
|
|
78
|
+
catmullRomColors2,
|
|
79
|
+
cubicBezierPoints2,
|
|
80
|
+
quadraticBezierPoints2,
|
|
71
81
|
headSpace2,
|
|
72
82
|
jointSpace2,
|
|
73
83
|
controllerSpace2,
|
|
@@ -78,6 +88,8 @@ import {
|
|
|
78
88
|
xrMesh2,
|
|
79
89
|
xrAnchor2,
|
|
80
90
|
mesh2,
|
|
91
|
+
trail2,
|
|
92
|
+
edges2,
|
|
81
93
|
body2,
|
|
82
94
|
interactionGroups2,
|
|
83
95
|
cuboidCollider2,
|
|
@@ -124,6 +136,7 @@ import {
|
|
|
124
136
|
sky2,
|
|
125
137
|
contactShadows2,
|
|
126
138
|
overlay2,
|
|
139
|
+
hud2,
|
|
127
140
|
scene2,
|
|
128
141
|
emptyIndex2,
|
|
129
142
|
indexScene2,
|
|
@@ -167,22 +180,48 @@ import {
|
|
|
167
180
|
createPointerTracker2,
|
|
168
181
|
createSceneLoop2,
|
|
169
182
|
recordingRendererFactory2,
|
|
170
|
-
createSceneGraph2
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
createSceneGraph2,
|
|
184
|
+
gizmo2,
|
|
185
|
+
pressGizmo2,
|
|
186
|
+
releaseGizmo2,
|
|
187
|
+
hoverGizmo2,
|
|
188
|
+
dragGizmo2,
|
|
189
|
+
movedAlike2,
|
|
190
|
+
gizmoHandleOf2,
|
|
191
|
+
gizmoNodes2,
|
|
192
|
+
boxSelect2,
|
|
193
|
+
exports_history,
|
|
194
|
+
exports_lockstep,
|
|
195
|
+
thingsBounds2,
|
|
196
|
+
describeScene2,
|
|
197
|
+
formatSummary2,
|
|
198
|
+
shotAngles2,
|
|
199
|
+
shotCamera2,
|
|
200
|
+
moods2,
|
|
201
|
+
moodStaging2,
|
|
202
|
+
inspectFields2,
|
|
203
|
+
setAt2,
|
|
204
|
+
sceneChanges2,
|
|
205
|
+
formatChanges2,
|
|
206
|
+
tape2,
|
|
207
|
+
placeTapeEnd2,
|
|
208
|
+
pointTape2,
|
|
209
|
+
clearTape2,
|
|
210
|
+
tapeLength2,
|
|
211
|
+
tapeMiddle2,
|
|
212
|
+
tapeNodes2,
|
|
213
|
+
pivot2,
|
|
214
|
+
pressPivot2,
|
|
215
|
+
releasePivot2,
|
|
216
|
+
hoverPivot2,
|
|
217
|
+
dragPivot2,
|
|
218
|
+
pivotHandleOf2,
|
|
219
|
+
pivotNodes2,
|
|
220
|
+
viewportGizmoNodes2,
|
|
221
|
+
viewportAxisOf2,
|
|
222
|
+
cameraAlong2
|
|
223
|
+
} from "./index-h3vf50fn.js";
|
|
224
|
+
import"./index-ttwy0znv.js";
|
|
186
225
|
|
|
187
226
|
// src/runtime/FrameSource.ts
|
|
188
227
|
var exports_FrameSource = {};
|
|
@@ -192,17 +231,11 @@ __export(exports_FrameSource, {
|
|
|
192
231
|
layer: () => layer
|
|
193
232
|
});
|
|
194
233
|
|
|
195
|
-
// src/runtime/
|
|
196
|
-
var
|
|
197
|
-
__export(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
// src/runtime/SceneRuntime.ts
|
|
203
|
-
var exports_SceneRuntime = {};
|
|
204
|
-
__export(exports_SceneRuntime, {
|
|
205
|
-
make: () => make
|
|
234
|
+
// src/runtime/Inspector.ts
|
|
235
|
+
var exports_Inspector = {};
|
|
236
|
+
__export(exports_Inspector, {
|
|
237
|
+
edit: () => edit,
|
|
238
|
+
fields: () => fields
|
|
206
239
|
});
|
|
207
240
|
|
|
208
241
|
// src/runtime/SceneSchema.ts
|
|
@@ -238,10 +271,15 @@ __export(exports_SceneSchema, {
|
|
|
238
271
|
GeometryRef: () => GeometryRef,
|
|
239
272
|
Gesture: () => Gesture,
|
|
240
273
|
GestureDetail: () => GestureDetail,
|
|
274
|
+
GestureEndDetail: () => GestureEndDetail,
|
|
241
275
|
Gestures: () => Gestures,
|
|
276
|
+
Gizmo: () => Gizmo,
|
|
242
277
|
GridNode: () => GridNode,
|
|
243
278
|
HemisphereLightNode: () => HemisphereLightNode,
|
|
279
|
+
History: () => History,
|
|
244
280
|
HitDetail: () => HitDetail,
|
|
281
|
+
Hud: () => Hud,
|
|
282
|
+
HudAlignment: () => HudAlignment,
|
|
245
283
|
Instance: () => Instance,
|
|
246
284
|
InstancesNode: () => InstancesNode,
|
|
247
285
|
InteractionGroups: () => InteractionGroups,
|
|
@@ -253,6 +291,10 @@ __export(exports_SceneSchema, {
|
|
|
253
291
|
LabelMeasuredDetail: () => LabelMeasuredDetail,
|
|
254
292
|
LabelNode: () => LabelNode,
|
|
255
293
|
LambertMaterial: () => LambertMaterial,
|
|
294
|
+
LineNode: () => LineNode,
|
|
295
|
+
Lockstep: () => Lockstep,
|
|
296
|
+
LockstepMember: () => LockstepMember,
|
|
297
|
+
LockstepPacket: () => LockstepPacket,
|
|
256
298
|
MaterialRef: () => MaterialRef,
|
|
257
299
|
MaterialSide: () => MaterialSide,
|
|
258
300
|
MeasuredDetail: () => MeasuredDetail,
|
|
@@ -267,8 +309,13 @@ __export(exports_SceneSchema, {
|
|
|
267
309
|
PhongMaterial: () => PhongMaterial,
|
|
268
310
|
PhysicalMaterial: () => PhysicalMaterial,
|
|
269
311
|
Physics: () => Physics,
|
|
312
|
+
Pivot: () => Pivot,
|
|
313
|
+
PivotHandle: () => PivotHandle,
|
|
314
|
+
Placement: () => Placement,
|
|
270
315
|
PlaneGeometry: () => PlaneGeometry,
|
|
271
316
|
PointLightNode: () => PointLightNode,
|
|
317
|
+
PointLook: () => PointLook,
|
|
318
|
+
PointsNode: () => PointsNode,
|
|
272
319
|
PostEffect: () => PostEffect,
|
|
273
320
|
Ray: () => Ray,
|
|
274
321
|
RenderSettings: () => RenderSettings,
|
|
@@ -289,8 +336,10 @@ __export(exports_SceneSchema, {
|
|
|
289
336
|
SpotLightNode: () => SpotLightNode,
|
|
290
337
|
StandardMaterial: () => StandardMaterial,
|
|
291
338
|
SurfaceMaterial: () => SurfaceMaterial,
|
|
339
|
+
Tape: () => Tape,
|
|
292
340
|
TextGeometry: () => TextGeometry,
|
|
293
341
|
TorusGeometry: () => TorusGeometry,
|
|
342
|
+
Trail: () => Trail,
|
|
294
343
|
Transition: () => Transition,
|
|
295
344
|
Vec3: () => Vec3,
|
|
296
345
|
View: () => View,
|
|
@@ -307,12 +356,36 @@ __export(exports_SceneSchema, {
|
|
|
307
356
|
XrStickDetail: () => XrStickDetail,
|
|
308
357
|
XrSurfaceDetail: () => XrSurfaceDetail
|
|
309
358
|
});
|
|
359
|
+
|
|
360
|
+
// src/runtime/ResourceRegistry.ts
|
|
361
|
+
var exports_ResourceRegistry = {};
|
|
362
|
+
__export(exports_ResourceRegistry, {
|
|
363
|
+
ResourceRegistry: () => ResourceRegistry,
|
|
364
|
+
layer: () => layer2
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
// src/runtime/SceneFile.ts
|
|
368
|
+
var exports_SceneFile = {};
|
|
369
|
+
__export(exports_SceneFile, {
|
|
370
|
+
SceneFile: () => SceneFile,
|
|
371
|
+
read: () => read,
|
|
372
|
+
save: () => save
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// src/runtime/SceneRuntime.ts
|
|
376
|
+
var exports_SceneRuntime = {};
|
|
377
|
+
__export(exports_SceneRuntime, {
|
|
378
|
+
make: () => make
|
|
379
|
+
});
|
|
310
380
|
// src/runtime/errors.ts
|
|
311
381
|
import { Data } from "effect";
|
|
312
382
|
|
|
313
383
|
class InvalidScene extends Data.TaggedError("InvalidScene") {
|
|
314
384
|
}
|
|
315
385
|
|
|
386
|
+
class UnreadableScene extends Data.TaggedError("UnreadableScene") {
|
|
387
|
+
}
|
|
388
|
+
|
|
316
389
|
class RendererUnavailable extends Data.TaggedError("RendererUnavailable") {
|
|
317
390
|
}
|
|
318
391
|
// src/runtime/FrameSource.ts
|
|
@@ -336,128 +409,18 @@ var fromScheduler = (scheduler) => ({
|
|
|
336
409
|
class FrameSource extends Context.Service()("effect-three/FrameSource") {
|
|
337
410
|
}
|
|
338
411
|
var layer = (scheduler) => Layer.succeed(FrameSource, fromScheduler(scheduler));
|
|
339
|
-
// src/runtime/
|
|
340
|
-
import {
|
|
341
|
-
|
|
342
|
-
}
|
|
343
|
-
var acquireStore = Effect2.sync(createResourceStore2);
|
|
344
|
-
var toService = (store) => ({ store });
|
|
345
|
-
var scopedStore = Effect2.acquireRelease(acquireStore, (store) => Effect2.sync(store.dispose));
|
|
346
|
-
var layer2 = Layer2.effect(ResourceRegistry, scopedStore.pipe(Effect2.map(toService)));
|
|
347
|
-
// src/runtime/SceneRuntime.ts
|
|
348
|
-
import { Clock, Effect as Effect3, Exit, Match, Option, Queue, Result, Scope, Stream } from "effect";
|
|
349
|
-
var defaultEventCapacity = 64;
|
|
350
|
-
var noBehaviours = {};
|
|
351
|
-
var ignorePlacements = (_placements) => {
|
|
352
|
-
return;
|
|
353
|
-
};
|
|
354
|
-
var nanosPerMillisecond = 1e6;
|
|
355
|
-
var nanosPerSecond = 1e9;
|
|
356
|
-
var toResult = (result) => Match.valueTags(result, {
|
|
357
|
-
Applied: (applied) => Result.succeed(applied.ops),
|
|
358
|
-
Invalid: ({ error }) => Result.fail(new InvalidScene({ error }))
|
|
359
|
-
});
|
|
360
|
-
var applyViewport = (graph, renderer, viewport) => {
|
|
361
|
-
graph.resize(viewport.width, viewport.height);
|
|
362
|
-
renderer.setViewport(viewport);
|
|
363
|
-
};
|
|
364
|
-
var sceneGraph = (registry, behaviours, engines) => () => createSceneGraph2({
|
|
365
|
-
store: registry.store,
|
|
366
|
-
behaviours,
|
|
367
|
-
physics: engines.physics,
|
|
368
|
-
labels: engines.labels,
|
|
369
|
-
kit: engines.renderer.kit
|
|
370
|
-
});
|
|
371
|
-
var reconcileNow = (graph, sceneClock, scene) => {
|
|
372
|
-
graph.tick(sceneClock.elapsedSeconds());
|
|
373
|
-
return graph.reconcile(scene);
|
|
374
|
-
};
|
|
375
|
-
var viewportChange = (graph, renderer, viewport) => () => applyViewport(graph, renderer, viewport);
|
|
376
|
-
var animationChange = (sceneClock, graph, animating) => () => {
|
|
377
|
-
sceneClock.setAnimating(animating);
|
|
378
|
-
graph.setAnimating(animating);
|
|
379
|
-
};
|
|
380
|
-
var acquireGraph = (registry, behaviours, engines) => {
|
|
381
|
-
const create = Effect3.sync(sceneGraph(registry, behaviours, engines));
|
|
382
|
-
return Effect3.acquireRelease(create, (graph) => Effect3.sync(graph.dispose));
|
|
383
|
-
};
|
|
384
|
-
var acquireRenderer = (factory) => {
|
|
385
|
-
const create = Effect3.try({
|
|
386
|
-
try: factory.create,
|
|
387
|
-
catch: (cause) => new RendererUnavailable({ cause })
|
|
388
|
-
});
|
|
389
|
-
return Effect3.acquireRelease(create, (renderer) => Effect3.sync(renderer.dispose));
|
|
390
|
-
};
|
|
391
|
-
var awaitReady = (renderer) => Option.match(Option.fromNullishOr(renderer.ready), {
|
|
392
|
-
onNone: () => Effect3.void,
|
|
393
|
-
onSome: (ready) => Effect3.tryPromise({ try: ready, catch: (cause) => new RendererUnavailable({ cause }) })
|
|
394
|
-
});
|
|
395
|
-
var invalidationListening = (graph, onInvalidated) => () => graph.onInvalidated(onInvalidated);
|
|
396
|
-
var acquireInvalidation = (graph, onInvalidated) => {
|
|
397
|
-
const listen = Effect3.sync(invalidationListening(graph, onInvalidated));
|
|
398
|
-
return Effect3.acquireRelease(listen, Effect3.sync);
|
|
399
|
-
};
|
|
400
|
-
var acquireEvents = (capacity) => {
|
|
401
|
-
const create = Queue.sliding(capacity);
|
|
402
|
-
return Effect3.acquireRelease(create, Queue.shutdown);
|
|
403
|
-
};
|
|
404
|
-
function* startScene(options) {
|
|
405
|
-
const registry = yield* ResourceRegistry;
|
|
406
|
-
const frames = yield* FrameSource;
|
|
407
|
-
const clock = yield* Clock.Clock;
|
|
408
|
-
const graph = yield* acquireGraph(registry, options.behaviours ?? noBehaviours, options);
|
|
409
|
-
const startupOps = yield* Effect3.fromResult(toResult(graph.reconcile(options.scene)));
|
|
410
|
-
const renderer = yield* acquireRenderer(options.renderer);
|
|
411
|
-
yield* awaitReady(renderer);
|
|
412
|
-
applyViewport(graph, renderer, options.viewport);
|
|
413
|
-
const events = yield* acquireEvents(options.eventCapacity ?? defaultEventCapacity);
|
|
414
|
-
const sceneClock = createSceneClock2(() => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerSecond);
|
|
415
|
-
const loop = createSceneLoop2({
|
|
416
|
-
graph,
|
|
417
|
-
renderer,
|
|
418
|
-
elapsedSeconds: sceneClock.elapsedSeconds,
|
|
419
|
-
emit: (event) => {
|
|
420
|
-
Queue.offerUnsafe(events, event);
|
|
421
|
-
},
|
|
422
|
-
now: () => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerMillisecond,
|
|
423
|
-
placeOverlays: options.placeOverlays ?? ignorePlacements
|
|
424
|
-
});
|
|
425
|
-
yield* Effect3.addFinalizer(() => Effect3.sync(loop.dispose));
|
|
426
|
-
const pacer = createFramePacer2(loop);
|
|
427
|
-
pacer.attach(yield* frames.subscribe(pacer.frame));
|
|
428
|
-
yield* acquireInvalidation(graph, pacer.wake);
|
|
429
|
-
return {
|
|
430
|
-
graph,
|
|
431
|
-
startupOps,
|
|
432
|
-
update: (scene) => Effect3.suspend(() => Effect3.fromResult(toResult(reconcileNow(graph, sceneClock, scene)))),
|
|
433
|
-
resize: (viewport) => Effect3.sync(viewportChange(graph, renderer, viewport)),
|
|
434
|
-
setAnimating: (animating) => Effect3.sync(animationChange(sceneClock, graph, animating)),
|
|
435
|
-
advance: Effect3.sync(pacer.advance),
|
|
436
|
-
drawNow: pacer.advance,
|
|
437
|
-
pointer: loop.pointer,
|
|
438
|
-
xrInput: loop.xrInput,
|
|
439
|
-
events: Stream.fromQueue(events),
|
|
440
|
-
drainEvents: Queue.clear(events)
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
function* startAtomically(options) {
|
|
444
|
-
const parent = yield* Effect3.scope;
|
|
445
|
-
const child = yield* Scope.fork(parent);
|
|
446
|
-
return yield* Effect3.gen(() => startScene(options)).pipe(Scope.provide(child), Effect3.onError((cause) => Scope.close(child, Exit.failCause(cause))));
|
|
447
|
-
}
|
|
448
|
-
var make = (options) => {
|
|
449
|
-
const program = Effect3.gen(() => startAtomically(options));
|
|
450
|
-
return program.pipe(Effect3.withSpan("effect-three/SceneRuntime.make"));
|
|
451
|
-
};
|
|
412
|
+
// src/runtime/Inspector.ts
|
|
413
|
+
import { Result, Schema as Schema2 } from "effect";
|
|
414
|
+
|
|
452
415
|
// src/runtime/SceneSchema.ts
|
|
453
|
-
import { Effect as
|
|
416
|
+
import { Effect as Effect2, Schema } from "effect";
|
|
454
417
|
var NonNegative = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));
|
|
455
418
|
var Positive = Schema.Finite.check(Schema.isGreaterThan(0));
|
|
456
419
|
var UnitInterval = Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1 }));
|
|
457
420
|
var Vec3 = Schema.Tuple([Schema.Finite, Schema.Finite, Schema.Finite]);
|
|
458
421
|
var Axis = Schema.Literals(["x", "y", "z"]);
|
|
459
|
-
var absentAsNull = (schema) => Schema.NullOr(schema).pipe(Schema.withDecodingDefaultKey(
|
|
460
|
-
var absentAsFalse = Schema.Boolean.pipe(Schema.withDecodingDefaultKey(
|
|
422
|
+
var absentAsNull = (schema) => Schema.NullOr(schema).pipe(Schema.withDecodingDefaultKey(Effect2.succeed(null)));
|
|
423
|
+
var absentAsFalse = Schema.Boolean.pipe(Schema.withDecodingDefaultKey(Effect2.succeed(false)));
|
|
461
424
|
var Rgb = Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 16777215 }));
|
|
462
425
|
var Rotation = Schema.Union([
|
|
463
426
|
Schema.TaggedStruct("Fixed", { euler: Vec3 }),
|
|
@@ -583,7 +546,8 @@ var shaded = { ...surface, flatShading: Schema.Boolean };
|
|
|
583
546
|
var BasicMaterial = Schema.TaggedStruct("Basic", {
|
|
584
547
|
color: Rgb,
|
|
585
548
|
map: TextureId,
|
|
586
|
-
...surface
|
|
549
|
+
...surface,
|
|
550
|
+
depthTest: Schema.Boolean.pipe(Schema.withDecodingDefaultKey(Effect2.succeed(true)))
|
|
587
551
|
});
|
|
588
552
|
var LambertMaterial = Schema.TaggedStruct("Lambert", {
|
|
589
553
|
color: Rgb,
|
|
@@ -717,6 +681,17 @@ var JointKind = Schema.Union([
|
|
|
717
681
|
damping: Schema.Finite
|
|
718
682
|
})
|
|
719
683
|
]);
|
|
684
|
+
var Trail = absentAsNull(Schema.Struct({
|
|
685
|
+
width: NonNegative,
|
|
686
|
+
length: NonNegative,
|
|
687
|
+
decay: NonNegative,
|
|
688
|
+
local: Schema.Boolean,
|
|
689
|
+
stride: NonNegative,
|
|
690
|
+
interval: NonNegative,
|
|
691
|
+
color: Rgb,
|
|
692
|
+
taper: Schema.Literals(["none", "linear", "quadratic"]),
|
|
693
|
+
fade: Schema.Boolean
|
|
694
|
+
}));
|
|
720
695
|
var Joint = Schema.Struct({
|
|
721
696
|
key: Schema.String,
|
|
722
697
|
a: BodyRef,
|
|
@@ -746,7 +721,19 @@ var MeshNode = Schema.TaggedStruct("Mesh", {
|
|
|
746
721
|
interactive: Schema.Boolean,
|
|
747
722
|
castShadow: Schema.Boolean,
|
|
748
723
|
receiveShadow: Schema.Boolean,
|
|
749
|
-
body: Schema.NullOr(Body)
|
|
724
|
+
body: Schema.NullOr(Body),
|
|
725
|
+
edges: absentAsNull(Schema.Struct({
|
|
726
|
+
threshold: NonNegative,
|
|
727
|
+
color: Rgb,
|
|
728
|
+
width: NonNegative,
|
|
729
|
+
worldUnits: Schema.Boolean,
|
|
730
|
+
dashed: Schema.Boolean,
|
|
731
|
+
dashSize: NonNegative,
|
|
732
|
+
gapSize: NonNegative,
|
|
733
|
+
opacity: NonNegative,
|
|
734
|
+
transparent: Schema.Boolean
|
|
735
|
+
})),
|
|
736
|
+
trail: Trail
|
|
750
737
|
});
|
|
751
738
|
var Instance = Schema.Struct({
|
|
752
739
|
key: Schema.String,
|
|
@@ -894,6 +881,70 @@ var HemisphereLightNode = Schema.TaggedStruct("HemisphereLight", {
|
|
|
894
881
|
intensity: NonNegative,
|
|
895
882
|
position: Vec3
|
|
896
883
|
});
|
|
884
|
+
var PointLook = Schema.Union([
|
|
885
|
+
Schema.TaggedStruct("Dots", {
|
|
886
|
+
positions: Schema.Array(Vec3),
|
|
887
|
+
colors: Schema.NullOr(Schema.Array(Rgb)),
|
|
888
|
+
sizes: Schema.NullOr(Schema.Array(NonNegative)),
|
|
889
|
+
color: Rgb,
|
|
890
|
+
size: NonNegative,
|
|
891
|
+
sizeAttenuation: Schema.Boolean,
|
|
892
|
+
round: Schema.Boolean,
|
|
893
|
+
opacity: NonNegative,
|
|
894
|
+
transparent: Schema.Boolean
|
|
895
|
+
}),
|
|
896
|
+
Schema.TaggedStruct("Sparkles", {
|
|
897
|
+
count: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
898
|
+
speed: Schema.Finite,
|
|
899
|
+
opacity: NonNegative,
|
|
900
|
+
scale: Vec3,
|
|
901
|
+
size: Schema.NullOr(NonNegative),
|
|
902
|
+
color: Rgb,
|
|
903
|
+
noise: Vec3,
|
|
904
|
+
seed: Schema.Finite
|
|
905
|
+
}),
|
|
906
|
+
Schema.TaggedStruct("Stars", {
|
|
907
|
+
radius: NonNegative,
|
|
908
|
+
depth: NonNegative,
|
|
909
|
+
count: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
910
|
+
factor: NonNegative,
|
|
911
|
+
saturation: NonNegative,
|
|
912
|
+
fade: Schema.Boolean,
|
|
913
|
+
speed: Schema.Finite,
|
|
914
|
+
seed: Schema.Finite
|
|
915
|
+
})
|
|
916
|
+
]);
|
|
917
|
+
var PointsNode = Schema.TaggedStruct("Points", {
|
|
918
|
+
key: Schema.String,
|
|
919
|
+
position: Vec3,
|
|
920
|
+
rotation: Rotation,
|
|
921
|
+
scale: Vec3,
|
|
922
|
+
transition: Transition,
|
|
923
|
+
behaviour: Schema.NullOr(Behave),
|
|
924
|
+
look: PointLook
|
|
925
|
+
});
|
|
926
|
+
var LineNode = Schema.TaggedStruct("Line", {
|
|
927
|
+
key: Schema.String,
|
|
928
|
+
position: Vec3,
|
|
929
|
+
rotation: Rotation,
|
|
930
|
+
scale: Vec3,
|
|
931
|
+
transition: Transition,
|
|
932
|
+
behaviour: Schema.NullOr(Behave),
|
|
933
|
+
interactive: Schema.Boolean,
|
|
934
|
+
points: Schema.Array(Vec3),
|
|
935
|
+
segments: Schema.Boolean,
|
|
936
|
+
color: Rgb,
|
|
937
|
+
vertexColors: Schema.NullOr(Schema.Array(Rgb)),
|
|
938
|
+
width: NonNegative,
|
|
939
|
+
worldUnits: Schema.Boolean,
|
|
940
|
+
dashed: Schema.Boolean,
|
|
941
|
+
dashSize: NonNegative,
|
|
942
|
+
gapSize: NonNegative,
|
|
943
|
+
dashScale: NonNegative,
|
|
944
|
+
dashOffset: Schema.Finite,
|
|
945
|
+
opacity: NonNegative,
|
|
946
|
+
transparent: Schema.Boolean
|
|
947
|
+
});
|
|
897
948
|
var SceneNode = Schema.Union([
|
|
898
949
|
Schema.TaggedStruct("Group", {
|
|
899
950
|
key: Schema.String,
|
|
@@ -906,12 +957,15 @@ var SceneNode = Schema.Union([
|
|
|
906
957
|
children: Schema.Array(Schema.suspend(() => SceneNode)),
|
|
907
958
|
body: Schema.NullOr(Body),
|
|
908
959
|
follow: Schema.NullOr(XrSpace),
|
|
909
|
-
detail: absentAsNull(Schema.Struct({ distances: Schema.Array(NonNegative), hysteresis: NonNegative }))
|
|
960
|
+
detail: absentAsNull(Schema.Struct({ distances: Schema.Array(NonNegative), hysteresis: NonNegative })),
|
|
961
|
+
trail: Trail
|
|
910
962
|
}),
|
|
911
963
|
MeshNode,
|
|
912
964
|
InstancesNode,
|
|
913
965
|
BorrowedNode,
|
|
914
966
|
LabelNode,
|
|
967
|
+
LineNode,
|
|
968
|
+
PointsNode,
|
|
915
969
|
ShaderGridNode,
|
|
916
970
|
AmbientLightNode,
|
|
917
971
|
DirectionalLightNode,
|
|
@@ -991,6 +1045,22 @@ var RenderTexture = Schema.Struct({
|
|
|
991
1045
|
background: Schema.NullOr(Rgb),
|
|
992
1046
|
children: Schema.Array(SceneNode)
|
|
993
1047
|
});
|
|
1048
|
+
var HudAlignment = Schema.Literals([
|
|
1049
|
+
"top-left",
|
|
1050
|
+
"top-center",
|
|
1051
|
+
"top-right",
|
|
1052
|
+
"center-left",
|
|
1053
|
+
"center-center",
|
|
1054
|
+
"center-right",
|
|
1055
|
+
"bottom-left",
|
|
1056
|
+
"bottom-center",
|
|
1057
|
+
"bottom-right"
|
|
1058
|
+
]);
|
|
1059
|
+
var Hud = Schema.Struct({
|
|
1060
|
+
alignment: HudAlignment,
|
|
1061
|
+
margin: Schema.Tuple([Schema.Finite, Schema.Finite]),
|
|
1062
|
+
children: Schema.Array(SceneNode)
|
|
1063
|
+
});
|
|
994
1064
|
var Overlay = Schema.Struct({
|
|
995
1065
|
key: Schema.String,
|
|
996
1066
|
node: Schema.NullOr(Schema.String),
|
|
@@ -1053,6 +1123,7 @@ var SceneDescription = Schema.Struct({
|
|
|
1053
1123
|
gestures: Gestures,
|
|
1054
1124
|
views: Schema.Array(View),
|
|
1055
1125
|
renderTextures: Schema.Array(RenderTexture),
|
|
1126
|
+
hud: absentAsNull(Hud),
|
|
1056
1127
|
overlays: Schema.Array(Overlay),
|
|
1057
1128
|
environment: Schema.NullOr(Environment),
|
|
1058
1129
|
sky: Schema.NullOr(Sky),
|
|
@@ -1186,6 +1257,12 @@ var AutoRotatedDetail = Schema.Struct({
|
|
|
1186
1257
|
position: Vec3
|
|
1187
1258
|
});
|
|
1188
1259
|
var GestureDetail = Schema.Struct({ gesture: Gesture });
|
|
1260
|
+
var GestureEndDetail = Schema.Struct({
|
|
1261
|
+
button: Schema.Int,
|
|
1262
|
+
modifiers: Modifiers,
|
|
1263
|
+
key: Schema.optionalKey(Schema.String),
|
|
1264
|
+
view: Schema.optionalKey(Schema.String)
|
|
1265
|
+
});
|
|
1189
1266
|
var SceneEvent = Schema.Union([
|
|
1190
1267
|
Schema.TaggedStruct("PointerEnter", HitDetail.fields),
|
|
1191
1268
|
Schema.TaggedStruct("PointerLeave", KeyDetail.fields),
|
|
@@ -1200,6 +1277,7 @@ var SceneEvent = Schema.Union([
|
|
|
1200
1277
|
Schema.TaggedStruct("Drag", DragDetail.fields),
|
|
1201
1278
|
Schema.TaggedStruct("DragEnd", DragDetail.fields),
|
|
1202
1279
|
Schema.TaggedStruct("Gesture", GestureDetail.fields),
|
|
1280
|
+
Schema.TaggedStruct("GestureEnd", GestureEndDetail.fields),
|
|
1203
1281
|
Schema.TaggedStruct("AutoRotated", AutoRotatedDetail.fields),
|
|
1204
1282
|
Schema.TaggedStruct("Collision", CollisionDetail.fields),
|
|
1205
1283
|
Schema.TaggedStruct("Measured", MeasuredDetail.fields),
|
|
@@ -1232,13 +1310,227 @@ var DescriptionError = Schema.Union([
|
|
|
1232
1310
|
Schema.TaggedStruct("UnknownJointBody", { joint: Schema.String, body: Schema.String }),
|
|
1233
1311
|
Schema.TaggedStruct("DuplicateRenderTextureId", { id: Schema.String })
|
|
1234
1312
|
]);
|
|
1313
|
+
var Placement = Schema.Struct({ position: Vec3, rotation: Vec3, scale: Vec3 });
|
|
1314
|
+
var GizmoHandle = Schema.Literals(["x", "y", "z", "xy", "yz", "xz", "xyz"]);
|
|
1315
|
+
var Gizmo = Schema.Struct({
|
|
1316
|
+
mode: Schema.Literals(["translate", "rotate", "scale"]),
|
|
1317
|
+
space: Schema.Literals(["world", "local"]),
|
|
1318
|
+
size: Positive,
|
|
1319
|
+
translationSnap: Schema.NullOr(Positive),
|
|
1320
|
+
rotationSnap: Schema.NullOr(Positive),
|
|
1321
|
+
scaleSnap: Schema.NullOr(Positive),
|
|
1322
|
+
showX: Schema.Boolean,
|
|
1323
|
+
showY: Schema.Boolean,
|
|
1324
|
+
showZ: Schema.Boolean,
|
|
1325
|
+
hovered: Schema.NullOr(GizmoHandle),
|
|
1326
|
+
grab: Schema.NullOr(Schema.Struct({
|
|
1327
|
+
handle: GizmoHandle,
|
|
1328
|
+
start: Placement,
|
|
1329
|
+
from: Vec3,
|
|
1330
|
+
plane: Schema.Struct({ normal: Vec3, constant: Schema.Finite }),
|
|
1331
|
+
eye: Vec3,
|
|
1332
|
+
distance: Schema.Finite
|
|
1333
|
+
}))
|
|
1334
|
+
});
|
|
1335
|
+
var History = (value) => Schema.Struct({
|
|
1336
|
+
entries: Schema.Array(Schema.Struct({
|
|
1337
|
+
id: Schema.Int,
|
|
1338
|
+
parent: Schema.NullOr(Schema.Int),
|
|
1339
|
+
label: Schema.String,
|
|
1340
|
+
value,
|
|
1341
|
+
next: Schema.NullOr(Schema.Int)
|
|
1342
|
+
})),
|
|
1343
|
+
current: Schema.Int
|
|
1344
|
+
});
|
|
1345
|
+
var LockstepEntry = (input) => Schema.Union([
|
|
1346
|
+
Schema.TaggedStruct("Input", { input }),
|
|
1347
|
+
Schema.TaggedStruct("Admit", { peer: Schema.String })
|
|
1348
|
+
]);
|
|
1349
|
+
var LockstepPacket = (input) => Schema.Struct({
|
|
1350
|
+
peer: Schema.String,
|
|
1351
|
+
turn: Schema.Int,
|
|
1352
|
+
entries: Schema.Array(LockstepEntry(input))
|
|
1353
|
+
});
|
|
1354
|
+
var LockstepMember = Schema.Struct({
|
|
1355
|
+
peer: Schema.String,
|
|
1356
|
+
from: Schema.Int,
|
|
1357
|
+
until: Schema.NullOr(Schema.Int)
|
|
1358
|
+
});
|
|
1359
|
+
var Lockstep = (input) => Schema.Struct({
|
|
1360
|
+
self: Schema.String,
|
|
1361
|
+
members: Schema.Array(LockstepMember),
|
|
1362
|
+
turn: Schema.Int,
|
|
1363
|
+
sent: Schema.Int,
|
|
1364
|
+
lead: Schema.Int,
|
|
1365
|
+
pending: Schema.Array(LockstepEntry(input)),
|
|
1366
|
+
received: Schema.Array(LockstepPacket(input))
|
|
1367
|
+
});
|
|
1368
|
+
var Tape = Schema.Struct({
|
|
1369
|
+
from: Schema.NullOr(Vec3),
|
|
1370
|
+
to: Schema.NullOr(Vec3),
|
|
1371
|
+
pointer: Schema.NullOr(Vec3),
|
|
1372
|
+
snap: Schema.NullOr(Positive)
|
|
1373
|
+
});
|
|
1374
|
+
var PivotHandle = Schema.Literals(["arrow", "slider", "rotator", "sphere"].flatMap((kind) => ["x", "y", "z"].map((axis) => `${kind}-${axis}`)));
|
|
1375
|
+
var Pivot = Schema.Struct({
|
|
1376
|
+
scale: Positive,
|
|
1377
|
+
depthTest: Schema.Boolean,
|
|
1378
|
+
disableAxes: Schema.Boolean,
|
|
1379
|
+
disableSliders: Schema.Boolean,
|
|
1380
|
+
disableRotations: Schema.Boolean,
|
|
1381
|
+
disableScaling: Schema.Boolean,
|
|
1382
|
+
hovered: Schema.NullOr(PivotHandle),
|
|
1383
|
+
grab: Schema.NullOr(Schema.Struct({
|
|
1384
|
+
handle: PivotHandle,
|
|
1385
|
+
start: Placement,
|
|
1386
|
+
point: Vec3,
|
|
1387
|
+
e1: Vec3,
|
|
1388
|
+
e2: Vec3,
|
|
1389
|
+
normal: Vec3
|
|
1390
|
+
}))
|
|
1391
|
+
});
|
|
1392
|
+
|
|
1393
|
+
// src/runtime/Inspector.ts
|
|
1394
|
+
var hints = { colours: [Rgb.ast], vectors: [Vec3.ast] };
|
|
1395
|
+
var inspectable = (schema) => schema.ast;
|
|
1396
|
+
var fields = (schema, value) => inspectFields2(inspectable(schema), value, hints);
|
|
1397
|
+
var edit = (schema, value, path, next) => Schema2.decodeUnknownResult(schema)(setAt2(value, path, next)).pipe(Result.mapError((error) => error.message));
|
|
1398
|
+
// src/runtime/ResourceRegistry.ts
|
|
1399
|
+
import { Context as Context2, Effect as Effect3, Layer as Layer2 } from "effect";
|
|
1400
|
+
class ResourceRegistry extends Context2.Service()("effect-three/ResourceRegistry") {
|
|
1401
|
+
}
|
|
1402
|
+
var acquireStore = Effect3.sync(createResourceStore2);
|
|
1403
|
+
var toService = (store) => ({ store });
|
|
1404
|
+
var scopedStore = Effect3.acquireRelease(acquireStore, (store) => Effect3.sync(store.dispose));
|
|
1405
|
+
var layer2 = Layer2.effect(ResourceRegistry, scopedStore.pipe(Effect3.map(toService)));
|
|
1406
|
+
// src/runtime/SceneFile.ts
|
|
1407
|
+
import { Result as Result2, Schema as Schema3 } from "effect";
|
|
1408
|
+
var SceneFile = Schema3.Struct({
|
|
1409
|
+
format: Schema3.Literal("effect-three/scene"),
|
|
1410
|
+
version: Schema3.Literal(1),
|
|
1411
|
+
scene: SceneDescription
|
|
1412
|
+
});
|
|
1413
|
+
var asJson = Schema3.fromJsonString(SceneFile, { space: 2 });
|
|
1414
|
+
var save = (scene) => Schema3.encodeSync(asJson)(SceneFile.make({ format: "effect-three/scene", version: 1, scene }));
|
|
1415
|
+
var unreadable = (error) => new UnreadableScene({ issue: error.message });
|
|
1416
|
+
var read = (text) => Schema3.decodeUnknownResult(asJson)(text).pipe(Result2.map((file) => file.scene), Result2.mapError(unreadable));
|
|
1417
|
+
// src/runtime/SceneRuntime.ts
|
|
1418
|
+
import { Clock, Effect as Effect4, Exit, Match, Option, Queue, Result as Result3, Scope, Stream } from "effect";
|
|
1419
|
+
var defaultEventCapacity = 64;
|
|
1420
|
+
var noBehaviours = {};
|
|
1421
|
+
var ignorePlacements = (_placements) => {
|
|
1422
|
+
return;
|
|
1423
|
+
};
|
|
1424
|
+
var nanosPerMillisecond = 1e6;
|
|
1425
|
+
var nanosPerSecond = 1e9;
|
|
1426
|
+
var toResult = (result) => Match.valueTags(result, {
|
|
1427
|
+
Applied: (applied) => Result3.succeed(applied.ops),
|
|
1428
|
+
Invalid: ({ error }) => Result3.fail(new InvalidScene({ error }))
|
|
1429
|
+
});
|
|
1430
|
+
var applyViewport = (graph, renderer, viewport) => {
|
|
1431
|
+
graph.resize(viewport.width, viewport.height);
|
|
1432
|
+
renderer.setViewport(viewport);
|
|
1433
|
+
};
|
|
1434
|
+
var sceneGraph = (registry, behaviours, engines) => () => createSceneGraph2({
|
|
1435
|
+
store: registry.store,
|
|
1436
|
+
behaviours,
|
|
1437
|
+
physics: engines.physics,
|
|
1438
|
+
labels: engines.labels,
|
|
1439
|
+
kit: engines.renderer.kit
|
|
1440
|
+
});
|
|
1441
|
+
var reconcileNow = (graph, sceneClock, scene) => {
|
|
1442
|
+
graph.tick(sceneClock.elapsedSeconds());
|
|
1443
|
+
return graph.reconcile(scene);
|
|
1444
|
+
};
|
|
1445
|
+
var viewportChange = (graph, renderer, viewport) => () => applyViewport(graph, renderer, viewport);
|
|
1446
|
+
var animationChange = (sceneClock, graph, animating) => () => {
|
|
1447
|
+
sceneClock.setAnimating(animating);
|
|
1448
|
+
graph.setAnimating(animating);
|
|
1449
|
+
};
|
|
1450
|
+
var acquireGraph = (registry, behaviours, engines) => {
|
|
1451
|
+
const create = Effect4.sync(sceneGraph(registry, behaviours, engines));
|
|
1452
|
+
return Effect4.acquireRelease(create, (graph) => Effect4.sync(graph.dispose));
|
|
1453
|
+
};
|
|
1454
|
+
var acquireRenderer = (factory) => {
|
|
1455
|
+
const create = Effect4.try({
|
|
1456
|
+
try: factory.create,
|
|
1457
|
+
catch: (cause) => new RendererUnavailable({ cause })
|
|
1458
|
+
});
|
|
1459
|
+
return Effect4.acquireRelease(create, (renderer) => Effect4.sync(renderer.dispose));
|
|
1460
|
+
};
|
|
1461
|
+
var awaitReady = (renderer) => Option.match(Option.fromNullishOr(renderer.ready), {
|
|
1462
|
+
onNone: () => Effect4.void,
|
|
1463
|
+
onSome: (ready) => Effect4.tryPromise({ try: ready, catch: (cause) => new RendererUnavailable({ cause }) })
|
|
1464
|
+
});
|
|
1465
|
+
var invalidationListening = (graph, onInvalidated) => () => graph.onInvalidated(onInvalidated);
|
|
1466
|
+
var acquireInvalidation = (graph, onInvalidated) => {
|
|
1467
|
+
const listen = Effect4.sync(invalidationListening(graph, onInvalidated));
|
|
1468
|
+
return Effect4.acquireRelease(listen, Effect4.sync);
|
|
1469
|
+
};
|
|
1470
|
+
var acquireEvents = (capacity) => {
|
|
1471
|
+
const create = Queue.sliding(capacity);
|
|
1472
|
+
return Effect4.acquireRelease(create, Queue.shutdown);
|
|
1473
|
+
};
|
|
1474
|
+
function* startScene(options) {
|
|
1475
|
+
const registry = yield* ResourceRegistry;
|
|
1476
|
+
const frames = yield* FrameSource;
|
|
1477
|
+
const clock = yield* Clock.Clock;
|
|
1478
|
+
const graph = yield* acquireGraph(registry, options.behaviours ?? noBehaviours, options);
|
|
1479
|
+
const startupOps = yield* Effect4.fromResult(toResult(graph.reconcile(options.scene)));
|
|
1480
|
+
const renderer = yield* acquireRenderer(options.renderer);
|
|
1481
|
+
yield* awaitReady(renderer);
|
|
1482
|
+
applyViewport(graph, renderer, options.viewport);
|
|
1483
|
+
const events = yield* acquireEvents(options.eventCapacity ?? defaultEventCapacity);
|
|
1484
|
+
const sceneClock = createSceneClock2(() => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerSecond);
|
|
1485
|
+
const loop = createSceneLoop2({
|
|
1486
|
+
graph,
|
|
1487
|
+
renderer,
|
|
1488
|
+
elapsedSeconds: sceneClock.elapsedSeconds,
|
|
1489
|
+
emit: (event) => {
|
|
1490
|
+
Queue.offerUnsafe(events, event);
|
|
1491
|
+
},
|
|
1492
|
+
now: () => Number(clock.monotonicTimeNanosUnsafe()) / nanosPerMillisecond,
|
|
1493
|
+
placeOverlays: options.placeOverlays ?? ignorePlacements
|
|
1494
|
+
});
|
|
1495
|
+
yield* Effect4.addFinalizer(() => Effect4.sync(loop.dispose));
|
|
1496
|
+
const pacer = createFramePacer2(loop);
|
|
1497
|
+
pacer.attach(yield* frames.subscribe(pacer.frame));
|
|
1498
|
+
yield* acquireInvalidation(graph, pacer.wake);
|
|
1499
|
+
return {
|
|
1500
|
+
graph,
|
|
1501
|
+
startupOps,
|
|
1502
|
+
update: (scene) => Effect4.suspend(() => Effect4.fromResult(toResult(reconcileNow(graph, sceneClock, scene)))),
|
|
1503
|
+
resize: (viewport) => Effect4.sync(viewportChange(graph, renderer, viewport)),
|
|
1504
|
+
setAnimating: (animating) => Effect4.sync(animationChange(sceneClock, graph, animating)),
|
|
1505
|
+
advance: Effect4.sync(pacer.advance),
|
|
1506
|
+
drawNow: pacer.advance,
|
|
1507
|
+
pointer: loop.pointer,
|
|
1508
|
+
xrInput: loop.xrInput,
|
|
1509
|
+
events: Stream.fromQueue(events),
|
|
1510
|
+
drainEvents: Queue.clear(events)
|
|
1511
|
+
};
|
|
1512
|
+
}
|
|
1513
|
+
function* startAtomically(options) {
|
|
1514
|
+
const parent = yield* Effect4.scope;
|
|
1515
|
+
const child = yield* Scope.fork(parent);
|
|
1516
|
+
return yield* Effect4.gen(() => startScene(options)).pipe(Scope.provide(child), Effect4.onError((cause) => Scope.close(child, Exit.failCause(cause))));
|
|
1517
|
+
}
|
|
1518
|
+
var make = (options) => {
|
|
1519
|
+
const program = Effect4.gen(() => startAtomically(options));
|
|
1520
|
+
return program.pipe(Effect4.withSpan("effect-three/SceneRuntime.make"));
|
|
1521
|
+
};
|
|
1235
1522
|
export {
|
|
1236
1523
|
exports_FrameSource as FrameSource,
|
|
1524
|
+
exports_history as History,
|
|
1525
|
+
exports_Inspector as Inspector,
|
|
1237
1526
|
InvalidScene,
|
|
1527
|
+
exports_lockstep as Lockstep,
|
|
1238
1528
|
RendererUnavailable,
|
|
1239
1529
|
exports_ResourceRegistry as ResourceRegistry,
|
|
1530
|
+
exports_SceneFile as SceneFile,
|
|
1240
1531
|
exports_SceneRuntime as SceneRuntime,
|
|
1241
1532
|
exports_SceneSchema as SceneSchema,
|
|
1533
|
+
UnreadableScene,
|
|
1242
1534
|
ambientLight2 as ambientLight,
|
|
1243
1535
|
anchorSpace2 as anchorSpace,
|
|
1244
1536
|
animationEquals2 as animationEquals,
|
|
@@ -1256,16 +1548,22 @@ export {
|
|
|
1256
1548
|
bodyRef2 as bodyRef,
|
|
1257
1549
|
borrowed2 as borrowed,
|
|
1258
1550
|
box2 as box,
|
|
1551
|
+
boxSelect2 as boxSelect,
|
|
1259
1552
|
buildMaterial2 as buildMaterial,
|
|
1260
1553
|
builtinBehaviours2 as builtinBehaviours,
|
|
1554
|
+
cameraAlong2 as cameraAlong,
|
|
1261
1555
|
cameraEquals2 as cameraEquals,
|
|
1262
1556
|
cameraShake2 as cameraShake,
|
|
1263
1557
|
capacityFor2 as capacityFor,
|
|
1264
1558
|
capsule2 as capsule,
|
|
1265
1559
|
capsuleCollider2 as capsuleCollider,
|
|
1560
|
+
catmullRomColors2 as catmullRomColors,
|
|
1561
|
+
catmullRomPointAt2 as catmullRomPointAt,
|
|
1562
|
+
catmullRomPoints2 as catmullRomPoints,
|
|
1266
1563
|
centerOffset2 as centerOffset,
|
|
1267
1564
|
changedFields2 as changedFields,
|
|
1268
1565
|
circle2 as circle,
|
|
1566
|
+
clearTape2 as clearTape,
|
|
1269
1567
|
clipCamera2 as clipCamera,
|
|
1270
1568
|
clipRunning2 as clipRunning,
|
|
1271
1569
|
clipTime2 as clipTime,
|
|
@@ -1290,18 +1588,23 @@ export {
|
|
|
1290
1588
|
createSceneGraph2 as createSceneGraph,
|
|
1291
1589
|
createSceneLoop2 as createSceneLoop,
|
|
1292
1590
|
createXrTracker2 as createXrTracker,
|
|
1591
|
+
cubicBezierPoints2 as cubicBezierPoints,
|
|
1293
1592
|
cuboidCollider2 as cuboidCollider,
|
|
1294
1593
|
cylinder2 as cylinder,
|
|
1295
1594
|
cylinderCollider2 as cylinderCollider,
|
|
1296
1595
|
defaultOrbit2 as defaultOrbit,
|
|
1596
|
+
describeScene2 as describeScene,
|
|
1297
1597
|
describedColliders2 as describedColliders,
|
|
1298
1598
|
detailed2 as detailed,
|
|
1299
1599
|
diff2 as diff,
|
|
1300
1600
|
directionalLight2 as directionalLight,
|
|
1301
1601
|
dollyCamera2 as dollyCamera,
|
|
1302
1602
|
dollyCameraToward2 as dollyCameraToward,
|
|
1603
|
+
dragGizmo2 as dragGizmo,
|
|
1604
|
+
dragPivot2 as dragPivot,
|
|
1303
1605
|
ease2 as ease,
|
|
1304
1606
|
easeProgress2 as easeProgress,
|
|
1607
|
+
edges2 as edges,
|
|
1305
1608
|
effectsEqual2 as effectsEqual,
|
|
1306
1609
|
emptyIndex2 as emptyIndex,
|
|
1307
1610
|
environment2 as environment,
|
|
@@ -1313,7 +1616,12 @@ export {
|
|
|
1313
1616
|
fixed2 as fixed,
|
|
1314
1617
|
fixedJoint2 as fixedJoint,
|
|
1315
1618
|
float2 as float,
|
|
1619
|
+
formatChanges2 as formatChanges,
|
|
1620
|
+
formatSummary2 as formatSummary,
|
|
1316
1621
|
geometryRefEquals2 as geometryRefEquals,
|
|
1622
|
+
gizmo2 as gizmo,
|
|
1623
|
+
gizmoHandleOf2 as gizmoHandleOf,
|
|
1624
|
+
gizmoNodes2 as gizmoNodes,
|
|
1317
1625
|
glide2 as glide,
|
|
1318
1626
|
glided2 as glided,
|
|
1319
1627
|
grid2 as grid,
|
|
@@ -1321,7 +1629,11 @@ export {
|
|
|
1321
1629
|
handJoints2 as handJoints,
|
|
1322
1630
|
headSpace2 as headSpace,
|
|
1323
1631
|
hemisphereLight2 as hemisphereLight,
|
|
1632
|
+
hoverGizmo2 as hoverGizmo,
|
|
1633
|
+
hoverPivot2 as hoverPivot,
|
|
1634
|
+
hud2 as hud,
|
|
1324
1635
|
indexScene2 as indexScene,
|
|
1636
|
+
inspectFields2 as inspectFields,
|
|
1325
1637
|
instance2 as instance,
|
|
1326
1638
|
instanceEquals2 as instanceEquals,
|
|
1327
1639
|
instances2 as instances,
|
|
@@ -1334,10 +1646,14 @@ export {
|
|
|
1334
1646
|
label2 as label,
|
|
1335
1647
|
lambert2 as lambert,
|
|
1336
1648
|
lentGeometry2 as lentGeometry,
|
|
1649
|
+
line2 as line,
|
|
1337
1650
|
locomote2 as locomote,
|
|
1338
1651
|
materialRefEquals2 as materialRefEquals,
|
|
1339
1652
|
mesh2 as mesh,
|
|
1340
1653
|
meshSpace2 as meshSpace,
|
|
1654
|
+
moodStaging2 as moodStaging,
|
|
1655
|
+
moods2 as moods,
|
|
1656
|
+
movedAlike2 as movedAlike,
|
|
1341
1657
|
noModifiers2 as noModifiers,
|
|
1342
1658
|
normalMaterial2 as normalMaterial,
|
|
1343
1659
|
orbit2 as orbit,
|
|
@@ -1352,15 +1668,26 @@ export {
|
|
|
1352
1668
|
physical2 as physical,
|
|
1353
1669
|
physics2 as physics,
|
|
1354
1670
|
physicsEquals2 as physicsEquals,
|
|
1671
|
+
pivot2 as pivot,
|
|
1672
|
+
pivotHandleOf2 as pivotHandleOf,
|
|
1673
|
+
pivotNodes2 as pivotNodes,
|
|
1355
1674
|
placeOverlays2 as placeOverlays,
|
|
1675
|
+
placeTapeEnd2 as placeTapeEnd,
|
|
1356
1676
|
plane2 as plane,
|
|
1357
1677
|
planeSpace2 as planeSpace,
|
|
1358
1678
|
play2 as play,
|
|
1359
1679
|
pointLight2 as pointLight,
|
|
1360
1680
|
pointOnPlane2 as pointOnPlane,
|
|
1681
|
+
pointTape2 as pointTape,
|
|
1682
|
+
points2 as points,
|
|
1361
1683
|
positionMotor2 as positionMotor,
|
|
1684
|
+
pressGizmo2 as pressGizmo,
|
|
1685
|
+
pressPivot2 as pressPivot,
|
|
1362
1686
|
prismaticJoint2 as prismaticJoint,
|
|
1687
|
+
quadraticBezierPoints2 as quadraticBezierPoints,
|
|
1363
1688
|
recordingRendererFactory2 as recordingRendererFactory,
|
|
1689
|
+
releaseGizmo2 as releaseGizmo,
|
|
1690
|
+
releasePivot2 as releasePivot,
|
|
1364
1691
|
renderSettings2 as renderSettings,
|
|
1365
1692
|
renderSettingsEquals2 as renderSettingsEquals,
|
|
1366
1693
|
renderTexture2 as renderTexture,
|
|
@@ -1373,13 +1700,18 @@ export {
|
|
|
1373
1700
|
rotationEquals2 as rotationEquals,
|
|
1374
1701
|
roundedBox2 as roundedBox,
|
|
1375
1702
|
scene2 as scene,
|
|
1703
|
+
sceneChanges2 as sceneChanges,
|
|
1704
|
+
setAt2 as setAt,
|
|
1376
1705
|
shaderGrid2 as shaderGrid,
|
|
1377
1706
|
shadowMaterial2 as shadowMaterial,
|
|
1378
1707
|
shapeEquals2 as shapeEquals,
|
|
1379
1708
|
sharedGeometry2 as sharedGeometry,
|
|
1380
1709
|
sharedMaterial2 as sharedMaterial,
|
|
1710
|
+
shotAngles2 as shotAngles,
|
|
1711
|
+
shotCamera2 as shotCamera,
|
|
1381
1712
|
sky2 as sky,
|
|
1382
1713
|
skyEquals2 as skyEquals,
|
|
1714
|
+
sparkles2 as sparkles,
|
|
1383
1715
|
sphere2 as sphere,
|
|
1384
1716
|
sphericalJoint2 as sphericalJoint,
|
|
1385
1717
|
spin2 as spin,
|
|
@@ -1390,16 +1722,25 @@ export {
|
|
|
1390
1722
|
stageBounds2 as stageBounds,
|
|
1391
1723
|
stagePresets2 as stagePresets,
|
|
1392
1724
|
standard2 as standard,
|
|
1725
|
+
stars2 as stars,
|
|
1393
1726
|
startTween2 as startTween,
|
|
1394
1727
|
sunPositionFromAngles2 as sunPositionFromAngles,
|
|
1728
|
+
tape2 as tape,
|
|
1729
|
+
tapeLength2 as tapeLength,
|
|
1730
|
+
tapeMiddle2 as tapeMiddle,
|
|
1731
|
+
tapeNodes2 as tapeNodes,
|
|
1395
1732
|
teleport2 as teleport,
|
|
1396
1733
|
text2 as text,
|
|
1734
|
+
thingsBounds2 as thingsBounds,
|
|
1397
1735
|
torus2 as torus,
|
|
1736
|
+
trail2 as trail,
|
|
1398
1737
|
transitionEquals2 as transitionEquals,
|
|
1399
1738
|
updateMaterial2 as updateMaterial,
|
|
1400
1739
|
vec3Equals2 as vec3Equals,
|
|
1401
1740
|
velocityMotor2 as velocityMotor,
|
|
1402
1741
|
view2 as view,
|
|
1742
|
+
viewportAxisOf2 as viewportAxisOf,
|
|
1743
|
+
viewportGizmoNodes2 as viewportGizmoNodes,
|
|
1403
1744
|
viewsEqual2 as viewsEqual,
|
|
1404
1745
|
vignette2 as vignette,
|
|
1405
1746
|
writeRotation2 as writeRotation,
|
|
@@ -1410,5 +1751,5 @@ export {
|
|
|
1410
1751
|
xrMeshGeometryId2 as xrMeshGeometryId
|
|
1411
1752
|
};
|
|
1412
1753
|
|
|
1413
|
-
//# debugId=
|
|
1754
|
+
//# debugId=B502AD310FB99B5964756E2164756E21
|
|
1414
1755
|
//# sourceMappingURL=index.js.map
|