@woosh/meep-engine 3.14.4 → 3.14.6

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 (717) hide show
  1. package/README.md +6 -0
  2. package/editor/Editor.d.ts +162 -0
  3. package/editor/Editor.d.ts.map +1 -0
  4. package/editor/EditorCameraNavigation.d.ts +22 -0
  5. package/editor/EditorCameraNavigation.d.ts.map +1 -0
  6. package/editor/EditorKeyMap.d.ts +28 -0
  7. package/editor/EditorKeyMap.d.ts.map +1 -0
  8. package/editor/SelectionVisualizer.d.ts +37 -0
  9. package/editor/SelectionVisualizer.d.ts.map +1 -0
  10. package/editor/actions/concrete/ActionInvalidateSampler.d.ts +18 -0
  11. package/editor/actions/concrete/ActionInvalidateSampler.d.ts.map +1 -0
  12. package/editor/actions/concrete/ActionUpdateTexture.d.ts +12 -0
  13. package/editor/actions/concrete/ActionUpdateTexture.d.ts.map +1 -0
  14. package/editor/actions/concrete/ActionUpdateTexture.js +1 -1
  15. package/editor/actions/concrete/ArrayCopyAction.d.ts +20 -0
  16. package/editor/actions/concrete/ArrayCopyAction.d.ts.map +1 -0
  17. package/editor/actions/concrete/ComponentAddAction.d.ts +15 -0
  18. package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -0
  19. package/editor/actions/concrete/ComponentRemoveAction.d.ts +11 -0
  20. package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -0
  21. package/editor/actions/concrete/EntityCreateAction.d.ts +18 -0
  22. package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -0
  23. package/editor/actions/concrete/EntityRemoveAction.d.ts +11 -0
  24. package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -0
  25. package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +47 -0
  26. package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts.map +1 -0
  27. package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts +38 -0
  28. package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +1 -0
  29. package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts +23 -0
  30. package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +1 -0
  31. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +32 -0
  32. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -0
  33. package/editor/actions/concrete/SelectionAddAction.d.ts +19 -0
  34. package/editor/actions/concrete/SelectionAddAction.d.ts.map +1 -0
  35. package/editor/actions/concrete/SelectionClearAction.d.ts +9 -0
  36. package/editor/actions/concrete/SelectionClearAction.d.ts.map +1 -0
  37. package/editor/actions/concrete/SelectionRemoveAction.d.ts +10 -0
  38. package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +1 -0
  39. package/editor/actions/concrete/TransformModifyAction.d.ts +17 -0
  40. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -0
  41. package/editor/actions/concrete/WriteGridValueAction.d.ts +14 -0
  42. package/editor/actions/concrete/WriteGridValueAction.d.ts.map +1 -0
  43. package/editor/camera/camera_framing.d.ts +33 -0
  44. package/editor/camera/camera_framing.d.ts.map +1 -0
  45. package/editor/clipboard.d.ts +19 -0
  46. package/editor/clipboard.d.ts.map +1 -0
  47. package/editor/ecs/EditorEntity.d.ts +16 -0
  48. package/editor/ecs/EditorEntity.d.ts.map +1 -0
  49. package/editor/ecs/EditorEntitySystem.d.ts +8 -0
  50. package/editor/ecs/EditorEntitySystem.d.ts.map +1 -0
  51. package/editor/ecs/component/TypeEditor.d.ts +7 -1
  52. package/editor/ecs/component/TypeEditor.d.ts.map +1 -1
  53. package/editor/ecs/component/TypeEditor.js +5 -0
  54. package/editor/ecs/component/editors/ColorEditor.d.ts +7 -0
  55. package/editor/ecs/component/editors/ColorEditor.d.ts.map +1 -0
  56. package/editor/ecs/component/editors/HTMLElementEditor.d.ts +7 -0
  57. package/editor/ecs/component/editors/HTMLElementEditor.d.ts.map +1 -0
  58. package/editor/ecs/component/editors/ImagePathEditor.d.ts +7 -0
  59. package/editor/ecs/component/editors/ImagePathEditor.d.ts.map +1 -0
  60. package/editor/ecs/component/editors/LargeStringEditor.d.ts +16 -0
  61. package/editor/ecs/component/editors/LargeStringEditor.d.ts.map +1 -0
  62. package/editor/ecs/component/editors/NumericIntervalEditor.d.ts +7 -0
  63. package/editor/ecs/component/editors/NumericIntervalEditor.d.ts.map +1 -0
  64. package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts +7 -0
  65. package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts.map +1 -0
  66. package/editor/ecs/component/editors/ObservedEnumEditor.d.ts +7 -0
  67. package/editor/ecs/component/editors/ObservedEnumEditor.d.ts.map +1 -0
  68. package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts +7 -0
  69. package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts.map +1 -0
  70. package/editor/ecs/component/editors/ObservedStringEditor.d.ts +7 -0
  71. package/editor/ecs/component/editors/ObservedStringEditor.d.ts.map +1 -0
  72. package/editor/ecs/component/editors/Sampler2DEditor.d.ts +7 -0
  73. package/editor/ecs/component/editors/Sampler2DEditor.d.ts.map +1 -0
  74. package/editor/ecs/component/editors/collection/ListEditor.d.ts +8 -0
  75. package/editor/ecs/component/editors/collection/ListEditor.d.ts.map +1 -0
  76. package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts +12 -0
  77. package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts.map +1 -0
  78. package/editor/ecs/component/editors/common/EnumEditor.d.ts +8 -0
  79. package/editor/ecs/component/editors/common/EnumEditor.d.ts.map +1 -0
  80. package/editor/ecs/component/editors/common/makeV3_editor.d.ts +15 -0
  81. package/editor/ecs/component/editors/common/makeV3_editor.d.ts.map +1 -0
  82. package/editor/ecs/component/editors/common/noEditor.d.ts +3 -0
  83. package/editor/ecs/component/editors/common/noEditor.d.ts.map +1 -0
  84. package/editor/ecs/component/editors/common/two_way_sync.d.ts +22 -0
  85. package/editor/ecs/component/editors/common/two_way_sync.d.ts.map +1 -0
  86. package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts +7 -0
  87. package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts.map +1 -0
  88. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts +14 -0
  89. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts.map +1 -0
  90. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +20 -0
  91. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +1 -0
  92. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +12 -0
  93. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +1 -0
  94. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +14 -0
  95. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +1 -0
  96. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +52 -0
  97. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +1 -0
  98. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +47 -0
  99. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +1 -0
  100. package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts +21 -0
  101. package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts.map +1 -0
  102. package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts +26 -0
  103. package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts.map +1 -0
  104. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +16 -0
  105. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +1 -0
  106. package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts +15 -0
  107. package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts.map +1 -0
  108. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +42 -0
  109. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -0
  110. package/editor/ecs/component/editors/ecs/TransformEditor.d.ts +20 -0
  111. package/editor/ecs/component/editors/ecs/TransformEditor.d.ts.map +1 -0
  112. package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts +8 -0
  113. package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts.map +1 -0
  114. package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts +19 -0
  115. package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts.map +1 -0
  116. package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts +27 -0
  117. package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts.map +1 -0
  118. package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts +16 -0
  119. package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts.map +1 -0
  120. package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts +19 -0
  121. package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts.map +1 -0
  122. package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts +18 -0
  123. package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts.map +1 -0
  124. package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts +6 -0
  125. package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts.map +1 -0
  126. package/editor/ecs/component/editors/geom/Vector1Editor.d.ts +7 -0
  127. package/editor/ecs/component/editors/geom/Vector1Editor.d.ts.map +1 -0
  128. package/editor/ecs/component/editors/geom/Vector2Editor.d.ts +6 -0
  129. package/editor/ecs/component/editors/geom/Vector2Editor.d.ts.map +1 -0
  130. package/editor/ecs/component/editors/geom/Vector3Editor.d.ts +6 -0
  131. package/editor/ecs/component/editors/geom/Vector3Editor.d.ts.map +1 -0
  132. package/editor/ecs/component/editors/geom/Vector4Editor.d.ts +6 -0
  133. package/editor/ecs/component/editors/geom/Vector4Editor.d.ts.map +1 -0
  134. package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts +8 -0
  135. package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts.map +1 -0
  136. package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts +7 -0
  137. package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts.map +1 -0
  138. package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts +7 -0
  139. package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts.map +1 -0
  140. package/editor/ecs/component/editors/primitive/NumberEditor.d.ts +8 -0
  141. package/editor/ecs/component/editors/primitive/NumberEditor.d.ts.map +1 -0
  142. package/editor/ecs/component/editors/primitive/StringEditor.d.ts +7 -0
  143. package/editor/ecs/component/editors/primitive/StringEditor.d.ts.map +1 -0
  144. package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts +28 -0
  145. package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts.map +1 -0
  146. package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts +29 -0
  147. package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts.map +1 -0
  148. package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts +28 -0
  149. package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts.map +1 -0
  150. package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts +41 -0
  151. package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts.map +1 -0
  152. package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts +31 -0
  153. package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts.map +1 -0
  154. package/editor/ecs/component/prototypeObjectEditor.d.ts +2 -0
  155. package/editor/ecs/component/prototypeObjectEditor.d.ts.map +1 -0
  156. package/editor/ecs/component/registerBasicTypeEditors.d.ts +11 -0
  157. package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -0
  158. package/editor/ecs/component/registerEngineComponentEditors.d.ts +8 -0
  159. package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -0
  160. package/editor/enableEditor.d.ts +14 -0
  161. package/editor/enableEditor.d.ts.map +1 -0
  162. package/editor/entity_world_bounds.d.ts +17 -0
  163. package/editor/entity_world_bounds.d.ts.map +1 -0
  164. package/editor/library/MeshLibrary.d.ts +13 -0
  165. package/editor/library/MeshLibrary.d.ts.map +1 -0
  166. package/editor/particles/lut_ops.d.ts +34 -0
  167. package/editor/particles/lut_ops.d.ts.map +1 -0
  168. package/editor/particles/particleEditEvents.d.ts +11 -0
  169. package/editor/particles/particleEditEvents.d.ts.map +1 -0
  170. package/editor/particles/rebuildParticleEmitter.d.ts +11 -0
  171. package/editor/particles/rebuildParticleEmitter.d.ts.map +1 -0
  172. package/editor/persistence/EditorLayoutStore.d.ts +30 -0
  173. package/editor/persistence/EditorLayoutStore.d.ts.map +1 -0
  174. package/editor/persistence/SceneMetadata.d.ts +38 -0
  175. package/editor/persistence/SceneMetadata.d.ts.map +1 -0
  176. package/editor/persistence/SceneSlotManager.d.ts +40 -0
  177. package/editor/persistence/SceneSlotManager.d.ts.map +1 -0
  178. package/editor/persistence/buildNewSceneDataset.d.ts +10 -0
  179. package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -0
  180. package/editor/persistence/files.d.ts +24 -0
  181. package/editor/persistence/files.d.ts.map +1 -0
  182. package/editor/persistence/scene_import.d.ts +45 -0
  183. package/editor/persistence/scene_import.d.ts.map +1 -0
  184. package/editor/persistence/scene_serialization.d.ts +36 -0
  185. package/editor/persistence/scene_serialization.d.ts.map +1 -0
  186. package/editor/persistence/string_buffer_codec.d.ts +20 -0
  187. package/editor/persistence/string_buffer_codec.d.ts.map +1 -0
  188. package/editor/process/DisableGameUIProcess.d.ts +8 -0
  189. package/editor/process/DisableGameUIProcess.d.ts.map +1 -0
  190. package/editor/process/EditorProcess.d.ts +19 -0
  191. package/editor/process/EditorProcess.d.ts.map +1 -0
  192. package/editor/process/GridDisplayProcess.d.ts +35 -0
  193. package/editor/process/GridDisplayProcess.d.ts.map +1 -0
  194. package/editor/process/ObstacleGridDisplayProcess.d.ts +13 -0
  195. package/editor/process/ObstacleGridDisplayProcess.d.ts.map +1 -0
  196. package/editor/process/ParticleEmitterRebuildProcess.d.ts +66 -0
  197. package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +1 -0
  198. package/editor/process/ProcessEngine.d.ts +30 -0
  199. package/editor/process/ProcessEngine.d.ts.map +1 -0
  200. package/editor/process/SymbolicDisplayProcess.d.ts +23 -0
  201. package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -0
  202. package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts +17 -0
  203. package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts.map +1 -0
  204. package/editor/process/symbolic/CameraSymbolicDisplay.d.ts +25 -0
  205. package/editor/process/symbolic/CameraSymbolicDisplay.d.ts.map +1 -0
  206. package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts +19 -0
  207. package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts.map +1 -0
  208. package/editor/process/symbolic/LightSymbolicDisplay.d.ts +19 -0
  209. package/editor/process/symbolic/LightSymbolicDisplay.d.ts.map +1 -0
  210. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +18 -0
  211. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +1 -0
  212. package/editor/process/symbolic/PathSymbolicDisplay.d.ts +20 -0
  213. package/editor/process/symbolic/PathSymbolicDisplay.d.ts.map +1 -0
  214. package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts +25 -0
  215. package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts.map +1 -0
  216. package/editor/process/symbolic/SymbolicDisplay.d.ts +48 -0
  217. package/editor/process/symbolic/SymbolicDisplay.d.ts.map +1 -0
  218. package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts +13 -0
  219. package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts.map +1 -0
  220. package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts +18 -0
  221. package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts.map +1 -0
  222. package/editor/prototypeEditorShell.d.ts +13 -0
  223. package/editor/prototypeEditorShell.d.ts.map +1 -0
  224. package/editor/selection/editor_pick.d.ts +43 -0
  225. package/editor/selection/editor_pick.d.ts.map +1 -0
  226. package/editor/selection/screen_rect_frustum.d.ts +32 -0
  227. package/editor/selection/screen_rect_frustum.d.ts.map +1 -0
  228. package/editor/templates/entity_templates.d.ts +19 -0
  229. package/editor/templates/entity_templates.d.ts.map +1 -0
  230. package/editor/tools/GridPaintTool.d.ts +18 -0
  231. package/editor/tools/GridPaintTool.d.ts.map +1 -0
  232. package/editor/tools/SelectionTool.d.ts +38 -0
  233. package/editor/tools/SelectionTool.d.ts.map +1 -0
  234. package/editor/tools/SelectionTool.js +2 -2
  235. package/editor/tools/TransformToolV2.d.ts +70 -0
  236. package/editor/tools/TransformToolV2.d.ts.map +1 -0
  237. package/editor/tools/engine/Tool.d.ts +88 -0
  238. package/editor/tools/engine/Tool.d.ts.map +1 -0
  239. package/editor/tools/engine/ToolEngine.d.ts +22 -0
  240. package/editor/tools/engine/ToolEngine.d.ts.map +1 -0
  241. package/editor/tools/engine/ToolState.d.ts +7 -0
  242. package/editor/tools/engine/ToolState.d.ts.map +1 -0
  243. package/editor/tools/paint/TerrainHeightPaintTool.d.ts +18 -0
  244. package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -0
  245. package/editor/tools/paint/TerrainPaintTool.d.ts +82 -0
  246. package/editor/tools/paint/TerrainPaintTool.d.ts.map +1 -0
  247. package/editor/tools/paint/TerrainTexturePaintTool.d.ts +19 -0
  248. package/editor/tools/paint/TerrainTexturePaintTool.d.ts.map +1 -0
  249. package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts +139 -0
  250. package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts.map +1 -0
  251. package/editor/tools/v2/GizmoNode.d.ts +21 -0
  252. package/editor/tools/v2/GizmoNode.d.ts.map +1 -0
  253. package/editor/tools/v2/TransformControls.d.ts +219 -0
  254. package/editor/tools/v2/TransformControls.d.ts.map +1 -0
  255. package/editor/tools/v2/TransformMode.d.ts +7 -0
  256. package/editor/tools/v2/TransformMode.d.ts.map +1 -0
  257. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts +37 -0
  258. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -0
  259. package/editor/tools/v2/handle/gizmo_draw.d.ts +14 -0
  260. package/editor/tools/v2/handle/gizmo_draw.d.ts.map +1 -0
  261. package/editor/tools/v2/handle/gizmo_handles.d.ts +160 -0
  262. package/editor/tools/v2/handle/gizmo_handles.d.ts.map +1 -0
  263. package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts +103 -0
  264. package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts.map +1 -0
  265. package/editor/view/GridPickCoordinateView.d.ts +22 -0
  266. package/editor/view/GridPickCoordinateView.d.ts.map +1 -0
  267. package/editor/view/ecs/ComponentControlView.d.ts +24 -0
  268. package/editor/view/ecs/ComponentControlView.d.ts.map +1 -0
  269. package/editor/view/ecs/EntityEditor.d.ts +25 -0
  270. package/editor/view/ecs/EntityEditor.d.ts.map +1 -0
  271. package/editor/view/ecs/EntityList.d.ts +22 -0
  272. package/editor/view/ecs/EntityList.d.ts.map +1 -0
  273. package/editor/view/ecs/HierarchicalEntityListView.d.ts +25 -0
  274. package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -0
  275. package/editor/view/ecs/components/DatGuiController.d.ts +2 -0
  276. package/editor/view/ecs/components/DatGuiController.d.ts.map +1 -0
  277. package/editor/view/ecs/components/color/GaugeView.d.ts +9 -5
  278. package/editor/view/ecs/components/color/GaugeView.d.ts.map +1 -1
  279. package/editor/view/ecs/components/color/GaugeView.js +4 -4
  280. package/editor/view/ecs/components/common/NumberController.d.ts +9 -5
  281. package/editor/view/ecs/components/common/NumberController.d.ts.map +1 -1
  282. package/editor/view/ecs/components/common/NumberController.js +4 -4
  283. package/editor/view/ecs/components/common/NumericIntervalController.d.ts +10 -0
  284. package/editor/view/ecs/components/common/NumericIntervalController.d.ts.map +1 -0
  285. package/editor/view/ecs/components/common/TextController.d.ts.map +1 -1
  286. package/editor/view/library/MeshLibraryView.d.ts +16 -0
  287. package/editor/view/library/MeshLibraryView.d.ts.map +1 -0
  288. package/editor/view/library/mesh_library_drag.d.ts +21 -0
  289. package/editor/view/library/mesh_library_drag.d.ts.map +1 -0
  290. package/editor/view/library/model_thumbnail_source.d.ts +12 -0
  291. package/editor/view/library/model_thumbnail_source.d.ts.map +1 -0
  292. package/editor/view/makeEntityDecorators.d.ts +6 -0
  293. package/editor/view/makeEntityDecorators.d.ts.map +1 -0
  294. package/editor/view/node-graph/NodeGraphCamera.d.ts.map +1 -1
  295. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  296. package/editor/view/node-graph/NodeGraphSelection.d.ts.map +1 -1
  297. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  298. package/editor/view/node-graph/NodeView.d.ts.map +1 -1
  299. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  300. package/editor/view/node-graph/actions/ConnectionCreateAction.d.ts.map +1 -1
  301. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
  302. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
  303. package/editor/view/node-graph/actions/NodeParameterSetAction.d.ts.map +1 -1
  304. package/editor/view/node-graph/actions/NodesMoveAction.d.ts.map +1 -1
  305. package/editor/view/node-graph/actions/SelectionSetAction.d.ts.map +1 -1
  306. package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
  307. package/editor/view/particles/ColorLutGradientView.d.ts +19 -0
  308. package/editor/view/particles/ColorLutGradientView.d.ts.map +1 -0
  309. package/editor/view/particles/ScalarLutCurveView.d.ts +19 -0
  310. package/editor/view/particles/ScalarLutCurveView.d.ts.map +1 -0
  311. package/editor/view/prepareMeshLibrary.d.ts +7 -0
  312. package/editor/view/prepareMeshLibrary.d.ts.map +1 -0
  313. package/editor/view/process/ProcessView.d.ts +14 -0
  314. package/editor/view/process/ProcessView.d.ts.map +1 -0
  315. package/editor/view/shell/EditorShellView.d.ts +18 -0
  316. package/editor/view/shell/EditorShellView.d.ts.map +1 -0
  317. package/editor/view/shell/SceneTreePanelView.d.ts +17 -0
  318. package/editor/view/shell/SceneTreePanelView.d.ts.map +1 -0
  319. package/editor/view/shell/ViewportPanelView.d.ts +18 -0
  320. package/editor/view/shell/ViewportPanelView.d.ts.map +1 -0
  321. package/editor/view/tools/ToolSettingsView.d.ts +22 -0
  322. package/editor/view/tools/ToolSettingsView.d.ts.map +1 -0
  323. package/editor/view/tools/ToolView.d.ts +13 -0
  324. package/editor/view/tools/ToolView.d.ts.map +1 -0
  325. package/editor/view/v2/SplitView.d.ts +2 -0
  326. package/editor/view/v2/SplitView.d.ts.map +1 -0
  327. package/package.json +9 -11
  328. package/samples/engine/README.md +113 -0
  329. package/samples/engine/first-scene/index.html +32 -0
  330. package/samples/engine/first-scene/main.js +152 -0
  331. package/src/core/assert.d.ts +2 -2
  332. package/src/core/binary/BitSet.d.ts +2 -2
  333. package/src/core/binary/BitSet.d.ts.map +1 -1
  334. package/src/core/binary/BitSet.js +1 -1
  335. package/src/core/bvh2/bvh3/BVH.d.ts +4 -0
  336. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  337. package/src/core/bvh2/bvh3/BVH.js +4 -0
  338. package/src/core/bvh2/bvh3/BvhClient.d.ts +4 -0
  339. package/src/core/bvh2/bvh3/BvhClient.d.ts.map +1 -1
  340. package/src/core/bvh2/bvh3/BvhClient.js +4 -0
  341. package/src/core/collection/array/array_sort_quick.d.ts +1 -1
  342. package/src/core/collection/list/List.d.ts +7 -3
  343. package/src/core/collection/list/List.d.ts.map +1 -1
  344. package/src/core/collection/list/List.js +6 -2
  345. package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
  346. package/src/core/collection/table/RowFirstTableSpec.js +0 -4
  347. package/src/core/color/Color.d.ts +1 -0
  348. package/src/core/color/Color.d.ts.map +1 -1
  349. package/src/core/color/Color.js +4 -0
  350. package/src/core/events/signal/SignalBinding.d.ts +4 -0
  351. package/src/core/events/signal/SignalBinding.d.ts.map +1 -1
  352. package/src/core/events/signal/SignalBinding.js +4 -0
  353. package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts +5 -1
  354. package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
  355. package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +4 -0
  356. package/src/core/geom/3d/SurfacePoint3.d.ts +2 -2
  357. package/src/core/geom/3d/SurfacePoint3.d.ts.map +1 -1
  358. package/src/core/geom/3d/SurfacePoint3.js +1 -1
  359. package/src/core/geom/3d/aabb/AABB3.d.ts +63 -7
  360. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  361. package/src/core/geom/3d/aabb/AABB3.js +17 -3
  362. package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts +30 -0
  363. package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts.map +1 -0
  364. package/src/core/geom/3d/mat4/m4_rigidity_defect.js +71 -0
  365. package/src/core/geom/3d/plane/plane3_compute_intersection_objects.js +2 -2
  366. package/src/core/geom/3d/ray/Ray3.d.ts +4 -4
  367. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +10 -3
  368. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  369. package/src/core/geom/3d/shape/AbstractShape3D.js +9 -2
  370. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +2 -2
  371. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +1 -1
  372. package/src/core/geom/Vector1.d.ts +4 -0
  373. package/src/core/geom/Vector1.d.ts.map +1 -1
  374. package/src/core/geom/Vector1.js +4 -0
  375. package/src/core/geom/Vector2.d.ts +4 -0
  376. package/src/core/geom/Vector2.d.ts.map +1 -1
  377. package/src/core/geom/Vector2.js +4 -0
  378. package/src/core/geom/Vector3.d.ts +4 -0
  379. package/src/core/geom/Vector3.d.ts.map +1 -1
  380. package/src/core/geom/Vector3.js +4 -0
  381. package/src/core/geom/Vector4.d.ts +4 -0
  382. package/src/core/geom/Vector4.d.ts.map +1 -1
  383. package/src/core/geom/Vector4.js +4 -0
  384. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts +6 -2
  385. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
  386. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +4 -0
  387. package/src/core/geom/packing/miniball/Subspan.d.ts +4 -4
  388. package/src/core/geom/packing/miniball/Subspan.d.ts.map +1 -1
  389. package/src/core/geom/packing/miniball/Subspan.js +2 -2
  390. package/src/core/math/interval/NumericInterval.d.ts +4 -0
  391. package/src/core/math/interval/NumericInterval.d.ts.map +1 -1
  392. package/src/core/math/interval/NumericInterval.js +4 -0
  393. package/src/core/math/random/roundFair.d.ts +2 -2
  394. package/src/core/math/random/roundFair.d.ts.map +1 -1
  395. package/src/core/math/random/roundFair.js +1 -1
  396. package/src/core/model/BoundedValue.d.ts +4 -0
  397. package/src/core/model/BoundedValue.d.ts.map +1 -1
  398. package/src/core/model/BoundedValue.js +4 -0
  399. package/src/core/model/ObservedBoolean.d.ts +4 -0
  400. package/src/core/model/ObservedBoolean.d.ts.map +1 -1
  401. package/src/core/model/ObservedBoolean.js +4 -0
  402. package/src/core/model/ObservedInteger.d.ts +4 -0
  403. package/src/core/model/ObservedInteger.d.ts.map +1 -1
  404. package/src/core/model/ObservedInteger.js +4 -0
  405. package/src/core/model/ObservedString.d.ts +4 -0
  406. package/src/core/model/ObservedString.d.ts.map +1 -1
  407. package/src/core/model/ObservedString.js +4 -0
  408. package/src/core/model/stat/Stat.d.ts +7 -3
  409. package/src/core/model/stat/Stat.d.ts.map +1 -1
  410. package/src/core/model/stat/Stat.js +4 -0
  411. package/src/engine/Engine.d.ts.map +1 -1
  412. package/src/engine/Engine.js +65 -0
  413. package/src/engine/EngineHarness.d.ts +8 -1
  414. package/src/engine/EngineHarness.d.ts.map +1 -1
  415. package/src/engine/EngineHarness.js +10 -14
  416. package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts +2 -2
  417. package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts.map +1 -1
  418. package/src/engine/animation/clip/ecd_bind_animation_curve.js +4 -4
  419. package/src/engine/asset/loaders/async_traverse_three_object.d.ts +2 -2
  420. package/src/engine/asset/loaders/async_traverse_three_object.d.ts.map +1 -1
  421. package/src/engine/asset/loaders/async_traverse_three_object.js +1 -1
  422. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts +7 -3
  423. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts.map +1 -1
  424. package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.js +33 -3
  425. package/src/engine/control/first-person/DESIGN.md +20 -2
  426. package/src/engine/control/first-person/DESIGN_COLLISION.md +17 -0
  427. package/src/engine/control/first-person/collision/KinematicMover.d.ts +58 -11
  428. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  429. package/src/engine/control/first-person/collision/KinematicMover.js +97 -20
  430. package/src/engine/ecs/Entity.js +1 -1
  431. package/src/engine/ecs/EntityComponentDataset.d.ts +2 -2
  432. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  433. package/src/engine/ecs/EntityComponentDataset.js +1 -1
  434. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  435. package/src/engine/ecs/EntityManager.js +27 -3
  436. package/src/engine/ecs/animation/Animation.d.ts +17 -3
  437. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  438. package/src/engine/ecs/animation/Animation.js +26 -6
  439. package/src/engine/ecs/terrain/TerrainPreview.d.ts +4 -0
  440. package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
  441. package/src/engine/ecs/terrain/TerrainPreview.js +4 -0
  442. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +4 -4
  443. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  444. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +2 -2
  445. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts +3 -2
  446. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts.map +1 -1
  447. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js +25 -2
  448. package/src/engine/ecs/transform/Transform64.d.ts +4 -4
  449. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  450. package/src/engine/ecs/transform/Transform64.js +2 -2
  451. package/src/engine/graphics/ecs/decal/v2/Decal.d.ts +26 -0
  452. package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
  453. package/src/engine/graphics/ecs/decal/v2/Decal.js +26 -0
  454. package/src/engine/graphics/ecs/light/Light.d.ts +38 -1
  455. package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
  456. package/src/engine/graphics/ecs/light/Light.js +51 -1
  457. package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts +3 -3
  458. package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts.map +1 -1
  459. package/src/engine/graphics/ecs/mesh/copyToVector3.js +2 -2
  460. package/src/engine/graphics/ecs/mesh/setMesh.d.ts +2 -2
  461. package/src/engine/graphics/ecs/mesh/setMesh.d.ts.map +1 -1
  462. package/src/engine/graphics/ecs/mesh/setMesh.js +1 -1
  463. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +2 -2
  464. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +1 -1
  465. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +1 -1
  466. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +3 -3
  467. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +1 -1
  468. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +2 -2
  469. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +2 -2
  470. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +1 -1
  471. package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +1 -1
  472. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +2 -2
  473. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +1 -1
  474. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +1 -1
  475. package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts +2 -2
  476. package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts.map +1 -1
  477. package/src/engine/graphics/geometry/compute_geometry_polycount.js +1 -1
  478. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +3 -3
  479. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +1 -1
  480. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +2 -2
  481. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +4 -4
  482. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +1 -1
  483. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +3 -3
  484. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +3 -3
  485. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +1 -1
  486. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +2 -2
  487. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +4 -4
  488. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +1 -1
  489. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +3 -3
  490. package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts +2 -2
  491. package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts.map +1 -1
  492. package/src/engine/graphics/geometry/scaleGeometryToBox.js +1 -1
  493. package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts +2 -2
  494. package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts.map +1 -1
  495. package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.js +1 -1
  496. package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts +2 -2
  497. package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts.map +1 -1
  498. package/src/engine/graphics/impostors/octahedral/ImpostorDescription.js +1 -1
  499. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +4 -12
  500. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  501. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +2 -2
  502. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +5 -20
  503. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
  504. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +24 -24
  505. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
  506. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +16 -16
  507. package/src/engine/graphics/render/layers/RenderLayer.d.ts +4 -4
  508. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  509. package/src/engine/graphics/render/layers/RenderLayer.js +2 -2
  510. package/src/engine/graphics/render/make_bvh_visibility_builder.js +1 -1
  511. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +1 -1
  512. package/src/engine/graphics/render/visibility/VisibilityComputer.js +1 -1
  513. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts +2 -2
  514. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  515. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +1 -1
  516. package/src/engine/graphics3/DecalSystem.d.ts +8 -0
  517. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  518. package/src/engine/graphics3/DecalSystem.js +8 -0
  519. package/src/engine/graphics3/GraphicsEngine.d.ts +19 -8
  520. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  521. package/src/engine/graphics3/GraphicsEngine.js +22 -11
  522. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  523. package/src/engine/graphics3/LightSystem.js +11 -1
  524. package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts +4 -0
  525. package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts.map +1 -1
  526. package/src/engine/input/devices/gamepad/GamepadStickCalibration.js +4 -0
  527. package/src/engine/navigation/mesh/NavigationMesh.d.ts +90 -9
  528. package/src/engine/navigation/mesh/NavigationMesh.d.ts.map +1 -1
  529. package/src/engine/navigation/mesh/NavigationMesh.js +80 -8
  530. package/src/engine/network/NetworkSession.d.ts +60 -0
  531. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  532. package/src/engine/network/NetworkSession.js +141 -1
  533. package/src/engine/network/orchestrator/NetworkPeer.d.ts +56 -8
  534. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  535. package/src/engine/network/orchestrator/NetworkPeer.js +263 -67
  536. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +6 -1
  537. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  538. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +6 -0
  539. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +13 -7
  540. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  541. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +103 -138
  542. package/src/engine/network/replication/Replicator.d.ts +47 -6
  543. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  544. package/src/engine/network/replication/Replicator.js +362 -107
  545. package/src/engine/network/sim/ActionLog.d.ts +2 -0
  546. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  547. package/src/engine/network/sim/ActionLog.js +2 -0
  548. package/src/engine/network/sim/ActionRecordCursor.d.ts +82 -0
  549. package/src/engine/network/sim/ActionRecordCursor.d.ts.map +1 -0
  550. package/src/engine/network/sim/ActionRecordCursor.js +120 -0
  551. package/src/engine/network/sim/RewindEngine.d.ts.map +1 -1
  552. package/src/engine/network/sim/RewindEngine.js +13 -29
  553. package/src/engine/network/sim/SimActionExecutor.d.ts +2 -3
  554. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  555. package/src/engine/network/sim/SimActionExecutor.js +10 -11
  556. package/src/engine/physics/ecs/PhysicsSystem.d.ts +27 -0
  557. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  558. package/src/engine/physics/ecs/PhysicsSystem.js +27 -0
  559. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  560. package/src/engine/sound/SoundEngine.d.ts +24 -0
  561. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  562. package/src/engine/sound/SoundEngine.js +29 -11
  563. package/src/engine/sound/simulation/configureAcousticSimulation.d.ts +12 -4
  564. package/src/engine/sound/simulation/configureAcousticSimulation.d.ts.map +1 -1
  565. package/src/engine/sound/simulation/configureAcousticSimulation.js +10 -4
  566. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts +3 -1
  567. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts.map +1 -1
  568. package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.js +27 -1
  569. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +34 -0
  570. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
  571. package/src/engine/sound/simulation/render/ProbeReverbRenderer.js +61 -2
  572. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  573. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +9 -0
  574. package/src/shade/playground/particle_system/README.md +14 -3
  575. package/src/shade/playground/particle_system/index.html +1 -0
  576. package/src/shade/playground/particle_system/main.js +15 -2
  577. package/src/shade/playground/particle_system/particle_scene.d.ts +11 -2
  578. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  579. package/src/shade/playground/particle_system/particle_scene.js +164 -46
  580. package/src/shade/playground/skinned_mesh_soup/README.md +39 -18
  581. package/src/shade/playground/skinned_mesh_soup/index.html +9 -6
  582. package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
  583. package/src/shade/playground/skinned_mesh_soup/main.js +16 -13
  584. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +8 -2
  585. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
  586. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +23 -4
  587. package/src/shade/renderer/GraphicsContext.d.ts +1 -0
  588. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  589. package/src/shade/renderer/GraphicsContext.js +4 -0
  590. package/src/shade/renderer/Renderer.d.ts +1 -1
  591. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  592. package/src/shade/renderer/animation/GPUAnimationManager.js +1958 -1796
  593. package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +357 -0
  594. package/src/shade/renderer/animation/skin_bind_transform.d.ts +25 -0
  595. package/src/shade/renderer/animation/skin_bind_transform.d.ts.map +1 -0
  596. package/src/shade/renderer/animation/skin_bind_transform.js +33 -0
  597. package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +67 -0
  598. package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -0
  599. package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +199 -0
  600. package/src/shade/renderer/animation/skin_frame_defect.d.ts +34 -0
  601. package/src/shade/renderer/animation/skin_frame_defect.d.ts.map +1 -0
  602. package/src/shade/renderer/animation/skin_frame_defect.js +132 -0
  603. package/src/shade/renderer/animation/skin_joint_matrix.d.ts +24 -0
  604. package/src/shade/renderer/animation/skin_joint_matrix.d.ts.map +1 -0
  605. package/src/shade/renderer/animation/skin_joint_matrix.js +46 -0
  606. package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts +70 -0
  607. package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -0
  608. package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +216 -0
  609. package/src/shade/renderer/animation/skin_test_fixtures.d.ts +86 -0
  610. package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +1 -0
  611. package/src/shade/renderer/animation/skin_test_fixtures.js +250 -0
  612. package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +18 -4
  613. package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts.map +1 -1
  614. package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +18 -4
  615. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +13 -0
  616. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
  617. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +13 -0
  618. package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts +18 -0
  619. package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts.map +1 -1
  620. package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.js +18 -0
  621. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +4 -0
  622. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
  623. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.js +4 -0
  624. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts +12 -0
  625. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts.map +1 -1
  626. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js +13 -0
  627. package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
  628. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  629. package/src/shade/renderer/particles/DESIGN.md +71 -20
  630. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +29 -5
  631. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  632. package/src/shade/renderer/particles/GPUParticleSystem.js +61 -6
  633. package/src/shade/renderer/particles/ParticleConstants.d.ts +31 -0
  634. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  635. package/src/shade/renderer/particles/ParticleConstants.js +33 -0
  636. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +61 -0
  637. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -0
  638. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +179 -0
  639. package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts +63 -0
  640. package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts.map +1 -0
  641. package/src/shade/renderer/particles/coherence/particle_program_buckets.js +116 -0
  642. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +59 -0
  643. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -0
  644. package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +344 -0
  645. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +27 -5
  646. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  647. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +27 -5
  648. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +13 -1
  649. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +1 -1
  650. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +15 -1
  651. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
  652. package/src/shade/renderer/particles/data/chunk_particle_emitter.js +3 -0
  653. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +43 -0
  654. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -0
  655. package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +44 -0
  656. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +33 -59
  657. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  658. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +185 -118
  659. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +15 -10
  660. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  661. package/src/shade/renderer/particles/graph/compile_particle_graph.js +205 -170
  662. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +44 -0
  663. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -0
  664. package/src/shade/renderer/particles/graph/particle_graph_authoring.js +108 -0
  665. package/src/shade/renderer/particles/graph_particles.d.ts +39 -11
  666. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  667. package/src/shade/renderer/particles/graph_particles.js +60 -20
  668. package/src/shade/renderer/particles/particle_prototype.d.ts.map +1 -1
  669. package/src/shade/renderer/particles/particle_prototype.js +181 -180
  670. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +8 -1
  671. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  672. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +8 -1
  673. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +22 -2
  674. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
  675. package/src/shade/renderer/particles/runtime/ProgramArena.js +54 -3
  676. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +4 -4
  677. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  678. package/src/shade/renderer/particles/runtime/create_particle_effect.js +19 -19
  679. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  680. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +32 -14
  681. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +2 -23
  682. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  683. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +40 -11
  684. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +6 -17
  685. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  686. package/src/shade/renderer/particles/sort/shader_particle_sort.js +60 -9
  687. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +1 -1
  688. package/src/shade/renderer/scene/SkinnedMesh.d.ts +11 -0
  689. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  690. package/src/shade/renderer/scene/SkinnedMesh.js +11 -0
  691. package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts +33 -3
  692. package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts.map +1 -1
  693. package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.js +58 -37
  694. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts +1 -1
  695. package/src/view/DOM.d.ts +69 -0
  696. package/src/view/DOM.d.ts.map +1 -0
  697. package/src/view/DOM.js +2 -1
  698. package/src/view/common/LocalizedLabelView.d.ts +50 -0
  699. package/src/view/common/LocalizedLabelView.d.ts.map +1 -0
  700. package/src/view/controller/controls/GuiControl.d.ts +19 -0
  701. package/src/view/controller/controls/GuiControl.d.ts.map +1 -0
  702. package/src/view/elements/FrameRateView.d.ts +45 -0
  703. package/src/view/elements/FrameRateView.d.ts.map +1 -0
  704. package/src/view/elements/FrameRateView.js +131 -0
  705. package/src/view/elements/SliderView.d.ts +37 -0
  706. package/src/view/elements/SliderView.d.ts.map +1 -0
  707. package/src/view/elements/SliderView.js +71 -0
  708. package/src/view/elements/navigation/ViewStack.d.ts +1 -1
  709. package/src/view/elements/navigation/ViewStack.js +1 -1
  710. package/src/view/elements/notify/NotificationView.d.ts +22 -0
  711. package/src/view/elements/notify/NotificationView.d.ts.map +1 -0
  712. package/src/view/tooltip/TooltipView.d.ts +5 -1
  713. package/src/view/tooltip/TooltipView.d.ts.map +1 -1
  714. package/src/view/tooltip/TooltipView.js +4 -0
  715. package/src/shade/renderer/particles/graph/ParticleGraph.d.ts +0 -54
  716. package/src/shade/renderer/particles/graph/ParticleGraph.d.ts.map +0 -1
  717. package/src/shade/renderer/particles/graph/ParticleGraph.js +0 -99
