@fps-games/editor 0.1.4-beta.3 → 0.1.4-beta.5
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/dist/build-info.json +45 -0
- package/dist/local-editor-harness.d.ts +47 -6
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +315 -21
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/playable-babylon-facade.d.ts +4 -4
- package/dist/playable-babylon-facade.d.ts.map +1 -1
- package/dist/playable-babylon-facade.js +2 -2
- package/dist/playable-babylon-facade.js.map +1 -1
- package/dist/playable-babylon-rendering.d.ts +14 -2
- package/dist/playable-babylon-rendering.d.ts.map +1 -1
- package/dist/playable-babylon-rendering.js +48 -3
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +15 -1
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-sdk-vite.d.ts +2 -0
- package/dist/playable-sdk-vite.d.ts.map +1 -0
- package/dist/playable-sdk-vite.js +2 -0
- package/dist/playable-sdk-vite.js.map +1 -0
- package/dist/playable-sdk.d.ts +5 -5
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +2 -2
- package/dist/playable-sdk.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts +5 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js +46 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts +5 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +398 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts +6 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js +717 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +131 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +76 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts +49 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +141 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +30 -2
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +161 -14
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +14 -3
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +223 -8
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +5 -5
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +33 -6
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +3 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +3 -3
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +14 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +54 -0
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +2 -2
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +56 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +33 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +85 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +412 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts +6 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js +272 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +108 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +37 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts +15 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts +36 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js +65 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js +87 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +226 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +64 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/package.json +7 -3
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +1 -1
- package/package.json +12 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,18 @@ function requireBabylonCtor(value, name) {
|
|
|
10
10
|
export function createBabylonEditorProjection(options) {
|
|
11
11
|
const projections = new Map();
|
|
12
12
|
const projectionParentIds = new Map();
|
|
13
|
+
const selectionEdgesPrewarm = options.selectionEdgesPrewarm ?? 'eager';
|
|
14
|
+
const activeBatches = new Set();
|
|
15
|
+
const idleWaiters = new Set();
|
|
13
16
|
let nextBatchId = 1;
|
|
14
17
|
let projectionGeneration = 0;
|
|
18
|
+
let lastBatch = null;
|
|
19
|
+
let idleNotificationSuspendCount = 0;
|
|
15
20
|
const createBatch = (nodeIds) => {
|
|
21
|
+
let resolveSettled;
|
|
22
|
+
const settled = new Promise(resolve => {
|
|
23
|
+
resolveSettled = resolve;
|
|
24
|
+
});
|
|
16
25
|
const batch = {
|
|
17
26
|
id: nextBatchId,
|
|
18
27
|
generation: projectionGeneration,
|
|
@@ -21,24 +30,76 @@ export function createBabylonEditorProjection(options) {
|
|
|
21
30
|
pendingNodeIds: new Set(),
|
|
22
31
|
settledNodeIds: new Set(),
|
|
23
32
|
notifyScheduled: false,
|
|
33
|
+
state: 'pending',
|
|
34
|
+
handle: null,
|
|
35
|
+
resolveSettled,
|
|
36
|
+
};
|
|
37
|
+
batch.handle = {
|
|
38
|
+
batchId: batch.id,
|
|
39
|
+
nodeIds: [...batch.nodeIds],
|
|
40
|
+
getStatus: () => createBatchStatus(batch),
|
|
41
|
+
settled,
|
|
24
42
|
};
|
|
25
43
|
nextBatchId += 1;
|
|
44
|
+
lastBatch = batch;
|
|
45
|
+
activeBatches.add(batch);
|
|
26
46
|
return batch;
|
|
27
47
|
};
|
|
48
|
+
const createBatchStatus = (batch) => ({
|
|
49
|
+
batchId: batch.id,
|
|
50
|
+
nodeIds: [...batch.nodeIds],
|
|
51
|
+
asyncNodeIds: [...batch.asyncNodeIds],
|
|
52
|
+
pendingNodeIds: [...batch.pendingNodeIds],
|
|
53
|
+
settledNodeIds: [...batch.settledNodeIds],
|
|
54
|
+
state: batch.state,
|
|
55
|
+
});
|
|
56
|
+
const getIdleState = () => ({
|
|
57
|
+
idle: activeBatches.size === 0,
|
|
58
|
+
activeBatchIds: [...activeBatches].map(batch => batch.id),
|
|
59
|
+
lastBatch: lastBatch ? createBatchStatus(lastBatch) : null,
|
|
60
|
+
});
|
|
61
|
+
const notifyIdleWaitersIfNeeded = () => {
|
|
62
|
+
if (idleNotificationSuspendCount > 0 || activeBatches.size > 0 || idleWaiters.size === 0)
|
|
63
|
+
return;
|
|
64
|
+
const state = getIdleState();
|
|
65
|
+
for (const resolve of idleWaiters)
|
|
66
|
+
resolve(state);
|
|
67
|
+
idleWaiters.clear();
|
|
68
|
+
};
|
|
69
|
+
const completeBatch = (batch, state) => {
|
|
70
|
+
if (batch.state !== 'pending')
|
|
71
|
+
return createBatchStatus(batch);
|
|
72
|
+
batch.state = state;
|
|
73
|
+
const status = createBatchStatus(batch);
|
|
74
|
+
activeBatches.delete(batch);
|
|
75
|
+
batch.resolveSettled(status);
|
|
76
|
+
notifyIdleWaitersIfNeeded();
|
|
77
|
+
return status;
|
|
78
|
+
};
|
|
79
|
+
const markActiveBatchesStale = () => {
|
|
80
|
+
for (const batch of [...activeBatches]) {
|
|
81
|
+
completeBatch(batch, 'stale');
|
|
82
|
+
}
|
|
83
|
+
};
|
|
28
84
|
const scheduleBatchSettled = (batch) => {
|
|
29
|
-
if (batch.pendingNodeIds.size > 0 || batch.notifyScheduled)
|
|
85
|
+
if (batch.state !== 'pending' || batch.pendingNodeIds.size > 0 || batch.notifyScheduled)
|
|
30
86
|
return;
|
|
31
87
|
batch.notifyScheduled = true;
|
|
32
88
|
void Promise.resolve().then(() => {
|
|
33
89
|
batch.notifyScheduled = false;
|
|
34
|
-
if (batch.
|
|
90
|
+
if (batch.state !== 'pending' || batch.pendingNodeIds.size > 0)
|
|
91
|
+
return;
|
|
92
|
+
if (batch.generation !== projectionGeneration) {
|
|
93
|
+
completeBatch(batch, 'stale');
|
|
35
94
|
return;
|
|
95
|
+
}
|
|
36
96
|
options.onProjectionBatchSettled?.({
|
|
37
97
|
batchId: batch.id,
|
|
38
98
|
nodeIds: [...batch.nodeIds],
|
|
39
99
|
asyncNodeIds: [...batch.asyncNodeIds],
|
|
40
100
|
settledNodeIds: [...batch.settledNodeIds],
|
|
41
101
|
});
|
|
102
|
+
completeBatch(batch, 'settled');
|
|
42
103
|
});
|
|
43
104
|
};
|
|
44
105
|
const trackAsyncProjection = (batch, node, projection) => {
|
|
@@ -50,13 +111,15 @@ export function createBabylonEditorProjection(options) {
|
|
|
50
111
|
if (projections.get(node.id) === projection && !projection.root.isDisposed?.()) {
|
|
51
112
|
delete projection.loadPromise;
|
|
52
113
|
applyProjectionOutline(node, projection);
|
|
53
|
-
|
|
114
|
+
scheduleProjectionSelectionEdgesPrewarm(projection);
|
|
54
115
|
options.onProjectionReady?.({ nodeId: node.id, async: true });
|
|
55
116
|
}
|
|
56
117
|
scheduleBatchSettled(batch);
|
|
57
118
|
});
|
|
58
119
|
};
|
|
59
120
|
const disposeProjectedNode = (projection) => {
|
|
121
|
+
projection.selectionEdgesPrewarmCancel?.();
|
|
122
|
+
projection.selectionEdgesPrewarmCancel = null;
|
|
60
123
|
for (const animationGroup of projection.animationGroups) {
|
|
61
124
|
animationGroup.dispose?.();
|
|
62
125
|
}
|
|
@@ -66,6 +129,7 @@ export function createBabylonEditorProjection(options) {
|
|
|
66
129
|
projection.root?.dispose?.();
|
|
67
130
|
};
|
|
68
131
|
const disposeAll = () => {
|
|
132
|
+
markActiveBatchesStale();
|
|
69
133
|
projectionGeneration += 1;
|
|
70
134
|
for (const projection of projections.values()) {
|
|
71
135
|
disposeProjectedNode(projection);
|
|
@@ -73,6 +137,17 @@ export function createBabylonEditorProjection(options) {
|
|
|
73
137
|
projections.clear();
|
|
74
138
|
projectionParentIds.clear();
|
|
75
139
|
};
|
|
140
|
+
const scheduleProjectionSelectionEdgesPrewarm = (projection) => {
|
|
141
|
+
projection.selectionEdgesPrewarmCancel?.();
|
|
142
|
+
projection.selectionEdgesPrewarmCancel = null;
|
|
143
|
+
if (selectionEdgesPrewarm === 'lazy')
|
|
144
|
+
return;
|
|
145
|
+
if (selectionEdgesPrewarm === 'eager') {
|
|
146
|
+
prewarmProjectionSelectionEdges(projection);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
projection.selectionEdgesPrewarmCancel = scheduleIdleProjectionSelectionEdgesPrewarm(projection);
|
|
150
|
+
};
|
|
76
151
|
const syncProjectionHierarchy = () => {
|
|
77
152
|
for (const [nodeId, projection] of projections) {
|
|
78
153
|
const parentId = projectionParentIds.get(nodeId) ?? null;
|
|
@@ -114,7 +189,7 @@ export function createBabylonEditorProjection(options) {
|
|
|
114
189
|
}
|
|
115
190
|
if (!projection.loadPromise) {
|
|
116
191
|
applyProjectionOutline(node, projection);
|
|
117
|
-
|
|
192
|
+
scheduleProjectionSelectionEdgesPrewarm(projection);
|
|
118
193
|
}
|
|
119
194
|
if (!projection.loadPromise)
|
|
120
195
|
batch.settledNodeIds.add(node.id);
|
|
@@ -139,17 +214,36 @@ export function createBabylonEditorProjection(options) {
|
|
|
139
214
|
return {
|
|
140
215
|
projectNodes(nodes) {
|
|
141
216
|
const nodeList = [...nodes];
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
217
|
+
idleNotificationSuspendCount += 1;
|
|
218
|
+
try {
|
|
219
|
+
disposeAll();
|
|
220
|
+
const batch = createBatch(nodeList.map(node => node.id));
|
|
221
|
+
for (const node of nodeList)
|
|
222
|
+
projectNodeInBatch(node, batch);
|
|
223
|
+
syncProjectionHierarchy();
|
|
224
|
+
scheduleBatchSettled(batch);
|
|
225
|
+
return batch.handle;
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
idleNotificationSuspendCount = Math.max(0, idleNotificationSuspendCount - 1);
|
|
229
|
+
notifyIdleWaitersIfNeeded();
|
|
230
|
+
}
|
|
148
231
|
},
|
|
149
232
|
projectNode,
|
|
150
233
|
removeNode,
|
|
151
234
|
rebuild(nodes) {
|
|
152
|
-
this.projectNodes(nodes);
|
|
235
|
+
return this.projectNodes(nodes);
|
|
236
|
+
},
|
|
237
|
+
getLastProjectionBatch() {
|
|
238
|
+
return lastBatch?.handle ?? null;
|
|
239
|
+
},
|
|
240
|
+
getIdleState,
|
|
241
|
+
waitForIdle() {
|
|
242
|
+
if (activeBatches.size === 0)
|
|
243
|
+
return Promise.resolve(getIdleState());
|
|
244
|
+
return new Promise(resolve => {
|
|
245
|
+
idleWaiters.add(resolve);
|
|
246
|
+
});
|
|
153
247
|
},
|
|
154
248
|
readNodeTransform(nodeId) {
|
|
155
249
|
const projection = projections.get(nodeId);
|
|
@@ -213,7 +307,7 @@ export function createBabylonEditorProjection(options) {
|
|
|
213
307
|
syncProjectionHierarchy();
|
|
214
308
|
if (node.transform)
|
|
215
309
|
applyProjectionTransform(options.babylon, projection.root, node.transform);
|
|
216
|
-
|
|
310
|
+
scheduleProjectionSelectionEdgesPrewarm(projection);
|
|
217
311
|
},
|
|
218
312
|
syncSelection(selection) {
|
|
219
313
|
syncProjectionSelection(options.babylon, projections, selection);
|
|
@@ -346,13 +440,18 @@ function createProjectionRoot(babylon, scene, node) {
|
|
|
346
440
|
const root = new TransformNode(`${node.id}.projection`, scene);
|
|
347
441
|
root.id = node.id;
|
|
348
442
|
root.name = node.name ?? node.id;
|
|
349
|
-
const
|
|
443
|
+
const disableGeneratedShadow = node.runtimeKind === 'camera' || node.runtimeKind === 'light' || node.helperKind === 'root';
|
|
350
444
|
root.metadata = {
|
|
351
445
|
...(root.metadata ?? {}),
|
|
352
|
-
...(
|
|
446
|
+
...(disableGeneratedShadow ? {
|
|
447
|
+
disablePlanarShadow: true,
|
|
448
|
+
disableBlobShadow: true,
|
|
449
|
+
disableStaticProjectedShadow: true,
|
|
450
|
+
} : {}),
|
|
353
451
|
editorProjection: {
|
|
354
452
|
nodeId: node.id,
|
|
355
453
|
...(node.runtimeKind ? { runtimeKind: node.runtimeKind } : {}),
|
|
454
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
356
455
|
},
|
|
357
456
|
};
|
|
358
457
|
return root;
|
|
@@ -405,6 +504,7 @@ function attachImportedProjectionResult(options, node, asset, projection, result
|
|
|
405
504
|
editorProjection: {
|
|
406
505
|
nodeId: node.id,
|
|
407
506
|
sourceId: asset.sourceId,
|
|
507
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
408
508
|
},
|
|
409
509
|
};
|
|
410
510
|
applyAssetDefaultsTransform(babylon, modelRoot, asset.transform);
|
|
@@ -424,6 +524,7 @@ function attachImportedProjectionResult(options, node, asset, projection, result
|
|
|
424
524
|
editorProjection: {
|
|
425
525
|
nodeId: node.id,
|
|
426
526
|
sourceId: asset.sourceId,
|
|
527
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
427
528
|
},
|
|
428
529
|
};
|
|
429
530
|
}
|
|
@@ -441,6 +542,7 @@ function attachImportedProjectionResult(options, node, asset, projection, result
|
|
|
441
542
|
ownerNodePath,
|
|
442
543
|
...(selectionKey !== ownerNodePath ? { slotSelectionKey: selectionKey } : {}),
|
|
443
544
|
runtimeKind: 'assetMesh',
|
|
545
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
444
546
|
},
|
|
445
547
|
};
|
|
446
548
|
}
|
|
@@ -624,6 +726,7 @@ function createPrimitiveProjectionMesh(babylon, scene, node, options) {
|
|
|
624
726
|
mesh.metadata = createProjectionMetadata(node.id, {
|
|
625
727
|
runtimeKind: 'primitive',
|
|
626
728
|
primitiveShape: shape,
|
|
729
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
627
730
|
});
|
|
628
731
|
return mesh;
|
|
629
732
|
}
|
|
@@ -873,6 +976,7 @@ function createFallbackProjectionMesh(babylon, scene, node, rendererFallback) {
|
|
|
873
976
|
editorProjection: {
|
|
874
977
|
nodeId: node.id,
|
|
875
978
|
fallback: true,
|
|
979
|
+
...(node.shadowMode ? { shadowMode: node.shadowMode } : {}),
|
|
876
980
|
},
|
|
877
981
|
};
|
|
878
982
|
return mesh;
|
|
@@ -1155,7 +1259,15 @@ function normalizeProjectionVec3(value, fallback) {
|
|
|
1155
1259
|
};
|
|
1156
1260
|
}
|
|
1157
1261
|
function createProjectionMetadata(nodeId, extra = {}) {
|
|
1262
|
+
const disableGeneratedShadow = extra.runtimeKind === 'camera'
|
|
1263
|
+
|| extra.runtimeKind === 'light'
|
|
1264
|
+
|| extra.helper != null;
|
|
1158
1265
|
return {
|
|
1266
|
+
...(disableGeneratedShadow ? {
|
|
1267
|
+
disablePlanarShadow: true,
|
|
1268
|
+
disableBlobShadow: true,
|
|
1269
|
+
disableStaticProjectedShadow: true,
|
|
1270
|
+
} : {}),
|
|
1159
1271
|
editorProjection: {
|
|
1160
1272
|
nodeId,
|
|
1161
1273
|
...extra,
|
|
@@ -1292,17 +1404,28 @@ function syncProjectionSelection(babylon, projections, selection) {
|
|
|
1292
1404
|
for (const [nodeId, projection] of projections) {
|
|
1293
1405
|
const rootSelected = selectedIds.has(nodeId);
|
|
1294
1406
|
const rootActive = selection.activeId === nodeId;
|
|
1407
|
+
let projectionSelected = false;
|
|
1295
1408
|
for (const mesh of projection.outlineMeshes) {
|
|
1296
1409
|
const meshNodeId = typeof mesh?.metadata?.editorProjection?.nodeId === 'string'
|
|
1297
1410
|
? mesh.metadata.editorProjection.nodeId
|
|
1298
1411
|
: nodeId;
|
|
1299
1412
|
const selected = rootSelected || selectedIds.has(meshNodeId);
|
|
1300
1413
|
const active = rootActive || selection.activeId === meshNodeId;
|
|
1414
|
+
if (selected)
|
|
1415
|
+
projectionSelected = true;
|
|
1301
1416
|
syncProjectionMeshSelection(mesh, selected, active, Color4);
|
|
1302
1417
|
}
|
|
1418
|
+
if (projectionSelected) {
|
|
1419
|
+
projection.selectionEdgesPrewarmCancel?.();
|
|
1420
|
+
projection.selectionEdgesPrewarmCancel = null;
|
|
1421
|
+
}
|
|
1303
1422
|
}
|
|
1304
1423
|
}
|
|
1305
1424
|
function syncProjectionMeshSelection(mesh, selected, active, Color4) {
|
|
1425
|
+
mesh.metadata = {
|
|
1426
|
+
...(mesh.metadata ?? {}),
|
|
1427
|
+
editorProjectionSelectionEdgesSelected: selected,
|
|
1428
|
+
};
|
|
1306
1429
|
if (!selected) {
|
|
1307
1430
|
mesh.disableEdgesRendering?.();
|
|
1308
1431
|
return;
|
|
@@ -1319,6 +1442,8 @@ function prewarmProjectionSelectionEdges(projection) {
|
|
|
1319
1442
|
for (const mesh of projection.outlineMeshes) {
|
|
1320
1443
|
if (mesh?.metadata?.editorProjectionSelectionEdgesPrewarmed)
|
|
1321
1444
|
continue;
|
|
1445
|
+
if (mesh?.metadata?.editorProjectionSelectionEdgesSelected)
|
|
1446
|
+
continue;
|
|
1322
1447
|
try {
|
|
1323
1448
|
mesh.enableEdgesRendering?.(0.997);
|
|
1324
1449
|
mesh.disableEdgesRendering?.();
|
|
@@ -1330,4 +1455,26 @@ function prewarmProjectionSelectionEdges(projection) {
|
|
|
1330
1455
|
catch { }
|
|
1331
1456
|
}
|
|
1332
1457
|
}
|
|
1458
|
+
function scheduleIdleProjectionSelectionEdgesPrewarm(projection) {
|
|
1459
|
+
let canceled = false;
|
|
1460
|
+
const run = () => {
|
|
1461
|
+
if (canceled || projection.root?.isDisposed?.())
|
|
1462
|
+
return;
|
|
1463
|
+
projection.selectionEdgesPrewarmCancel = null;
|
|
1464
|
+
prewarmProjectionSelectionEdges(projection);
|
|
1465
|
+
};
|
|
1466
|
+
const scheduleTarget = globalThis;
|
|
1467
|
+
if (typeof scheduleTarget.requestIdleCallback === 'function') {
|
|
1468
|
+
const handle = scheduleTarget.requestIdleCallback(run);
|
|
1469
|
+
return () => {
|
|
1470
|
+
canceled = true;
|
|
1471
|
+
scheduleTarget.cancelIdleCallback?.(handle);
|
|
1472
|
+
};
|
|
1473
|
+
}
|
|
1474
|
+
const handle = setTimeout(run, 0);
|
|
1475
|
+
return () => {
|
|
1476
|
+
canceled = true;
|
|
1477
|
+
clearTimeout(handle);
|
|
1478
|
+
};
|
|
1479
|
+
}
|
|
1333
1480
|
//# sourceMappingURL=projection.js.map
|