@fps-games/editor 0.1.4-beta.4 → 0.1.5-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/build-info.json +45 -0
  2. package/dist/local-editor-harness.d.ts +25 -5
  3. package/dist/local-editor-harness.d.ts.map +1 -1
  4. package/dist/local-editor-harness.js +518 -90
  5. package/dist/local-editor-harness.js.map +1 -1
  6. package/dist/local-editor-performance-stats.d.ts +12 -0
  7. package/dist/local-editor-performance-stats.d.ts.map +1 -0
  8. package/dist/local-editor-performance-stats.js +46 -0
  9. package/dist/local-editor-performance-stats.js.map +1 -0
  10. package/dist/playable-babylon-facade.d.ts +4 -4
  11. package/dist/playable-babylon-facade.d.ts.map +1 -1
  12. package/dist/playable-babylon-facade.js +2 -2
  13. package/dist/playable-babylon-facade.js.map +1 -1
  14. package/dist/playable-babylon-rendering.d.ts +66 -9
  15. package/dist/playable-babylon-rendering.d.ts.map +1 -1
  16. package/dist/playable-babylon-rendering.js +567 -13
  17. package/dist/playable-babylon-rendering.js.map +1 -1
  18. package/dist/playable-local-editor-host.d.ts +12 -9
  19. package/dist/playable-local-editor-host.d.ts.map +1 -1
  20. package/dist/playable-local-editor-host.js.map +1 -1
  21. package/dist/playable-sdk-vite.d.ts +2 -0
  22. package/dist/playable-sdk-vite.d.ts.map +1 -0
  23. package/dist/playable-sdk-vite.js +2 -0
  24. package/dist/playable-sdk-vite.js.map +1 -0
  25. package/dist/playable-sdk.d.ts +6 -4
  26. package/dist/playable-sdk.d.ts.map +1 -1
  27. package/dist/playable-sdk.js +3 -2
  28. package/dist/playable-sdk.js.map +1 -1
  29. package/dist/static-shadow-cpu-worker.d.ts +7 -0
  30. package/dist/static-shadow-cpu-worker.d.ts.map +1 -0
  31. package/dist/static-shadow-cpu-worker.js +221 -0
  32. package/dist/static-shadow-cpu-worker.js.map +1 -0
  33. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +5 -0
  34. package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
  35. package/node_modules/@fps-games/babylon-renderer/dist/index.js +5 -0
  36. package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
  37. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts +5 -0
  38. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts.map +1 -0
  39. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js +46 -0
  40. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -0
  41. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts +5 -0
  42. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -0
  43. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +398 -0
  44. package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -0
  45. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.d.ts +4 -0
  46. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -0
  47. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js +584 -0
  48. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-artifact-system.js.map +1 -0
  49. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.d.ts +61 -0
  50. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.d.ts.map +1 -0
  51. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js +382 -0
  52. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-atlas.js.map +1 -0
  53. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.d.ts +47 -0
  54. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.d.ts.map +1 -0
  55. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js +285 -0
  56. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-bake.js.map +1 -0
  57. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.d.ts +88 -0
  58. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.d.ts.map +1 -0
  59. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js +813 -0
  60. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-baker.js.map +1 -0
  61. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.d.ts +27 -0
  62. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.d.ts.map +1 -0
  63. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js +220 -0
  64. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-rendering.js.map +1 -0
  65. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts +38 -0
  66. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts.map +1 -0
  67. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js +173 -0
  68. package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js.map +1 -0
  69. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +286 -0
  70. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
  71. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +82 -0
  72. package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
  73. package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
  74. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +3 -0
  75. package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
  76. package/node_modules/@fps-games/editor-babylon/dist/index.js +3 -0
  77. package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
  78. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.d.ts +34 -0
  79. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.d.ts.map +1 -0
  80. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js +272 -0
  81. package/node_modules/@fps-games/editor-babylon/dist/performance-monitor.js.map +1 -0
  82. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts +49 -0
  83. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -0
  84. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +141 -0
  85. package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -0
  86. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +11 -0
  87. package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
  88. package/node_modules/@fps-games/editor-babylon/dist/projection.js +137 -6
  89. package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
  90. package/node_modules/@fps-games/editor-babylon/dist/rendering.d.ts +19 -0
  91. package/node_modules/@fps-games/editor-babylon/dist/rendering.d.ts.map +1 -0
  92. package/node_modules/@fps-games/editor-babylon/dist/rendering.js +66 -0
  93. package/node_modules/@fps-games/editor-babylon/dist/rendering.js.map +1 -0
  94. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +17 -3
  95. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
  96. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +256 -8
  97. package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
  98. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.d.ts.map +1 -1
  99. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js +19 -2
  100. package/node_modules/@fps-games/editor-babylon/dist/transform-gizmo-controller.js.map +1 -1
  101. package/node_modules/@fps-games/editor-babylon/package.json +5 -5
  102. package/node_modules/@fps-games/editor-browser/dist/index.d.ts +1 -1
  103. package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
  104. package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
  105. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.d.ts +8 -0
  106. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.d.ts.map +1 -0
  107. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js +14 -0
  108. package/node_modules/@fps-games/editor-browser/dist/local-editor-rendering-actions.js.map +1 -0
  109. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
  110. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +10 -2
  111. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +1 -1
  112. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
  113. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
  114. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +17 -0
  115. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
  116. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
  117. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +494 -43
  118. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
  119. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +72 -5
  120. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
  121. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +1 -1
  122. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
  123. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +595 -5
  124. package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
  125. package/node_modules/@fps-games/editor-browser/package.json +3 -3
  126. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +14 -1
  127. package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
  128. package/node_modules/@fps-games/editor-core/dist/editor-session.js +34 -10
  129. package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
  130. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +2 -1
  131. package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
  132. package/node_modules/@fps-games/editor-core/dist/inspector.js +11 -1
  133. package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
  134. package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts +7 -0
  135. package/node_modules/@fps-games/editor-core/dist/serialized-object.d.ts.map +1 -1
  136. package/node_modules/@fps-games/editor-core/dist/serialized-object.js +1 -0
  137. package/node_modules/@fps-games/editor-core/dist/serialized-object.js.map +1 -1
  138. package/node_modules/@fps-games/editor-core/package.json +2 -2
  139. package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
  140. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
  141. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +10 -5
  142. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
  143. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.d.ts.map +1 -1
  144. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js +3 -1
  145. package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/placement.js.map +1 -1
  146. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +4 -1
  147. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
  148. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +29 -0
  149. package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
  150. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +12 -0
  151. package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
  152. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
  153. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
  154. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
  155. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
  156. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
  157. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +5 -1
  158. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
  159. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +1 -0
  160. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
  161. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +8 -0
  162. package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
  163. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +1 -0
  164. package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
  165. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +1 -0
  166. package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
  167. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +34 -2
  168. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
  169. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +272 -0
  170. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
  171. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts +1 -1
  172. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.d.ts.map +1 -1
  173. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js +1 -1
  174. package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/index.js.map +1 -1
  175. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
  176. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +0 -4
  177. package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
  178. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts +12 -1
  179. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
  180. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +161 -1
  181. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
  182. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.d.ts +4 -2
  183. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.d.ts.map +1 -1
  184. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js +2 -1
  185. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/index.js.map +1 -1
  186. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
  187. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +4 -1
  188. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
  189. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.d.ts +19 -0
  190. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.d.ts.map +1 -0
  191. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js +57 -0
  192. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/rendering-alpha-index.js.map +1 -0
  193. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.d.ts +7 -1
  194. package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/types.d.ts.map +1 -1
  195. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
  196. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
  197. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +5 -0
  198. package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
  199. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
  200. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +1003 -7
  201. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
  202. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts +12 -3
  203. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts.map +1 -1
  204. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js +521 -6
  205. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js.map +1 -1
  206. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +217 -3
  207. package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
  208. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
  209. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +26 -0
  210. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
  211. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +3 -1
  212. package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
  213. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
  214. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +4 -0
  215. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
  216. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.d.ts +9 -1
  217. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.d.ts.map +1 -1
  218. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js +12 -1
  219. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/companion-configs.js.map +1 -1
  220. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +2 -0
  221. package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
  222. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts +1 -0
  223. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts.map +1 -1
  224. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js +75 -0
  225. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
  226. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.d.ts +1 -0
  227. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.d.ts.map +1 -1
  228. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js +1 -0
  229. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/index.js.map +1 -1
  230. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts +17 -0
  231. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -0
  232. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +262 -0
  233. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -0
  234. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.d.ts.map +1 -1
  235. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js +7 -3
  236. package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
  237. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.d.ts +6 -0
  238. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.d.ts.map +1 -1
  239. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js +31 -0
  240. package/node_modules/@fps-games/editor-playable-sdk/dist/session/identity.js.map +1 -1
  241. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.d.ts +2 -1
  242. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.d.ts.map +1 -1
  243. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js +1 -1
  244. package/node_modules/@fps-games/editor-playable-sdk/dist/session/index.js.map +1 -1
  245. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
  246. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +21 -9
  247. package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
  248. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts +151 -0
  249. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.d.ts.map +1 -0
  250. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js +445 -0
  251. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/artifact.js.map +1 -0
  252. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.d.ts +2 -0
  253. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.d.ts.map +1 -0
  254. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js +2 -0
  255. package/node_modules/@fps-games/editor-playable-sdk/dist/static-shadows/index.js.map +1 -0
  256. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts +1 -1
  257. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts.map +1 -1
  258. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js +1 -1
  259. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
  260. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts +2 -1
  261. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts.map +1 -1
  262. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +37 -0
  263. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
  264. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts +15 -0
  265. package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts.map +1 -1
  266. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts +36 -0
  267. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts.map +1 -0
  268. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js +65 -0
  269. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -0
  270. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts +4 -0
  271. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts.map +1 -0
  272. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js +87 -0
  273. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -0
  274. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +5 -0
  275. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -0
  276. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +5 -0
  277. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -0
  278. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +8 -0
  279. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -0
  280. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +226 -0
  281. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -0
  282. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +64 -0
  283. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -0
  284. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js +2 -0
  285. package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -0
  286. package/node_modules/@fps-games/editor-playable-sdk/package.json +7 -3
  287. package/node_modules/@fps-games/editor-protocol/package.json +1 -1
  288. package/package.json +12 -8