@@ -1,60 +1,34 @@
1
- export namespace PARTICLE_NODE_TYPES {
2
- export namespace _const {
3
- export { inputs };
4
- export let produces_value: boolean;
5
- export let is_sink: boolean;
6
- export { emit };
7
- }
8
- export { _const as const };
9
- export namespace builtin { }
10
- export namespace attribute { }
11
- export namespace random { }
12
- export namespace setAttribute {
13
- export { inputs };
14
- let produces_value_1: boolean;
15
- export { produces_value_1 as produces_value };
16
- let is_sink_1: boolean;
17
- export { is_sink_1 as is_sink };
18
- export { emit };
19
- }
20
- export namespace kill { }
21
- export namespace add {
22
- export { inputs };
23
- let produces_value_2: boolean;
24
- export { produces_value_2 as produces_value };
25
- let is_sink_2: boolean;
26
- export { is_sink_2 as is_sink };
27
- export { emit };
28
- }
29
- export namespace sub { }
30
- export namespace mul { }
31
- export namespace div { }
32
- export namespace min { }
33
- export namespace max { }
34
- export namespace pow { }
35
- export namespace step { }
36
- export namespace mad { }
37
- export namespace mix { }
38
- export namespace clamp { }
39
- export namespace smoothstep { }
40
- export namespace scale { }
41
- export namespace neg { }
42
- export namespace abs { }
43
- export namespace floor { }
44
- export namespace fract { }
45
- export namespace sqrt { }
46
- export namespace sin { }
47
- export namespace cos { }
48
- export namespace exp { }
49
- export namespace log { }
50
- export namespace normalize { }
51
- export namespace length { }
52
- export namespace dot { }
53
- export namespace cross { }
54
- export namespace distance { }
55
- export namespace swizzle { }
56
- export namespace compare { }
57
- export namespace select { }
58
- export namespace curve { }
59
- }
1
+ /**
2
+ * Look up a node type by name.
3
+ * @param {string} name
4
+ * @returns {ParticleNodeDescription}
5
+ * @throws if no such node type exists
6
+ */
7
+ export function get_particle_node_description(name: string): ParticleNodeDescription;
8
+ /**
9
+ * Standard particle-node library, expressed as {@link ParticleNodeDescription}s in a
10
+ * {@link NodeRegistry}. Nodes are value-producing operations (constants, builtins, attribute reads,
11
+ * math, curves, random) or sinks (attribute writes, kill).
12
+ *
13
+ * These lower to the same opcodes the JS reference + WGSL interpreter agree on, so any effect
14
+ * authored here is executable and testable end-to-end on the CPU before it ever hits the GPU.
15
+ */
16
+ /**
17
+ * Every value the particle VM computes lives in a `vec4f` register, so a single data type describes
18
+ * every port in the library: any output may drive any input.
19
+ * @type {DataType}
20
+ */
21
+ export const PARTICLE_VALUE_TYPE: DataType;
22
+ /**
23
+ * Name of the single output port carried by every value-producing node.
24
+ * @type {string}
25
+ */
26
+ export const PARTICLE_NODE_OUTPUT_PORT: string;
27
+ /**
28
+ * @type {NodeRegistry}
29
+ */
30
+ export const PARTICLE_NODE_REGISTRY: NodeRegistry;
31
+ import { ParticleNodeDescription } from "./ParticleNodeDescription.js";
32
+ import { DataType } from "../../../../core/model/node-graph/type/DataType.js";
33
+ import { NodeRegistry } from "../../../../core/model/node-graph/node/NodeRegistry.js";
60
34
  //# sourceMappingURL=ParticleNodeRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":"AA0KA;;;;;GAKG;AACH,oDAJW,MAAM,GACJ,uBAAuB,CAWnC;AAlLD;;;;;;;GAOG;AAEH;;;;GAIG;AACH,kCAFU,QAAQ,CAE0C;AAE5D;;;GAGG;AACH,wCAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,qCAFU,YAAY,CAEmC;wCA3BjB,8BAA8B;yBAF7C,oDAAoD;6BAFhD,wDAAwD"}
