@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.
Files changed (161) hide show
  1. package/dist/build-info.json +45 -0
  2. package/dist/local-editor-harness.d.ts +47 -6
  3. package/dist/local-editor-harness.d.ts.map +1 -1
  4. package/dist/local-editor-harness.js +315 -21
  5. package/dist/local-editor-harness.js.map +1 -1
  6. package/dist/playable-babylon-facade.d.ts +4 -4
  7. package/dist/playable-babylon-facade.d.ts.map +1 -1
  8. package/dist/playable-babylon-facade.js +2 -2
  9. package/dist/playable-babylon-facade.js.map +1 -1
  10. package/dist/playable-babylon-rendering.d.ts +14 -2
  11. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  12. package/dist/playable-babylon-rendering.js +48 -3
  13. package/dist/playable-babylon-rendering.js.map +1 -1
  14. package/dist/playable-local-editor-host.d.ts +15 -1
  15. package/dist/playable-local-editor-host.d.ts.map +1 -1
  16. package/dist/playable-local-editor-host.js.map +1 -1
  17. package/dist/playable-sdk-vite.d.ts +2 -0
  18. package/dist/playable-sdk-vite.d.ts.map +1 -0
  19. package/dist/playable-sdk-vite.js +2 -0
  20. package/dist/playable-sdk-vite.js.map +1 -0
  21. package/dist/playable-sdk.d.ts +5 -5
  22. package/dist/playable-sdk.d.ts.map +1 -1
  23. package/dist/playable-sdk.js +2 -2
  24. package/dist/playable-sdk.js.map +1 -1
  25. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
  26. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  27. package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
  28. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  29. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts +5 -0
  30. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts.map +1 -0
  31. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js +46 -0
  32. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -0
  33. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts +5 -0
  34. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -0
  35. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +398 -0
  36. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -0
  37. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts +6 -0
  38. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts.map +1 -0
  39. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js +717 -0
  40. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js.map +1 -0
  41. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +131 -0
  42. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
  43. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +76 -0
  44. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  45. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  46. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +1 -0
  47. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  48. package/node_modules/@fps-games/editor-babylon/dist/index.js +1 -0
  49. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  50. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts +49 -0
  51. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -0
  52. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +141 -0
  53. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -0
  54. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +30 -2
  55. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  56. package/node_modules/@fps-games/editor-babylon/dist/projection.js +161 -14
  57. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  58. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +14 -3
  59. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  60. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +223 -8
  61. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  62. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  63. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  64. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +33 -6
  65. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  66. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +3 -1
  67. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  68. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  69. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +14 -0
  70. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  71. package/node_modules/@fps-games/editor-core/dist/editor-session.js +54 -0
  72. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  73. package/node_modules/@fps-games/editor-core/package.json +2 -2
  74. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  75. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts +2 -0
  76. package/node_modules/@fps-games/editor-playable-sdk/dist/bridge-command/protocol.d.ts.map +1 -1
  77. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +2 -0
  78. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  79. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
  80. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
  81. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
  82. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  83. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
  84. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +2 -1
  85. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  86. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +1 -0
  87. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
  88. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +8 -0
  89. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  90. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +1 -0
  91. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  92. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +56 -0
  93. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  94. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +33 -0
  95. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
  96. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +8 -1
  97. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  98. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +85 -4
  99. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  100. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +2 -2
  101. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
  102. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +1 -1
  103. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
  104. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  105. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +8 -1
  106. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  107. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
  108. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  109. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +5 -0
  110. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  111. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  112. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +412 -0
  113. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  114. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts +6 -2
  115. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts.map +1 -1
  116. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js +272 -5
  117. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js.map +1 -1
  118. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +108 -1
  119. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  120. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  121. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
  122. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  123. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
  124. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  125. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts +1 -1
  126. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts.map +1 -1
  127. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js +1 -1
  128. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
  129. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts +2 -1
  130. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts.map +1 -1
  131. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +37 -0
  132. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  133. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts +15 -0
  134. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts.map +1 -1
  135. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts +36 -0
  136. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts.map +1 -0
  137. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js +65 -0
  138. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -0
  139. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts +4 -0
  140. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts.map +1 -0
  141. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js +87 -0
  142. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -0
  143. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +5 -0
  144. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -0
  145. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +5 -0
  146. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -0
  147. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +8 -0
  148. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -0
  149. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +226 -0
  150. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -0
  151. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +64 -0
  152. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -0
  153. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js +2 -0
  154. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -0
  155. package/node_modules/@fps-games/editor-playable-sdk/package.json +7 -3
  156. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +2 -0
  157. package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
  158. package/node_modules/@fps-games/editor-protocol/dist/index.js +2 -0
  159. package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
  160. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  161. 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.generation !== projectionGeneration || batch.pendingNodeIds.size > 0)
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
- prewarmProjectionSelectionEdges(projection);
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
- prewarmProjectionSelectionEdges(projection);
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
- disposeAll();
143
- const batch = createBatch(nodeList.map(node => node.id));
144
- for (const node of nodeList)
145
- projectNodeInBatch(node, batch);
146
- syncProjectionHierarchy();
147
- scheduleBatchSettled(batch);
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
- prewarmProjectionSelectionEdges(projection);
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 disablePlanarShadow = node.runtimeKind === 'camera' || node.runtimeKind === 'light' || node.helperKind === 'root';
443
+ const disableGeneratedShadow = node.runtimeKind === 'camera' || node.runtimeKind === 'light' || node.helperKind === 'root';
350
444
  root.metadata = {
351
445
  ...(root.metadata ?? {}),
352
- ...(disablePlanarShadow ? { disablePlanarShadow: true } : {}),
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