@@ -22,6 +22,14 @@ export const EDITOR_SCENE_DEFAULT_PLANAR_SHADOW_EXCLUDE_PATTERNS = [
22
22
  '_shadow',
23
23
  '_planarShadow',
24
24
  ];
25
+ export const EDITOR_SCENE_DEFAULT_BLOB_SHADOW_EXCLUDE_PATTERNS = [
26
+ ...EDITOR_SCENE_DEFAULT_PLANAR_SHADOW_EXCLUDE_PATTERNS,
27
+ '_blobShadow',
28
+ ];
29
+ export const EDITOR_SCENE_DEFAULT_STATIC_PROJECTED_SHADOW_EXCLUDE_PATTERNS = [
30
+ ...EDITOR_SCENE_DEFAULT_BLOB_SHADOW_EXCLUDE_PATTERNS,
31
+ '_staticProjectedShadow',
32
+ ];
25
33
  export const EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS = [
26
34
  'globalVolume.enabled',
27
35
  'globalVolume.hdr',
@@ -40,6 +48,31 @@ export const EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS = [
40
48
  'globalVolume.postProcessing.bloom.weight',
41
49
  'globalVolume.postProcessing.bloom.kernel',
42
50
  'globalVolume.postProcessing.bloom.scale',
51
+ 'shadows.defaultMode',
52
+ 'shadows.blob.enabled',
53
+ 'shadows.blob.appearance.color',
54
+ 'shadows.blob.appearance.color.a',
55
+ 'shadows.blob.appearance.edgeSoftness',
56
+ 'shadows.blob.plane.height',
57
+ 'shadows.blob.plane.yOffset',
58
+ 'shadows.blob.size.sizeMultiplier',
59
+ 'shadows.blob.size.minSize',
60
+ 'shadows.blob.size.maxSize',
61
+ 'shadows.staticProjected.enabled',
62
+ 'shadows.staticProjected.appearance.color',
63
+ 'shadows.staticProjected.appearance.color.a',
64
+ 'shadows.staticProjected.plane.height',
65
+ 'shadows.staticProjected.plane.yOffset',
66
+ 'shadows.staticProjected.bake.resolution',
67
+ 'shadows.staticProjected.bake.padding',
68
+ 'shadows.staticProjected.bake.blur',
69
+ 'shadows.staticProjected.bake.maxSize',
70
+ 'shadows.staticProjected.bake.texelsPerMeter',
71
+ 'shadows.staticProjected.bake.atlasSize',
72
+ 'shadows.staticProjected.bake.maxAtlasPages',
73
+ 'shadows.staticProjected.bake.sdfRadiusPx',
74
+ 'shadows.staticProjected.bake.spatialChunkSize',
75
+ 'shadows.staticProjected.bake.targetChunkCount',
43
76
  'shadows.planar.enabled',
44
77
  'shadows.planar.appearance.color',
45
78
  'shadows.planar.appearance.color.a',
@@ -51,22 +84,61 @@ export const EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS = [
51
84
  'shadows.planar.casters.rootBoundaryPatterns',
52
85
  'shadows.planar.receivers.patterns',
53
86
  ];
87
+ export const EDITOR_SCENE_RENDERING_GROUP_IDS = [0, 1, 2, 3];
88
+ export const EDITOR_SCENE_DEFAULT_RENDERING_GROUPS = [{
89
+ renderingGroupId: 0,
90
+ name: '普通场景',
91
+ alphaIndexPresets: [
92
+ { name: '默认透明顺序', alphaIndex: 0 },
93
+ { name: '地表贴花', alphaIndex: 100 },
94
+ { name: '近景覆盖', alphaIndex: 200 },
95
+ ],
96
+ }, {
97
+ renderingGroupId: 1,
98
+ name: '水面 / 透明地表',
99
+ alphaIndexPresets: [
100
+ { name: '水面', alphaIndex: 0 },
101
+ { name: '透明地表', alphaIndex: 100 },
102
+ { name: '水面高光', alphaIndex: 200 },
103
+ ],
104
+ }, {
105
+ renderingGroupId: 2,
106
+ name: '特效',
107
+ alphaIndexPresets: [
108
+ { name: '普通特效', alphaIndex: 0 },
109
+ { name: '前景特效', alphaIndex: 100 },
110
+ { name: '最前特效', alphaIndex: 200 },
111
+ ],
112
+ }, {
113
+ renderingGroupId: 3,
114
+ name: '世界空间 UI / 引导箭头',
115
+ alphaIndexPresets: [
116
+ { name: '世界空间 UI', alphaIndex: 0 },
117
+ { name: '引导箭头', alphaIndex: 100 },
118
+ { name: '顶层提示', alphaIndex: 200 },
119
+ ],
120
+ }];
54
121
  export function normalizeEditorSceneRenderingProfile(config) {
55
122
  const root = readRecord(config);
56
123
  const shadows = readRecord(root.shadows);
57
124
  const settings = readRecord(shadows.settings);
125
+ const blob = readRecord(shadows.blob);
58
126
  const blobSettings = readRecord(shadows.blobSettings);
127
+ const normalizedBlob = normalizeEditorSceneBlobShadowProfile(blob, blobSettings, shadows);
128
+ const normalizedStaticProjected = normalizeEditorSceneStaticProjectedShadowProfile(shadows.staticProjected);
59
129
  const shadowRange = readRecord(shadows.shadowRange);
60
130
  const shadowOrtho = readRecord(shadows.shadowOrtho);
61
131
  const csm = readRecord(shadows.csm);
62
132
  const shadowMeshes = readRecord(root.shadowMeshes);
63
133
  return {
134
+ renderingGroups: normalizeEditorSceneRenderingGroupsProfile(root.renderingGroups),
64
135
  environment: normalizeEditorSceneEnvironmentProfile(root.globalVolume),
65
136
  postProcess: normalizeEditorScenePostProcessProfile(root.globalVolume),
66
137
  shadows: {
138
+ defaultMode: readResolvedShadowMode(shadows.defaultMode, 'none'),
67
139
  enabled: readBoolean(shadows.enabled, false),
68
140
  useCsm: readBoolean(shadows.useCsm, false),
69
- useBlobShadow: readBoolean(shadows.useBlobShadow, false),
141
+ useBlobShadow: normalizedBlob.enabled,
70
142
  settings: {
71
143
  mapSize: readNonNegativeNumber(settings.mapSize, 1024),
72
144
  darkness: readNonNegativeNumber(settings.darkness, 0.3),
@@ -79,11 +151,13 @@ export function normalizeEditorSceneRenderingProfile(config) {
79
151
  shadowColor: readRgb(settings.shadowColor, { r: 0, g: 0, b: 0 }),
80
152
  },
81
153
  blobSettings: {
82
- opacity: readClampedNumber(blobSettings.opacity, 0.2, 0, 1),
83
- yOffset: readNonNegativeNumber(blobSettings.yOffset, 0.02),
84
- sizeMultiplier: readNonNegativeNumber(blobSettings.sizeMultiplier, 1),
154
+ opacity: readClampedNumber(blobSettings.opacity, 0.35, 0, 1),
155
+ yOffset: readNonNegativeNumber(blobSettings.yOffset, 0.08),
156
+ sizeMultiplier: readNonNegativeNumber(blobSettings.sizeMultiplier, 1.25),
85
157
  minSize: readNonNegativeNumber(blobSettings.minSize, 0.25),
86
158
  },
159
+ blob: normalizedBlob,
160
+ staticProjected: normalizedStaticProjected,
87
161
  shadowRange: {
88
162
  minZ: readNonNegativeNumber(shadowRange.minZ, 1),
89
163
  maxZ: readNonNegativeNumber(shadowRange.maxZ, 60),
@@ -157,6 +231,79 @@ export function createEditorScenePlanarShadowPreviewSettings(profile, input = {}
157
231
  },
158
232
  };
159
233
  }
234
+ export function createEditorSceneBlobShadowPreviewSettings(profile, input = {}) {
235
+ const blob = profile.shadows.blob;
236
+ return {
237
+ enabled: blob.enabled && (input.enabled ?? true),
238
+ plane: {
239
+ height: blob.plane.height,
240
+ yOffset: blob.plane.yOffset,
241
+ },
242
+ appearance: {
243
+ color: blob.appearance.color,
244
+ edgeSoftness: blob.appearance.edgeSoftness,
245
+ },
246
+ size: {
247
+ sizeMultiplier: blob.size.sizeMultiplier,
248
+ minSize: blob.size.minSize,
249
+ maxSize: blob.size.maxSize,
250
+ },
251
+ casters: {
252
+ autoDetectAll: input.autoDetectAllCasters ?? false,
253
+ includePatterns: [
254
+ ...(input.additionalCasterIncludePatterns ?? []),
255
+ ],
256
+ excludePatterns: [
257
+ ...EDITOR_SCENE_DEFAULT_BLOB_SHADOW_EXCLUDE_PATTERNS,
258
+ ...(input.additionalExcludePatterns ?? []),
259
+ ],
260
+ rootBoundaryPatterns: [
261
+ ...(input.additionalRootBoundaryPatterns ?? []),
262
+ ],
263
+ minVolume: 0.001,
264
+ },
265
+ };
266
+ }
267
+ export function createEditorSceneStaticProjectedShadowPreviewSettings(profile, input = {}) {
268
+ const staticProjected = profile.shadows.staticProjected;
269
+ return {
270
+ enabled: staticProjected.enabled && (input.enabled ?? true),
271
+ plane: {
272
+ height: staticProjected.plane.height,
273
+ yOffset: staticProjected.plane.yOffset,
274
+ },
275
+ appearance: {
276
+ color: staticProjected.appearance.color,
277
+ },
278
+ direction: { mode: 'follow-light' },
279
+ bake: {
280
+ resolution: staticProjected.bake.resolution,
281
+ padding: staticProjected.bake.padding,
282
+ blur: staticProjected.bake.blur,
283
+ maxSize: staticProjected.bake.maxSize,
284
+ texelsPerMeter: staticProjected.bake.texelsPerMeter,
285
+ atlasSize: staticProjected.bake.atlasSize,
286
+ maxAtlasPages: staticProjected.bake.maxAtlasPages,
287
+ sdfRadiusPx: staticProjected.bake.sdfRadiusPx,
288
+ spatialChunkSize: staticProjected.bake.spatialChunkSize,
289
+ targetChunkCount: staticProjected.bake.targetChunkCount,
290
+ },
291
+ casters: {
292
+ autoDetectAll: input.autoDetectAllCasters ?? false,
293
+ includePatterns: [
294
+ ...(input.additionalCasterIncludePatterns ?? []),
295
+ ],
296
+ excludePatterns: [
297
+ ...EDITOR_SCENE_DEFAULT_STATIC_PROJECTED_SHADOW_EXCLUDE_PATTERNS,
298
+ ...(input.additionalExcludePatterns ?? []),
299
+ ],
300
+ rootBoundaryPatterns: [
301
+ ...(input.additionalRootBoundaryPatterns ?? []),
302
+ ],
303
+ minVolume: 0.001,
304
+ },
305
+ };
306
+ }
160
307
  export function applyEditorSceneRenderingProfilePatch(config, changes) {
161
308
  const draft = cloneRecord(config);
162
309
  const changedPaths = [];
@@ -180,6 +327,10 @@ export function summarizeEditorSceneRenderingProfile(value) {
180
327
  postProcessEnabled: value?.postProcess?.enabled ?? null,
181
328
  postProcessExposure: value?.postProcess?.imageProcessing?.exposure ?? null,
182
329
  postProcessBloomEnabled: value?.postProcess?.bloom?.enabled ?? null,
330
+ blobEnabled: value?.shadows?.blob?.enabled ?? null,
331
+ blobOpacity: value?.shadows?.blob?.appearance?.color?.a ?? null,
332
+ staticProjectedEnabled: value?.shadows?.staticProjected?.enabled ?? null,
333
+ staticProjectedOpacity: value?.shadows?.staticProjected?.appearance?.color?.a ?? null,
183
334
  planarEnabled: value?.shadows?.planar?.enabled ?? null,
184
335
  planarOpacity: value?.shadows?.planar?.appearance?.color?.a ?? null,
185
336
  planeHeight: value?.shadows?.planar?.plane?.height ?? null,
@@ -188,7 +339,122 @@ export function summarizeEditorSceneRenderingProfile(value) {
188
339
  };
189
340
  }
190
341
  export function isEditorSceneRenderingProfilePatchPath(path) {
191
- return EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS.includes(path);
342
+ return EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS.includes(path)
343
+ || parseEditorSceneRenderingGroupNamePatchPath(path) != null
344
+ || parseEditorSceneRenderingAlphaPresetPatchPath(path) != null;
345
+ }
346
+ export function applyEditorSceneRenderingProfileAction(config, input) {
347
+ const draft = cloneRecord(config);
348
+ const changedPaths = [];
349
+ const renderingGroupId = readRenderingGroupId(input.renderingGroupId);
350
+ if (renderingGroupId == null) {
351
+ return {
352
+ config: draft,
353
+ changedPaths,
354
+ normalized: normalizeEditorSceneRenderingProfile(draft),
355
+ };
356
+ }
357
+ if (input.actionId === 'rendering-alpha-preset.add') {
358
+ const nextIndex = appendEditorSceneRenderingAlphaPreset(draft, renderingGroupId);
359
+ changedPaths.push(`renderingGroups.slots.${renderingGroupId}.alphaIndexPresets.${nextIndex}`);
360
+ }
361
+ else if (input.actionId === 'rendering-alpha-preset.delete') {
362
+ const presetIndex = readPresetIndex(input.presetIndex);
363
+ if (presetIndex != null && removeEditorSceneRenderingAlphaPreset(draft, renderingGroupId, presetIndex)) {
364
+ changedPaths.push(`renderingGroups.slots.${renderingGroupId}.alphaIndexPresets.${presetIndex}`);
365
+ }
366
+ }
367
+ return {
368
+ config: draft,
369
+ changedPaths,
370
+ normalized: normalizeEditorSceneRenderingProfile(draft),
371
+ };
372
+ }
373
+ export function resolveEditorSceneRenderingAlphaIndexPresetValueMigration(input) {
374
+ const changePath = input.change?.path;
375
+ if (!changePath || !input.changedPaths.includes(changePath))
376
+ return null;
377
+ const alphaPresetPatch = parseEditorSceneRenderingAlphaPresetPatchPath(changePath);
378
+ if (!alphaPresetPatch || alphaPresetPatch.field !== 'alphaIndex')
379
+ return null;
380
+ const toAlphaIndex = readFiniteNumber(input.change?.value, Number.NaN);
381
+ if (!Number.isFinite(toAlphaIndex))
382
+ return null;
383
+ const previousPreset = input.previousProfile.renderingGroups.slots
384
+ .find(slot => slot.renderingGroupId === alphaPresetPatch.renderingGroupId)
385
+ ?.alphaIndexPresets[alphaPresetPatch.presetIndex];
386
+ if (!previousPreset || !Number.isFinite(previousPreset.alphaIndex))
387
+ return null;
388
+ if (previousPreset.alphaIndex === toAlphaIndex)
389
+ return null;
390
+ return {
391
+ renderingGroupId: alphaPresetPatch.renderingGroupId,
392
+ fromAlphaIndex: previousPreset.alphaIndex,
393
+ toAlphaIndex,
394
+ };
395
+ }
396
+ function normalizeEditorSceneBlobShadowProfile(value, legacyBlobSettingsValue, legacyShadowsValue) {
397
+ const blob = readRecord(value);
398
+ const plane = readRecord(blob.plane);
399
+ const appearance = readRecord(blob.appearance);
400
+ const size = readRecord(blob.size);
401
+ const legacyBlobSettings = readRecord(legacyBlobSettingsValue);
402
+ const legacyShadows = readRecord(legacyShadowsValue);
403
+ const legacyOpacity = legacyBlobSettings.opacity;
404
+ const colorFallback = readRgba(appearance.color, {
405
+ r: 0,
406
+ g: 0,
407
+ b: 0,
408
+ a: readClampedNumber(legacyOpacity, 0.35, 0, 1),
409
+ });
410
+ return {
411
+ enabled: readBoolean(blob.enabled, readBoolean(legacyShadows.useBlobShadow, true)),
412
+ plane: {
413
+ height: readFiniteNumber(plane.height, 0),
414
+ yOffset: readNonNegativeNumber(plane.yOffset ?? legacyBlobSettings.yOffset, 0.08),
415
+ },
416
+ appearance: {
417
+ color: readRgba(appearance.color, colorFallback),
418
+ edgeSoftness: readClampedNumber(appearance.edgeSoftness, 0.55, 0, 0.98),
419
+ },
420
+ size: {
421
+ sizeMultiplier: readNonNegativeNumber(size.sizeMultiplier ?? legacyBlobSettings.sizeMultiplier, 1.25),
422
+ minSize: readNonNegativeNumber(size.minSize ?? legacyBlobSettings.minSize, 0.25),
423
+ maxSize: readPositiveNumber(size.maxSize, 20),
424
+ },
425
+ };
426
+ }
427
+ function normalizeEditorSceneRenderingGroupsProfile(value) {
428
+ const root = readRecord(value);
429
+ const rawSlots = Array.isArray(root.slots) ? root.slots : [];
430
+ return {
431
+ slots: EDITOR_SCENE_DEFAULT_RENDERING_GROUPS.map((defaultSlot) => {
432
+ const rawSlot = rawSlots.find((entry) => (readRenderingGroupId(readRecord(entry).renderingGroupId) === defaultSlot.renderingGroupId));
433
+ const slot = readRecord(rawSlot);
434
+ return {
435
+ renderingGroupId: defaultSlot.renderingGroupId,
436
+ name: readNonEmptyString(slot.name, defaultSlot.name),
437
+ alphaIndexPresets: normalizeEditorSceneRenderingAlphaIndexPresets(slot.alphaIndexPresets, defaultSlot.alphaIndexPresets),
438
+ };
439
+ }),
440
+ };
441
+ }
442
+ function normalizeEditorSceneRenderingAlphaIndexPresets(value, fallback) {
443
+ const source = Array.isArray(value) ? value : fallback;
444
+ const seen = new Set();
445
+ const presets = [];
446
+ source.forEach((entry, index) => {
447
+ const record = readRecord(entry);
448
+ const alphaIndex = readFiniteNumber(record.alphaIndex, Number.NaN);
449
+ if (!Number.isFinite(alphaIndex) || seen.has(alphaIndex))
450
+ return;
451
+ seen.add(alphaIndex);
452
+ presets.push({
453
+ name: readNonEmptyString(record.name, `Order ${index + 1}`),
454
+ alphaIndex,
455
+ });
456
+ });
457
+ return presets;
192
458
  }
193
459
  function normalizeEditorScenePlanarShadowProfile(value) {
194
460
  const planar = readRecord(value);
@@ -229,6 +495,35 @@ function normalizeEditorScenePlanarShadowProfile(value) {
229
495
  },
230
496
  };
231
497
  }
498
+ function normalizeEditorSceneStaticProjectedShadowProfile(value) {
499
+ const staticProjected = readRecord(value);
500
+ const plane = readRecord(staticProjected.plane);
501
+ const appearance = readRecord(staticProjected.appearance);
502
+ const bake = readRecord(staticProjected.bake);
503
+ const spatialChunkSize = readPositiveNumber(bake.spatialChunkSize ?? bake.maxSize, 16);
504
+ return {
505
+ enabled: readBoolean(staticProjected.enabled, false),
506
+ plane: {
507
+ height: readFiniteNumber(plane.height, 0),
508
+ yOffset: readNonNegativeNumber(plane.yOffset, 0.08),
509
+ },
510
+ appearance: {
511
+ color: readRgba(appearance.color, { r: 0, g: 0, b: 0, a: 0.35 }),
512
+ },
513
+ bake: {
514
+ resolution: readPositiveNumber(bake.resolution, 2048),
515
+ padding: readNonNegativeNumber(bake.padding, 0.15),
516
+ blur: readNonNegativeNumber(bake.blur, 0),
517
+ maxSize: spatialChunkSize,
518
+ texelsPerMeter: readPositiveNumber(bake.texelsPerMeter, 256),
519
+ atlasSize: readPositiveNumber(bake.atlasSize, 4096),
520
+ maxAtlasPages: readPositiveNumber(bake.maxAtlasPages, 8),
521
+ sdfRadiusPx: readNonNegativeNumber(bake.sdfRadiusPx, 8),
522
+ spatialChunkSize,
523
+ targetChunkCount: readPositiveNumber(bake.targetChunkCount, 64),
524
+ },
525
+ };
526
+ }
232
527
  function normalizeEditorSceneEnvironmentProfile(globalVolumeValue) {
233
528
  const globalVolume = readRecord(globalVolumeValue);
234
529
  const environment = readRecord(globalVolume.environment);
@@ -249,6 +544,27 @@ function normalizeEditorSceneEnvironmentProfile(globalVolumeValue) {
249
544
  };
250
545
  }
251
546
  function applyAllowedRenderingPatch(draft, path, value) {
547
+ const groupNamePatch = parseEditorSceneRenderingGroupNamePatchPath(path);
548
+ if (groupNamePatch) {
549
+ const slot = ensureRenderingGroupSlot(draft, groupNamePatch.renderingGroupId);
550
+ slot.name = readNonEmptyString(value, slot.name);
551
+ return;
552
+ }
553
+ const alphaPresetPatch = parseEditorSceneRenderingAlphaPresetPatchPath(path);
554
+ if (alphaPresetPatch) {
555
+ const slot = ensureRenderingGroupSlot(draft, alphaPresetPatch.renderingGroupId);
556
+ const preset = slot.alphaIndexPresets[alphaPresetPatch.presetIndex];
557
+ if (!preset)
558
+ return;
559
+ if (alphaPresetPatch.field === 'name') {
560
+ preset.name = readNonEmptyString(value, preset.name);
561
+ }
562
+ else {
563
+ preset.alphaIndex = readFiniteNumber(value, preset.alphaIndex);
564
+ slot.alphaIndexPresets = normalizeEditorSceneRenderingAlphaIndexPresets(slot.alphaIndexPresets, []);
565
+ }
566
+ return;
567
+ }
252
568
  const globalVolume = ensureObject(draft, 'globalVolume');
253
569
  if (path === 'globalVolume.enabled') {
254
570
  globalVolume.enabled = value === true;
@@ -345,7 +661,142 @@ function applyAllowedRenderingPatch(draft, path, value) {
345
661
  ensureObject(ensureObject(globalVolume, 'postProcessing'), 'bloom').scale = readPositiveNumber(value, 0.5);
346
662
  return;
347
663
  }
348
- const planar = ensureObject(ensureObject(draft, 'shadows'), 'planar');
664
+ const shadows = ensureObject(draft, 'shadows');
665
+ if (path === 'shadows.defaultMode') {
666
+ shadows.defaultMode = readResolvedShadowMode(value, 'none');
667
+ return;
668
+ }
669
+ const blob = ensureObject(shadows, 'blob');
670
+ if (path === 'shadows.blob.enabled') {
671
+ blob.enabled = value === true;
672
+ return;
673
+ }
674
+ if (path === 'shadows.blob.appearance.color') {
675
+ const appearance = ensureObject(blob, 'appearance');
676
+ const current = readRgba(readRecord(appearance.color), { r: 0, g: 0, b: 0, a: 0.35 });
677
+ const next = readRecord(value);
678
+ appearance.color = {
679
+ r: readClampedNumber(next.r, current.r, 0, 1),
680
+ g: readClampedNumber(next.g, current.g, 0, 1),
681
+ b: readClampedNumber(next.b, current.b, 0, 1),
682
+ a: readClampedNumber(next.a, current.a, 0, 1),
683
+ };
684
+ return;
685
+ }
686
+ if (path === 'shadows.blob.appearance.color.a') {
687
+ const appearance = ensureObject(blob, 'appearance');
688
+ const current = readRgba(readRecord(appearance.color), { r: 0, g: 0, b: 0, a: 0.35 });
689
+ appearance.color = {
690
+ ...current,
691
+ a: readClampedNumber(value, current.a, 0, 1),
692
+ };
693
+ return;
694
+ }
695
+ if (path === 'shadows.blob.appearance.edgeSoftness') {
696
+ ensureObject(blob, 'appearance').edgeSoftness = readClampedNumber(value, 0.55, 0, 0.98);
697
+ return;
698
+ }
699
+ if (path === 'shadows.blob.plane.height') {
700
+ ensureObject(blob, 'plane').height = readFiniteNumber(value, 0);
701
+ return;
702
+ }
703
+ if (path === 'shadows.blob.plane.yOffset') {
704
+ ensureObject(blob, 'plane').yOffset = readNonNegativeNumber(value, 0.08);
705
+ return;
706
+ }
707
+ if (path === 'shadows.blob.size.sizeMultiplier') {
708
+ ensureObject(blob, 'size').sizeMultiplier = readNonNegativeNumber(value, 1.25);
709
+ return;
710
+ }
711
+ if (path === 'shadows.blob.size.minSize') {
712
+ ensureObject(blob, 'size').minSize = readNonNegativeNumber(value, 0.25);
713
+ return;
714
+ }
715
+ if (path === 'shadows.blob.size.maxSize') {
716
+ ensureObject(blob, 'size').maxSize = readPositiveNumber(value, 20);
717
+ return;
718
+ }
719
+ const staticProjected = ensureObject(shadows, 'staticProjected');
720
+ if (path === 'shadows.staticProjected.enabled') {
721
+ staticProjected.enabled = value === true;
722
+ return;
723
+ }
724
+ if (path === 'shadows.staticProjected.appearance.color') {
725
+ const appearance = ensureObject(staticProjected, 'appearance');
726
+ const current = readRgba(readRecord(appearance.color), { r: 0, g: 0, b: 0, a: 0.35 });
727
+ const next = readRecord(value);
728
+ appearance.color = {
729
+ r: readClampedNumber(next.r, current.r, 0, 1),
730
+ g: readClampedNumber(next.g, current.g, 0, 1),
731
+ b: readClampedNumber(next.b, current.b, 0, 1),
732
+ a: readClampedNumber(next.a, current.a, 0, 1),
733
+ };
734
+ return;
735
+ }
736
+ if (path === 'shadows.staticProjected.appearance.color.a') {
737
+ const appearance = ensureObject(staticProjected, 'appearance');
738
+ const current = readRgba(readRecord(appearance.color), { r: 0, g: 0, b: 0, a: 0.35 });
739
+ appearance.color = {
740
+ ...current,
741
+ a: readClampedNumber(value, current.a, 0, 1),
742
+ };
743
+ return;
744
+ }
745
+ if (path === 'shadows.staticProjected.plane.height') {
746
+ ensureObject(staticProjected, 'plane').height = readFiniteNumber(value, 0);
747
+ return;
748
+ }
749
+ if (path === 'shadows.staticProjected.plane.yOffset') {
750
+ ensureObject(staticProjected, 'plane').yOffset = readNonNegativeNumber(value, 0.08);
751
+ return;
752
+ }
753
+ if (path === 'shadows.staticProjected.bake.resolution') {
754
+ ensureObject(staticProjected, 'bake').resolution = readPositiveNumber(value, 2048);
755
+ return;
756
+ }
757
+ if (path === 'shadows.staticProjected.bake.padding') {
758
+ ensureObject(staticProjected, 'bake').padding = readNonNegativeNumber(value, 0.15);
759
+ return;
760
+ }
761
+ if (path === 'shadows.staticProjected.bake.blur') {
762
+ ensureObject(staticProjected, 'bake').blur = readNonNegativeNumber(value, 0);
763
+ return;
764
+ }
765
+ if (path === 'shadows.staticProjected.bake.maxSize') {
766
+ const bake = ensureObject(staticProjected, 'bake');
767
+ const spatialChunkSize = readPositiveNumber(value, 16);
768
+ bake.maxSize = spatialChunkSize;
769
+ bake.spatialChunkSize = spatialChunkSize;
770
+ return;
771
+ }
772
+ if (path === 'shadows.staticProjected.bake.texelsPerMeter') {
773
+ ensureObject(staticProjected, 'bake').texelsPerMeter = readPositiveNumber(value, 256);
774
+ return;
775
+ }
776
+ if (path === 'shadows.staticProjected.bake.atlasSize') {
777
+ ensureObject(staticProjected, 'bake').atlasSize = readPositiveNumber(value, 4096);
778
+ return;
779
+ }
780
+ if (path === 'shadows.staticProjected.bake.maxAtlasPages') {
781
+ ensureObject(staticProjected, 'bake').maxAtlasPages = readPositiveNumber(value, 8);
782
+ return;
783
+ }
784
+ if (path === 'shadows.staticProjected.bake.sdfRadiusPx') {
785
+ ensureObject(staticProjected, 'bake').sdfRadiusPx = readNonNegativeNumber(value, 8);
786
+ return;
787
+ }
788
+ if (path === 'shadows.staticProjected.bake.spatialChunkSize') {
789
+ const bake = ensureObject(staticProjected, 'bake');
790
+ const spatialChunkSize = readPositiveNumber(value, 16);
791
+ bake.spatialChunkSize = spatialChunkSize;
792
+ bake.maxSize = spatialChunkSize;
793
+ return;
794
+ }
795
+ if (path === 'shadows.staticProjected.bake.targetChunkCount') {
796
+ ensureObject(staticProjected, 'bake').targetChunkCount = readPositiveNumber(value, 64);
797
+ return;
798
+ }
799
+ const planar = ensureObject(shadows, 'planar');
349
800
  if (path === 'shadows.planar.enabled') {
350
801
  planar.enabled = value === true;
351
802
  return;
@@ -443,6 +894,54 @@ function ensureObject(target, key) {
443
894
  }
444
895
  return current;
445
896
  }
897
+ function ensureRenderingGroupsProfileDraft(target) {
898
+ const normalized = normalizeEditorSceneRenderingGroupsProfile(target.renderingGroups);
899
+ const draft = JSON.parse(JSON.stringify(normalized));
900
+ target.renderingGroups = draft;
901
+ return draft;
902
+ }
903
+ function ensureRenderingGroupSlot(target, renderingGroupId) {
904
+ const renderingGroups = ensureRenderingGroupsProfileDraft(target);
905
+ return renderingGroups.slots.find((slot) => slot.renderingGroupId === renderingGroupId)
906
+ ?? renderingGroups.slots[renderingGroupId];
907
+ }
908
+ function appendEditorSceneRenderingAlphaPreset(target, renderingGroupId) {
909
+ const slot = ensureRenderingGroupSlot(target, renderingGroupId);
910
+ let alphaIndex = slot.alphaIndexPresets.length > 0
911
+ ? Math.max(...slot.alphaIndexPresets.map(preset => preset.alphaIndex)) + 100
912
+ : 0;
913
+ const used = new Set(slot.alphaIndexPresets.map(preset => preset.alphaIndex));
914
+ while (used.has(alphaIndex))
915
+ alphaIndex += 100;
916
+ slot.alphaIndexPresets.push({
917
+ name: `新顺序 ${slot.alphaIndexPresets.length + 1}`,
918
+ alphaIndex,
919
+ });
920
+ return slot.alphaIndexPresets.length - 1;
921
+ }
922
+ function removeEditorSceneRenderingAlphaPreset(target, renderingGroupId, presetIndex) {
923
+ const slot = ensureRenderingGroupSlot(target, renderingGroupId);
924
+ if (presetIndex < 0 || presetIndex >= slot.alphaIndexPresets.length)
925
+ return false;
926
+ slot.alphaIndexPresets.splice(presetIndex, 1);
927
+ return true;
928
+ }
929
+ function parseEditorSceneRenderingGroupNamePatchPath(path) {
930
+ const match = path.match(/^renderingGroups\.slots\.(0|1|2|3)\.name$/);
931
+ if (!match)
932
+ return null;
933
+ return { renderingGroupId: Number(match[1]) };
934
+ }
935
+ function parseEditorSceneRenderingAlphaPresetPatchPath(path) {
936
+ const match = path.match(/^renderingGroups\.slots\.(0|1|2|3)\.alphaIndexPresets\.(\d+)\.(name|alphaIndex)$/);
937
+ if (!match)
938
+ return null;
939
+ return {
940
+ renderingGroupId: Number(match[1]),
941
+ presetIndex: Number(match[2]),
942
+ field: match[3],
943
+ };
944
+ }
446
945
  function readRecord(value) {
447
946
  return value && typeof value === 'object' && !Array.isArray(value)
448
947
  ? value
@@ -482,9 +981,20 @@ function readStringOrNull(value) {
482
981
  const text = typeof value === 'string' ? value.trim() : '';
483
982
  return text || null;
484
983
  }
984
+ function readNonEmptyString(value, fallback) {
985
+ const text = typeof value === 'string' ? value.trim() : '';
986
+ return text || fallback;
987
+ }
485
988
  function readBoolean(value, fallback) {
486
989
  return typeof value === 'boolean' ? value : fallback;
487
990
  }
991
+ function readRenderingGroupId(value) {
992
+ return value === 0 || value === 1 || value === 2 || value === 3 ? value : null;
993
+ }
994
+ function readPresetIndex(value) {
995
+ const index = typeof value === 'number' && Number.isInteger(value) ? value : null;
996
+ return index != null && index >= 0 ? index : null;
997
+ }
488
998
  function readToneMappingType(value, fallback) {
489
999
  return value === 'standard' || value === 'aces' || value === 'khr-pbr-neutral' ? value : fallback;
490
1000
  }
@@ -494,6 +1004,11 @@ function readSamples(value, fallback) {
494
1004
  function readPlaneHeightMode(value, fallback) {
495
1005
  return value === 'fixed' || value === 'receiver' ? value : fallback;
496
1006
  }
1007
+ function readResolvedShadowMode(value, fallback) {
1008
+ return value === 'none' || value === 'blob' || value === 'static' || value === 'planar' || value === 'dynamic'
1009
+ ? value
1010
+ : fallback;
1011
+ }
497
1012
  function readFiniteNumber(value, fallback) {
498
1013
  return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
499
1014
  }