@@ -1,118 +1,185 @@
1
- import { pack_swizzle, VM_OP } from "../isa/ParticleVMISA.js";
2
-
3
- /**
4
- * Standard particle-node library. Each entry describes a node type's input ports and whether it
5
- * produces a value or is a sink, plus an `emit(stream, ctx)` that lowers it to VM instructions.
6
- *
7
- * `ctx` provides:
8
- * - `ctx.in(port)` the register holding that input's value (resolved by the compiler),
9
- * - `ctx.out` the output register (value-producing nodes only),
10
- * - `ctx.params` the node's static params,
11
- * - `ctx.layout` → the {@link ../layout/ParticleLayout.js} for attribute offsets,
12
- * - `ctx.asm` the {@link ../isa/ParticleAssembler.js} for interning constants.
13
- *
14
- * These lower to the same opcodes the JS reference + WGSL interpreter agree on, so any effect
15
- * authored here is executable and testable end-to-end on the CPU before it ever hits the GPU.
16
- */
17
-
18
- /** value-producing node with no inputs */
19
- function source(inputs, emit) {
20
- return { inputs, produces_value: true, is_sink: false, emit };
21
- }
22
-
23
- /** value-producing node */
24
- function op(inputs, emit) {
25
- return { inputs, produces_value: true, is_sink: false, emit };
26
- }
27
-
28
- /** side-effecting sink (no output) */
29
- function sink(inputs, emit) {
30
- return { inputs, produces_value: false, is_sink: true, emit };
31
- }
32
-
33
- function unary(opcode) {
34
- return op(["x"], (s, c) => s.emit(opcode, c.out, c.in("x")));
35
- }
36
-
37
- function binary(opcode) {
38
- return op(["a", "b"], (s, c) => s.emit(opcode, c.out, c.in("a"), c.in("b")));
39
- }
40
-
41
- const COMPARE_OPCODES = {
42
- lt: VM_OP.CMP_LT,
43
- le: VM_OP.CMP_LE,
44
- gt: VM_OP.CMP_GT,
45
- ge: VM_OP.CMP_GE,
46
- eq: VM_OP.CMP_EQ,
47
- };
48
-
49
- export const PARTICLE_NODE_TYPES = {
50
- // --- sources ---
51
- const: source([], (s, c) => {
52
- const v = c.params.value ?? [0, 0, 0, 0];
53
- s.loadConst(c.out, c.asm.constant(v[0] ?? 0, v[1] ?? 0, v[2] ?? 0, v[3] ?? 0));
54
- }),
55
- builtin: source([], (s, c) => s.loadBuiltin(c.out, c.params.id)),
56
- attribute: source([], (s, c) => {
57
- const a = c.layout.get(c.params.name);
58
- s.loadAttr(c.out, a.offset, a.components);
59
- }),
60
- random: source([], (s, c) => s.random(c.out, c.params.mode)),
61
-
62
- // --- sinks ---
63
- setAttribute: sink(["value"], (s, c) => {
64
- const a = c.layout.get(c.params.name);
65
- s.storeAttr(c.in("value"), a.offset, a.components);
66
- }),
67
- kill: sink(["condition"], (s, c) => s.kill(c.in("condition"))),
68
-
69
- // --- arithmetic (component-wise) ---
70
- add: binary(VM_OP.ADD),
71
- sub: binary(VM_OP.SUB),
72
- mul: binary(VM_OP.MUL),
73
- div: binary(VM_OP.DIV),
74
- min: binary(VM_OP.MIN),
75
- max: binary(VM_OP.MAX),
76
- pow: binary(VM_OP.POW),
77
- step: binary(VM_OP.STEP),
78
- mad: op(["a", "b", "c"], (s, c) => s.emit(VM_OP.MAD, c.out, c.in("a"), c.in("b"), c.in("c"))),
79
- mix: op(["a", "b", "t"], (s, c) => s.emit(VM_OP.MIX, c.out, c.in("a"), c.in("b"), c.in("t"))),
80
- clamp: op(["x", "lo", "hi"], (s, c) => s.emit(VM_OP.CLAMP, c.out, c.in("x"), c.in("lo"), c.in("hi"))),
81
- smoothstep: op(["e0", "e1", "x"], (s, c) => s.emit(VM_OP.SMOOTHSTEP, c.out, c.in("e0"), c.in("e1"), c.in("x"))),
82
- scale: op(["v", "s"], (s, c) => s.emit(VM_OP.SCALE, c.out, c.in("v"), c.in("s"))),
83
-
84
- // --- unary math ---
85
- neg: unary(VM_OP.NEG),
86
- abs: unary(VM_OP.ABS),
87
- floor: unary(VM_OP.FLOOR),
88
- fract: unary(VM_OP.FRACT),
89
- sqrt: unary(VM_OP.SQRT),
90
- sin: unary(VM_OP.SIN),
91
- cos: unary(VM_OP.COS),
92
- exp: unary(VM_OP.EXP),
93
- log: unary(VM_OP.LOG),
94
- normalize: unary(VM_OP.NORMALIZE),
95
- length: unary(VM_OP.LENGTH),
96
-
97
- // --- vector ---
98
- dot: binary(VM_OP.DOT),
99
- cross: binary(VM_OP.CROSS),
100
- distance: binary(VM_OP.DISTANCE),
101
- swizzle: op(["x"], (s, c) => {
102
- const p = c.params.pattern ?? [0, 1, 2, 3];
103
- s.emit(VM_OP.SWIZZLE, c.out, c.in("x"), pack_swizzle(p[0], p[1], p[2], p[3]));
104
- }),
105
-
106
- // --- logic ---
107
- compare: op(["a", "b"], (s, c) => {
108
- const opcode = COMPARE_OPCODES[c.params.op];
109
- if (opcode === undefined) {
110
- throw new Error(`Unknown compare op '${c.params.op}'`);
111
- }
112
- s.emit(opcode, c.out, c.in("a"), c.in("b"));
113
- }),
114
- select: op(["a", "b", "condition"], (s, c) => s.emit(VM_OP.SELECT, c.out, c.in("a"), c.in("b"), c.in("condition"))),
115
-
116
- // --- curves ---
117
- curve: op(["t"], (s, c) => s.curve(c.out, c.params.handle, c.in("t"))),
118
- };
1
+ import { NodeRegistry } from "../../../../core/model/node-graph/node/NodeRegistry.js";
2
+ import { PortDirection } from "../../../../core/model/node-graph/node/PortDirection.js";
3
+ import { DataType } from "../../../../core/model/node-graph/type/DataType.js";
4
+ import { pack_swizzle, VM_OP } from "../isa/ParticleVMISA.js";
5
+ import { ParticleNodeDescription } from "./ParticleNodeDescription.js";
6
+
7
+ /**
8
+ * Standard particle-node library, expressed as {@link ParticleNodeDescription}s in a
9
+ * {@link NodeRegistry}. Nodes are value-producing operations (constants, builtins, attribute reads,
10
+ * math, curves, random) or sinks (attribute writes, kill).
11
+ *
12
+ * These lower to the same opcodes the JS reference + WGSL interpreter agree on, so any effect
13
+ * authored here is executable and testable end-to-end on the CPU before it ever hits the GPU.
14
+ */
15
+
16
+ /**
17
+ * Every value the particle VM computes lives in a `vec4f` register, so a single data type describes
18
+ * every port in the library: any output may drive any input.
19
+ * @type {DataType}
20
+ */
21
+ export const PARTICLE_VALUE_TYPE = DataType.from(0, "vec4");
22
+
23
+ /**
24
+ * Name of the single output port carried by every value-producing node.
25
+ * @type {string}
26
+ */
27
+ export const PARTICLE_NODE_OUTPUT_PORT = "out";
28
+
29
+ /**
30
+ * @type {NodeRegistry}
31
+ */
32
+ export const PARTICLE_NODE_REGISTRY = new NodeRegistry();
33
+
34
+ /**
35
+ * Node descriptions are addressed by name while authoring; the registry itself is keyed by the
36
+ * numeric IDs assigned below.
37
+ *
38
+ * IDs are handed out in declaration order rather than by {@link NodeDescription}'s global counter,
39
+ * so they do not drift with unrelated node usage elsewhere in the engine. Appending new node types
40
+ * at the end of the library is therefore safe; reordering or removing existing ones renumbers every
41
+ * node that follows, which would invalidate already-serialized graphs.
42
+ *
43
+ * @type {Map<string, ParticleNodeDescription>}
44
+ */
45
+ const descriptions_by_name = new Map();
46
+
47
+ /**
48
+ * @param {string} name
49
+ * @param {string[]} inputs input port names, in operand order
50
+ * @param {function} emit see {@link ParticleNodeDescription#emit}
51
+ * @param {object} [options]
52
+ * @param {boolean} [options.produces_value] when false the node is a sink and gets no output port
53
+ * @returns {ParticleNodeDescription}
54
+ */
55
+ function define(name, inputs, emit, { produces_value = true } = {}) {
56
+ if (descriptions_by_name.has(name)) {
57
+ throw new Error(`Duplicate particle node type '${name}'`);
58
+ }
59
+
60
+ const description = new ParticleNodeDescription();
61
+
62
+ description.name = name;
63
+ description.id = descriptions_by_name.size;
64
+
65
+ for (const input of inputs) {
66
+ description.createPort(PARTICLE_VALUE_TYPE, input, PortDirection.In);
67
+ }
68
+
69
+ if (produces_value) {
70
+ description.createPort(PARTICLE_VALUE_TYPE, PARTICLE_NODE_OUTPUT_PORT, PortDirection.Out);
71
+ }
72
+
73
+ description.emit = emit;
74
+
75
+ PARTICLE_NODE_REGISTRY.addNode(description);
76
+ descriptions_by_name.set(name, description);
77
+
78
+ return description;
79
+ }
80
+
81
+ /** side-effecting sink (no output) */
82
+ function sink(name, inputs, emit) {
83
+ return define(name, inputs, emit, { produces_value: false });
84
+ }
85
+
86
+ function unary(name, opcode) {
87
+ return define(name, ["x"], (s, c) => s.emit(opcode, c.out, c.in("x")));
88
+ }
89
+
90
+ function binary(name, opcode) {
91
+ return define(name, ["a", "b"], (s, c) => s.emit(opcode, c.out, c.in("a"), c.in("b")));
92
+ }
93
+
94
+ const COMPARE_OPCODES = {
95
+ lt: VM_OP.CMP_LT,
96
+ le: VM_OP.CMP_LE,
97
+ gt: VM_OP.CMP_GT,
98
+ ge: VM_OP.CMP_GE,
99
+ eq: VM_OP.CMP_EQ,
100
+ };
101
+
102
+ // --- sources ---
103
+ define("const", [], (s, c) => {
104
+ const v = c.parameters.value ?? [0, 0, 0, 0];
105
+ s.loadConst(c.out, c.asm.constant(v[0] ?? 0, v[1] ?? 0, v[2] ?? 0, v[3] ?? 0));
106
+ });
107
+ define("builtin", [], (s, c) => s.loadBuiltin(c.out, c.parameters.id));
108
+ define("attribute", [], (s, c) => {
109
+ const a = c.layout.get(c.parameters.name);
110
+ s.loadAttr(c.out, a.offset, a.components);
111
+ });
112
+ define("random", [], (s, c) => s.random(c.out, c.parameters.mode));
113
+
114
+ // --- sinks ---
115
+ sink("setAttribute", ["value"], (s, c) => {
116
+ const a = c.layout.get(c.parameters.name);
117
+ s.storeAttr(c.in("value"), a.offset, a.components);
118
+ });
119
+ sink("kill", ["condition"], (s, c) => s.kill(c.in("condition")));
120
+
121
+ // --- arithmetic (component-wise) ---
122
+ binary("add", VM_OP.ADD);
123
+ binary("sub", VM_OP.SUB);
124
+ binary("mul", VM_OP.MUL);
125
+ binary("div", VM_OP.DIV);
126
+ binary("min", VM_OP.MIN);
127
+ binary("max", VM_OP.MAX);
128
+ binary("pow", VM_OP.POW);
129
+ binary("step", VM_OP.STEP);
130
+ define("mad", ["a", "b", "c"], (s, c) => s.emit(VM_OP.MAD, c.out, c.in("a"), c.in("b"), c.in("c")));
131
+ define("mix", ["a", "b", "t"], (s, c) => s.emit(VM_OP.MIX, c.out, c.in("a"), c.in("b"), c.in("t")));
132
+ define("clamp", ["x", "lo", "hi"], (s, c) => s.emit(VM_OP.CLAMP, c.out, c.in("x"), c.in("lo"), c.in("hi")));
133
+ define("smoothstep", ["e0", "e1", "x"], (s, c) => s.emit(VM_OP.SMOOTHSTEP, c.out, c.in("e0"), c.in("e1"), c.in("x")));
134
+ define("scale", ["v", "s"], (s, c) => s.emit(VM_OP.SCALE, c.out, c.in("v"), c.in("s")));
135
+
136
+ // --- unary math ---
137
+ unary("neg", VM_OP.NEG);
138
+ unary("abs", VM_OP.ABS);
139
+ unary("floor", VM_OP.FLOOR);
140
+ unary("fract", VM_OP.FRACT);
141
+ unary("sqrt", VM_OP.SQRT);
142
+ unary("sin", VM_OP.SIN);
143
+ unary("cos", VM_OP.COS);
144
+ unary("exp", VM_OP.EXP);
145
+ unary("log", VM_OP.LOG);
146
+ unary("normalize", VM_OP.NORMALIZE);
147
+ unary("length", VM_OP.LENGTH);
148
+
149
+ // --- vector ---
150
+ binary("dot", VM_OP.DOT);
151
+ binary("cross", VM_OP.CROSS);
152
+ binary("distance", VM_OP.DISTANCE);
153
+ define("swizzle", ["x"], (s, c) => {
154
+ const p = c.parameters.pattern ?? [0, 1, 2, 3];
155
+ s.emit(VM_OP.SWIZZLE, c.out, c.in("x"), pack_swizzle(p[0], p[1], p[2], p[3]));
156
+ });
157
+
158
+ // --- logic ---
159
+ define("compare", ["a", "b"], (s, c) => {
160
+ const opcode = COMPARE_OPCODES[c.parameters.op];
161
+ if (opcode === undefined) {
162
+ throw new Error(`Unknown compare op '${c.parameters.op}'`);
163
+ }
164
+ s.emit(opcode, c.out, c.in("a"), c.in("b"));
165
+ });
166
+ define("select", ["a", "b", "condition"], (s, c) => s.emit(VM_OP.SELECT, c.out, c.in("a"), c.in("b"), c.in("condition")));
167
+
168
+ // --- curves ---
169
+ define("curve", ["t"], (s, c) => s.curve(c.out, c.parameters.handle, c.in("t")));
170
+
171
+ /**
172
+ * Look up a node type by name.
173
+ * @param {string} name
174
+ * @returns {ParticleNodeDescription}
175
+ * @throws if no such node type exists
176
+ */
177
+ export function get_particle_node_description(name) {
178
+ const description = descriptions_by_name.get(name);
179
+
180
+ if (description === undefined) {
181
+ throw new Error(`Unknown particle node type '${name}'`);
182
+ }
183
+
184
+ return description;
185
+ }
@@ -1,33 +1,38 @@
1
1
  /**
2
- * Lower a single-phase {@link ../graph/ParticleGraph.js} into a VM instruction stream.
2
+ * Lower a single-phase particle {@link ../../../../core/model/node-graph/NodeGraph.js NodeGraph}
3
+ * into a VM instruction stream.
4
+ *
5
+ * The graph describes one lifecycle phase (SPAWN or UPDATE) of a particle effect: nodes are
6
+ * {@link ParticleNodeDescription} instances, and every connection wires a producing node's `out`
7
+ * port to a consuming node's named input port.
3
8
  *
4
9
  * The pipeline:
5
10
  * 1. Walk the graph from its sinks (attribute writes / kill), flattening it into an SSA-style value
6
- * list in dependency order. Literal input values are materialised as constant-load values, and
7
- * shared sub-expressions are evaluated once (DAG sharing via memoisation).
11
+ * list in dependency order. Shared sub-expressions are evaluated once (DAG sharing via
12
+ * memoisation).
8
13
  * 2. Compute each value's last use.
9
14
  * 3. Linear-scan register allocation: registers are returned to the pool at a value's last use, so a
10
15
  * result can reuse a just-consumed input register (VM ops read all sources before writing dst).
11
- * 4. Emit each value's opcode via its node definition.
16
+ * 4. Emit each value's opcode via its node description.
12
17
  *
13
- * @param {import("./ParticleGraph.js").ParticleGraph} graph
18
+ * @param {NodeGraph} graph
14
19
  * @param {import("../isa/ParticleAssembler.js").InstructionStream} stream target section
15
20
  * @param {ParticleAssembler} asm assembler owning the shared constant pool
16
21
  * @param {import("../layout/ParticleLayout.js").ParticleLayout} layout attribute schema
17
22
  */
18
- export function compile_particle_graph(graph: import("./ParticleGraph.js").ParticleGraph, stream: any, asm: ParticleAssembler, layout: import("../layout/ParticleLayout.js").ParticleLayout): void;
23
+ export function compile_particle_graph(graph: NodeGraph, stream: any, asm: ParticleAssembler, layout: import("../layout/ParticleLayout.js").ParticleLayout): void;
19
24
  /**
20
25
  * Compile a full effect (SPAWN + UPDATE) into a {@link ../isa/ParticleProgram.js}.
21
26
  *
22
27
  * @param {object} params
23
- * @param {import("./ParticleGraph.js").ParticleGraph} [params.spawn]
24
- * @param {import("./ParticleGraph.js").ParticleGraph} [params.update]
28
+ * @param {NodeGraph} [params.spawn]
29
+ * @param {NodeGraph} [params.update]
25
30
  * @param {import("../layout/ParticleLayout.js").ParticleLayout} params.layout
26
31
  * @returns {import("../isa/ParticleProgram.js").ParticleProgram}
27
32
  */
28
33
  export function compile_particle_effect({ spawn, update, layout }: {
29
- spawn?: import("./ParticleGraph.js").ParticleGraph;
30
- update?: import("./ParticleGraph.js").ParticleGraph;
34
+ spawn?: NodeGraph;
35
+ update?: NodeGraph;
31
36
  layout: import("../layout/ParticleLayout.js").ParticleLayout;
32
37
  }): import("../isa/ParticleProgram.js").ParticleProgram;
33
38
  import { ParticleAssembler } from "../isa/ParticleAssembler.js";
@@ -1 +1 @@
1
- {"version":3,"file":"compile_particle_graph.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/compile_particle_graph.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AACH,8CALW,OAAO,oBAAoB,EAAE,aAAa,oBAE1C,iBAAiB,UACjB,OAAO,6BAA6B,EAAE,cAAc,QAqD9D;AAED;;;;;;;;GAQG;AACH;IAL+D,KAAK,GAAzD,OAAO,oBAAoB,EAAE,aAAa;IACU,MAAM,GAA1D,OAAO,oBAAoB,EAAE,aAAa;IACmB,MAAM,EAAnE,OAAO,6BAA6B,EAAE,cAAc;IAClD,OAAO,2BAA2B,EAAE,eAAe,CAa/D;kCA7FiC,6BAA6B"}
1
+ {"version":3,"file":"compile_particle_graph.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/compile_particle_graph.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,2EAHW,iBAAiB,UACjB,OAAO,6BAA6B,EAAE,cAAc,QAqD9D;AAED;;;;;;;;GAQG;AACH;IAL8B,KAAK;IACL,MAAM;IACoC,MAAM,EAAnE,OAAO,6BAA6B,EAAE,cAAc;IAClD,OAAO,2BAA2B,EAAE,eAAe,CAa/D;kCAjGiC,6BAA6B"}