@woosh/meep-engine 3.17.2 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/editor/actions/concrete/ComponentAddAction.d.ts +1 -0
  2. package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -1
  3. package/editor/actions/concrete/ComponentAddAction.js +4 -0
  4. package/editor/actions/concrete/ComponentRemoveAction.d.ts +1 -0
  5. package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -1
  6. package/editor/actions/concrete/ComponentRemoveAction.js +4 -0
  7. package/editor/actions/concrete/EntityCreateAction.d.ts +1 -0
  8. package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -1
  9. package/editor/actions/concrete/EntityCreateAction.js +7 -0
  10. package/editor/actions/concrete/EntityRemoveAction.d.ts +1 -0
  11. package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -1
  12. package/editor/actions/concrete/EntityRemoveAction.js +4 -0
  13. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +10 -0
  14. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -1
  15. package/editor/actions/concrete/PatchTerrainHeightAction.js +107 -85
  16. package/editor/actions/concrete/TransformModifyAction.d.ts +1 -0
  17. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  18. package/editor/actions/concrete/TransformModifyAction.js +4 -0
  19. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  20. package/editor/particles/effect/ParticleEffectDocument.js +10 -6
  21. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  22. package/editor/particles/effect/ParticleReferenceSimulation.js +98 -4
  23. package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -1
  24. package/editor/particles/effect/make_starter_particle_effect.js +0 -2
  25. package/editor/tools/engine/ToolEngine.d.ts +30 -0
  26. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  27. package/editor/tools/engine/ToolEngine.js +257 -188
  28. package/editor/view/ecs/EntityList.d.ts.map +1 -1
  29. package/editor/view/ecs/EntityList.js +6 -5
  30. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
  31. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +17 -9
  32. package/package.json +1 -1
  33. package/src/CODEC_LAYOUT_VERIFICATION.md +1 -2
  34. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts +56 -0
  35. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts.map +1 -0
  36. package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.js +73 -0
  37. package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.d.ts.map +1 -1
  38. package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.js +18 -63
  39. package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts +53 -0
  40. package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts.map +1 -0
  41. package/src/core/binary/meshopt/meshopt_encode_byte_group.js +140 -0
  42. package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts +32 -0
  43. package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts.map +1 -0
  44. package/src/core/binary/meshopt/meshopt_encode_data_block.js +77 -0
  45. package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts +46 -0
  46. package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts.map +1 -0
  47. package/src/core/binary/meshopt/meshopt_encode_index_sequence.js +146 -0
  48. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts +40 -0
  49. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts.map +1 -0
  50. package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.js +700 -0
  51. package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts +24 -0
  52. package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts.map +1 -0
  53. package/src/core/binary/meshopt/meshopt_write_uint_var.js +39 -0
  54. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  55. package/src/core/math/random/seededRandom_Mulberry32.js +4 -2
  56. package/src/core/process/undo/Action.d.ts +19 -0
  57. package/src/core/process/undo/Action.d.ts.map +1 -1
  58. package/src/core/process/undo/Action.js +17 -0
  59. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +78 -0
  60. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -0
  61. package/src/engine/graphics3/GPUParticleEmitterSystem.js +310 -0
  62. package/src/engine/graphics3/GraphicsEngine.d.ts +17 -0
  63. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  64. package/src/engine/graphics3/GraphicsEngine.js +30 -10
  65. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
  66. package/src/engine/graphics3/particles/particle_gpu_records.js +0 -2
  67. package/src/engine/interpolation/InterpolationSystem.d.ts +7 -0
  68. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  69. package/src/engine/interpolation/InterpolationSystem.js +10 -0
  70. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  71. package/src/engine/network/NetworkSession.js +14 -34
  72. package/src/engine/network/time/RenderPlayout.d.ts +76 -0
  73. package/src/engine/network/time/RenderPlayout.d.ts.map +1 -0
  74. package/src/engine/network/time/RenderPlayout.js +163 -0
  75. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  76. package/src/engine/network/transport/adapters/WebSocketTransport.js +11 -4
  77. package/src/engine/physics/ecs/PhysicsSystem.d.ts +4 -12
  78. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  79. package/src/engine/physics/ecs/PhysicsSystem.js +39 -13
  80. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  81. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  82. package/src/engine/sound/simulation/core/VolumeField.js +4 -1
  83. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +23 -2
  84. package/src/shade/playground/particle_system/README.md +139 -139
  85. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  86. package/src/shade/playground/particle_system/particle_prototype.js +0 -2
  87. package/src/shade/playground/particle_system/particle_scene.d.ts +6 -9
  88. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  89. package/src/shade/playground/particle_system/particle_scene.js +6 -13
  90. package/src/shade/playground/ssr_reprojection/README.md +103 -0
  91. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts +17 -0
  92. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts.map +1 -0
  93. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -0
  94. package/src/shade/playground/ssr_reprojection/index.html +79 -0
  95. package/src/shade/playground/ssr_reprojection/main.d.ts +2 -0
  96. package/src/shade/playground/ssr_reprojection/main.d.ts.map +1 -0
  97. package/src/shade/playground/ssr_reprojection/main.js +245 -0
  98. package/src/shade/playground/ssr_reprojection/scene.d.ts +18 -0
  99. package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -0
  100. package/src/shade/playground/ssr_reprojection/scene.js +51 -0
  101. package/src/shade/renderer/Renderer.d.ts +2 -23
  102. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  103. package/src/shade/renderer/Renderer.js +185 -218
  104. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -8
  105. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  106. package/src/shade/renderer/animation/GPUAnimationManager.js +12 -12
  107. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  108. package/src/shade/renderer/buffer/table/GPUTypedTable.js +6 -0
  109. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  110. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +7 -0
  111. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts +4 -0
  112. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts.map +1 -0
  113. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.js +51 -0
  114. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
  115. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +5 -35
  116. package/src/shade/renderer/particles/DESIGN.md +703 -514
  117. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +16 -4
  118. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  119. package/src/shade/renderer/particles/GPUParticleSystem.js +1189 -991
  120. package/src/shade/renderer/particles/ParticleConstants.d.ts +64 -0
  121. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  122. package/src/shade/renderer/particles/ParticleConstants.js +71 -0
  123. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +57 -0
  124. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -0
  125. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +181 -0
  126. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts +7 -0
  127. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts.map +1 -0
  128. package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.js +12 -0
  129. package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts +33 -0
  130. package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts.map +1 -0
  131. package/src/shade/renderer/particles/bounds/graph_particle_bounds.js +67 -0
  132. package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts +40 -0
  133. package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts.map +1 -0
  134. package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -0
  135. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +15 -2
  136. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  137. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +14 -8
  138. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +58 -4
  139. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  140. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +79 -4
  141. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +23 -1
  142. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -1
  143. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +35 -2
  144. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +4 -2
  145. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
  146. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +5 -8
  147. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
  148. package/src/shade/renderer/particles/data/particle_emitter_record.js +0 -6
  149. package/src/shade/renderer/particles/graph_particles.d.ts +25 -3
  150. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  151. package/src/shade/renderer/particles/graph_particles.js +108 -31
  152. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +6 -4
  153. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  154. package/src/shade/renderer/particles/graph_particles_avboit.js +5 -5
  155. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +5 -0
  156. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  157. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +27 -6
  158. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +4 -0
  159. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
  160. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +6 -1
  161. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +35 -27
  162. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
  163. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +424 -425
  164. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +20 -0
  165. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +1 -0
  166. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +4 -0
  167. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  168. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -2
  169. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts +22 -0
  170. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts.map +1 -0
  171. package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.js +42 -0
  172. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +1 -1
  173. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -1
  174. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +53 -22
  175. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -1
  176. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +213 -216
  177. package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +50 -0
  178. package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +1 -0
  179. package/src/shade/renderer/particles/shaders/shader_particle_render.js +1 -1
  180. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts +36 -0
  181. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts.map +1 -0
  182. package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.js +102 -0
  183. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts +102 -0
  184. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts.map +1 -0
  185. package/src/shade/renderer/particles/warmup/graph_particle_warmup.js +329 -0
  186. package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts +112 -0
  187. package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts.map +1 -0
  188. package/src/shade/renderer/particles/warmup/shader_particle_warmup.js +318 -0
  189. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts +35 -0
  190. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -0
  191. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +108 -0
  192. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts +3 -0
  193. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -0
  194. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +70 -0
  195. package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts +62 -0
  196. package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts.map +1 -0
  197. package/src/shade/renderer/particles/warmup/warmup_schedule.js +55 -0
  198. package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
  199. package/src/shade/renderer/postprocess/PostProcess.js +2 -1
  200. package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +286 -0
  201. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +57 -21
  202. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  203. package/src/shade/renderer/postprocess/ssr/SSR.js +230 -129
  204. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts +11 -0
  205. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts.map +1 -0
  206. package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.js +6 -0
  207. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts +4 -0
  208. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts.map +1 -0
  209. package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.js +32 -0
  210. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts +4 -0
  211. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts.map +1 -0
  212. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -0
  213. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts +3 -0
  214. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -0
  215. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +30 -0
  216. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts +4 -0
  217. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -0
  218. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +70 -0
  219. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts +21 -0
  220. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -0
  221. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +363 -0
  222. package/src/shade/renderer/postprocess/ssr/resolve/chunk_get_neighbour_weight.js +1 -1
  223. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts +2 -0
  224. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts.map +1 -0
  225. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.js +24 -0
  226. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts +1 -6
  227. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
  228. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +16 -332
  229. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts +1 -6
  230. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
  231. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +25 -358
  232. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -5
  233. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  234. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +201 -276
  235. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +1 -0
  236. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  237. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +167 -143
  238. package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts +15 -0
  239. package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts.map +1 -0
  240. package/src/shade/renderer/shader/graph/graph_create_buffer.js +20 -0
  241. package/src/shade/renderer/view/GPUViewContext.d.ts +3 -4
  242. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  243. package/src/shade/renderer/view/GPUViewContext.js +5 -5
  244. package/src/core/binary/meshopt/__meshopt_test_streams.d.ts +0 -24
  245. package/src/core/binary/meshopt/__meshopt_test_streams.d.ts.map +0 -1
  246. package/src/core/binary/meshopt/__meshopt_test_streams.js +0 -237
  247. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +0 -84
  248. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +0 -1
  249. package/src/core/geom/3d/atlas/atlas_test_fixtures.js +0 -266
  250. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts +0 -97
  251. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +0 -1
  252. package/src/engine/asset/loaders/gltf_test_fixtures.js +0 -359
  253. package/src/shade/renderer/animation/skin_test_fixtures.d.ts +0 -86
  254. package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +0 -1
  255. package/src/shade/renderer/animation/skin_test_fixtures.js +0 -250
  256. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts +0 -16
  257. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts.map +0 -1
  258. package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.js +0 -27
  259. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +0 -151
  260. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +0 -1
  261. package/src/shade/renderer/particles/particle_test_fixtures.js +0 -229
  262. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +0 -23
  263. package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +0 -457
@@ -6,6 +6,20 @@ declare class ToolEngine {
6
6
  isRunning: boolean;
7
7
  shutdownCallbacks: any[];
8
8
  pointer: any;
9
+ /**
10
+ * Fired with the tool when a gesture starts (primary-button press accepted by a tool).
11
+ * @type {Signal}
12
+ */
13
+ onGestureStart: Signal;
14
+ /**
15
+ * Fired with the tool when its gesture ends (the paired release), after `tool.stop()`.
16
+ * @type {Signal}
17
+ */
18
+ onGestureEnd: Signal;
19
+ /**
20
+ * @returns {boolean}
21
+ */
22
+ get gesture_active(): boolean;
9
23
  activate(toolName: any): void;
10
24
  initialize(): void;
11
25
  /**
@@ -15,8 +29,24 @@ declare class ToolEngine {
15
29
  */
16
30
  startup(engine: Engine, editor: Editor): void;
17
31
  editor: Editor;
32
+ /**
33
+ * End the gesture in progress, if any: `tool.stop()`, then the flag and the signal whatever
34
+ * stop did. The paired release calls it; so does {@link shutdown}, since a tool torn down
35
+ * mid-gesture must still get its stop, and a host that closes a record per gesture (the
36
+ * scene editor's project session) must hear the end.
37
+ */
38
+ /**
39
+ * Hand a gesture to a tool: the flag goes up, the signal fires, the tool starts. The pointer's
40
+ * primary press calls it; so may a host that drives a tool without a pointer (a scripted
41
+ * stroke, a spec). A gesture already in progress ends first.
42
+ * @param {Tool} tool
43
+ */
44
+ start_gesture(tool: Tool): void;
45
+ end_gesture(): void;
18
46
  shutdown(): void;
47
+ #private;
19
48
  }
20
49
  import List from '../../../src/core/collection/list/List.js';
21
50
  import ObservedValue from '../../../src/core/model/ObservedValue.js';
51
+ import Signal from '../../../src/core/events/signal/Signal.js';
22
52
  //# sourceMappingURL=ToolEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolEngine.d.ts","sourceRoot":"","sources":["../../../../editor/tools/engine/ToolEngine.js"],"names":[],"mappings":";AAWA;IACI,iBAAmB;IACnB,sBAAiC;IACjC,YAAc;IACd,mBAAkB;IAClB,yBAAuB;IACvB,aAAe;IAUf,8BAOC;IAED,mBA8BC;IAED;;;;OAIG;IACH,8CA4FC;IA1FG,eAAoB;IA4FxB,iBAgBC;CACJ;iBAxLgB,2CAA2C;0BAClC,0CAA0C"}
1
+ {"version":3,"file":"ToolEngine.d.ts","sourceRoot":"","sources":["../../../../editor/tools/engine/ToolEngine.js"],"names":[],"mappings":";AAYA;IACI,iBAAmB;IACnB,sBAAiC;IACjC,YAAc;IACd,mBAAkB;IAClB,yBAAuB;IACvB,aAAe;IA2Bf;;;OAGG;IACH,gBAFU,MAAM,CAEc;IAE9B;;;OAGG;IACH,cAFU,MAAM,CAEY;IAE5B;;OAEG;IACH,8BAEC;IAED,8BAOC;IAED,mBA8BC;IAED;;;;OAIG;IACH,8CA2EC;IAzEG,eAAoB;IA2ExB;;;;;OAKG;IACH;;;;;OAKG;IACH,gCAUC;IAED,oBAeC;IAED,iBAwBC;;CACJ;iBA7PgB,2CAA2C;0BAElC,0CAA0C;mBADjD,2CAA2C"}
@@ -1,188 +1,257 @@
1
- import List from '../../../src/core/collection/list/List.js';
2
- import ObservedValue from '../../../src/core/model/ObservedValue.js';
3
- import { decodeMouseEventButtons } from "../../../src/engine/input/devices/mouse/decodeMouseEventButtons.js";
4
- import { PointerDevice } from '../../../src/engine/input/devices/PointerDevice.js';
5
- import GridPaintTool from "../GridPaintTool.js";
6
- import { TerrainHeightPaintTool } from "../paint/TerrainHeightPaintTool.js";
7
- import { TerrainTexturePaintTool } from "../paint/TerrainTexturePaintTool.js";
8
-
9
- import SelectionTool from '../SelectionTool.js';
10
- import { TransformToolV2 } from "../TransformToolV2.js";
11
-
12
- class ToolEngine {
13
- tools = new List();
14
- active = new ObservedValue(null);
15
- engine = null;
16
- isRunning = false;
17
- shutdownCallbacks = [];
18
- pointer = null;
19
-
20
- /**
21
- *
22
- * @constructor
23
- * @property {List.<Tool>} tools
24
- * @property {ObservedValue.<Tool>} active
25
- */
26
- constructor() {}
27
-
28
- activate(toolName) {
29
- const self = this;
30
- this.tools.visitFirstMatch(function (tool) {
31
- return tool.name === toolName;
32
- }, function (tool) {
33
- self.active.set(tool);
34
- });
35
- }
36
-
37
- initialize() {
38
-
39
- this.active.onChanged.add((newTool, oldTool) => {
40
- if (oldTool !== null && typeof oldTool === "object") {
41
- oldTool.finalize();
42
- }
43
-
44
- if (newTool !== null && typeof newTool === "object") {
45
- newTool.editor = this.editor;
46
- newTool.engine = this.engine;
47
-
48
- newTool.initialize();
49
- }
50
- });
51
-
52
- const terrainPaintToolRaise = new TerrainHeightPaintTool();
53
- terrainPaintToolRaise.name = "terrain-height";
54
-
55
- const terrainTexturePaintTool = new TerrainTexturePaintTool();
56
- terrainTexturePaintTool.name = "terrain-texture";
57
-
58
- const tools = this.tools;
59
- tools
60
- .add(new SelectionTool())
61
- .add(new GridPaintTool())
62
- .add(terrainPaintToolRaise)
63
- .add(terrainTexturePaintTool)
64
- ;
65
-
66
- tools.add(new TransformToolV2());
67
- }
68
-
69
- /**
70
- *
71
- * @param {Engine} engine
72
- * @param {Editor} editor
73
- */
74
- startup(engine, editor) {
75
- this.engine = engine;
76
- this.editor = editor;
77
- this.isRunning = true;
78
-
79
- const self = this;
80
-
81
- // tools tick with the engine, not on a private animation loop
82
- function update(delta) {
83
- const tool = self.active.get();
84
-
85
- if (tool !== null) {
86
- tool.update(delta);
87
- }
88
- }
89
-
90
- engine.ticker.onTick.add(update);
91
-
92
- this.shutdownCallbacks.push(function () {
93
- engine.ticker.onTick.remove(update);
94
- });
95
-
96
- const graphics = engine.graphics;
97
-
98
- if (graphics === null || graphics.domElement === undefined || graphics.domElement === null) {
99
- // headless engine: no viewport to receive pointer input
100
- return;
101
- }
102
-
103
- const pointer = this.pointer = new PointerDevice(graphics.domElement);
104
-
105
- /**
106
- * The tool a gesture was handed to by the last accepted press, null between gestures.
107
- * `stop()` finishes work `start()` began — a marquee, a brush stroke — so it must
108
- * only ever run against the press it pairs with. Camera navigation shares this
109
- * viewport and presses the other buttons constantly.
110
- * @type {Tool|null}
111
- */
112
- let gesture_tool = null;
113
-
114
- //hook up interaction controls
115
- function pointerDown(position, event) {
116
- const tool = self.active.get();
117
- if (tool !== null) {
118
- tool.modifiers.shift = event.shiftKey;
119
-
120
- if (typeof event.buttons === "number") {
121
- const decodedButtons = decodeMouseEventButtons(event.buttons);
122
-
123
- const isPrimaryPressed = decodedButtons[0];
124
-
125
- if (!isPrimaryPressed) {
126
- //tools own the primary button only; navigation owns the rest
127
- return;
128
- }
129
-
130
- }
131
-
132
- gesture_tool = tool;
133
-
134
- tool.start();
135
- }
136
- }
137
-
138
- function pointerUp(position, event) {
139
- const tool = gesture_tool;
140
-
141
- gesture_tool = null;
142
-
143
- if (tool !== null) {
144
- tool.stop();
145
- }
146
- }
147
-
148
-
149
- pointer.on.down.add(pointerDown);
150
-
151
- // a release outside the viewport still ends the gesture: dragging a marquee or a brush
152
- // stroke past the edge of the canvas and letting go there is ordinary, and the tool
153
- // would otherwise stay running until the next release that happened to land inside
154
- pointer.on.globalUp.add(pointerUp);
155
-
156
- pointer.start();
157
-
158
-
159
- function cleanup() {
160
- pointer.on.down.remove(pointerDown);
161
- pointer.on.globalUp.remove(pointerUp);
162
- pointer.stop();
163
- }
164
-
165
- this.shutdownCallbacks.push(cleanup);
166
- }
167
-
168
- shutdown() {
169
- this.isRunning = false;
170
- const toolProxy = this.active;
171
-
172
- const tool = toolProxy.getValue();
173
-
174
- if (tool !== null) {
175
- toolProxy.set(null);
176
- }
177
-
178
- //execute cleanup
179
- this.shutdownCallbacks.forEach(function (cb) {
180
- cb();
181
- });
182
-
183
- this.shutdownCallbacks = [];
184
- }
185
- }
186
-
187
-
188
- export default ToolEngine;
1
+ import List from '../../../src/core/collection/list/List.js';
2
+ import Signal from '../../../src/core/events/signal/Signal.js';
3
+ import ObservedValue from '../../../src/core/model/ObservedValue.js';
4
+ import { decodeMouseEventButtons } from "../../../src/engine/input/devices/mouse/decodeMouseEventButtons.js";
5
+ import { PointerDevice } from '../../../src/engine/input/devices/PointerDevice.js';
6
+ import GridPaintTool from "../GridPaintTool.js";
7
+ import { TerrainHeightPaintTool } from "../paint/TerrainHeightPaintTool.js";
8
+ import { TerrainTexturePaintTool } from "../paint/TerrainTexturePaintTool.js";
9
+
10
+ import SelectionTool from '../SelectionTool.js';
11
+ import { TransformToolV2 } from "../TransformToolV2.js";
12
+
13
+ class ToolEngine {
14
+ tools = new List();
15
+ active = new ObservedValue(null);
16
+ engine = null;
17
+ isRunning = false;
18
+ shutdownCallbacks = [];
19
+ pointer = null;
20
+
21
+ /**
22
+ *
23
+ * @constructor
24
+ * @property {List.<Tool>} tools
25
+ * @property {ObservedValue.<Tool>} active
26
+ */
27
+ constructor() {}
28
+
29
+ /**
30
+ * True from the press that hands a gesture to a tool until the release that ends it. A host
31
+ * grouping actions into one undo step per gesture (a brush stroke is one step, however many
32
+ * dabs) reads this rather than second-guessing the pointer.
33
+ * @type {boolean}
34
+ */
35
+ #gesture_active = false;
36
+
37
+ /**
38
+ * The tool a gesture was handed to by the last accepted press, null between gestures.
39
+ * `stop()` finishes work `start()` began — a marquee, a brush stroke — so it must only ever
40
+ * run against the press it pairs with. Camera navigation shares this viewport and presses
41
+ * the other buttons constantly.
42
+ * @type {Tool|null}
43
+ */
44
+ #gesture_tool = null;
45
+
46
+ /**
47
+ * Fired with the tool when a gesture starts (primary-button press accepted by a tool).
48
+ * @type {Signal}
49
+ */
50
+ onGestureStart = new Signal();
51
+
52
+ /**
53
+ * Fired with the tool when its gesture ends (the paired release), after `tool.stop()`.
54
+ * @type {Signal}
55
+ */
56
+ onGestureEnd = new Signal();
57
+
58
+ /**
59
+ * @returns {boolean}
60
+ */
61
+ get gesture_active() {
62
+ return this.#gesture_active;
63
+ }
64
+
65
+ activate(toolName) {
66
+ const self = this;
67
+ this.tools.visitFirstMatch(function (tool) {
68
+ return tool.name === toolName;
69
+ }, function (tool) {
70
+ self.active.set(tool);
71
+ });
72
+ }
73
+
74
+ initialize() {
75
+
76
+ this.active.onChanged.add((newTool, oldTool) => {
77
+ if (oldTool !== null && typeof oldTool === "object") {
78
+ oldTool.finalize();
79
+ }
80
+
81
+ if (newTool !== null && typeof newTool === "object") {
82
+ newTool.editor = this.editor;
83
+ newTool.engine = this.engine;
84
+
85
+ newTool.initialize();
86
+ }
87
+ });
88
+
89
+ const terrainPaintToolRaise = new TerrainHeightPaintTool();
90
+ terrainPaintToolRaise.name = "terrain-height";
91
+
92
+ const terrainTexturePaintTool = new TerrainTexturePaintTool();
93
+ terrainTexturePaintTool.name = "terrain-texture";
94
+
95
+ const tools = this.tools;
96
+ tools
97
+ .add(new SelectionTool())
98
+ .add(new GridPaintTool())
99
+ .add(terrainPaintToolRaise)
100
+ .add(terrainTexturePaintTool)
101
+ ;
102
+
103
+ tools.add(new TransformToolV2());
104
+ }
105
+
106
+ /**
107
+ *
108
+ * @param {Engine} engine
109
+ * @param {Editor} editor
110
+ */
111
+ startup(engine, editor) {
112
+ this.engine = engine;
113
+ this.editor = editor;
114
+ this.isRunning = true;
115
+
116
+ const self = this;
117
+
118
+ // tools tick with the engine, not on a private animation loop
119
+ function update(delta) {
120
+ const tool = self.active.get();
121
+
122
+ if (tool !== null) {
123
+ tool.update(delta);
124
+ }
125
+ }
126
+
127
+ engine.ticker.onTick.add(update);
128
+
129
+ this.shutdownCallbacks.push(function () {
130
+ engine.ticker.onTick.remove(update);
131
+ });
132
+
133
+ const graphics = engine.graphics;
134
+
135
+ if (graphics === null || graphics.domElement === undefined || graphics.domElement === null) {
136
+ // headless engine: no viewport to receive pointer input
137
+ return;
138
+ }
139
+
140
+ const pointer = this.pointer = new PointerDevice(graphics.domElement);
141
+
142
+ //hook up interaction controls
143
+ function pointerDown(position, event) {
144
+ const tool = self.active.get();
145
+ if (tool !== null) {
146
+ tool.modifiers.shift = event.shiftKey;
147
+
148
+ if (typeof event.buttons === "number") {
149
+ const decodedButtons = decodeMouseEventButtons(event.buttons);
150
+
151
+ const isPrimaryPressed = decodedButtons[0];
152
+
153
+ if (!isPrimaryPressed) {
154
+ //tools own the primary button only; navigation owns the rest
155
+ return;
156
+ }
157
+
158
+ }
159
+
160
+ self.start_gesture(tool);
161
+ }
162
+ }
163
+
164
+ function pointerUp(position, event) {
165
+ self.end_gesture();
166
+ }
167
+
168
+
169
+ pointer.on.down.add(pointerDown);
170
+
171
+ // a release outside the viewport still ends the gesture: dragging a marquee or a brush
172
+ // stroke past the edge of the canvas and letting go there is ordinary, and the tool
173
+ // would otherwise stay running until the next release that happened to land inside
174
+ pointer.on.globalUp.add(pointerUp);
175
+
176
+ pointer.start();
177
+
178
+
179
+ function cleanup() {
180
+ pointer.on.down.remove(pointerDown);
181
+ pointer.on.globalUp.remove(pointerUp);
182
+ pointer.stop();
183
+ }
184
+
185
+ this.shutdownCallbacks.push(cleanup);
186
+ }
187
+
188
+ /**
189
+ * End the gesture in progress, if any: `tool.stop()`, then the flag and the signal whatever
190
+ * stop did. The paired release calls it; so does {@link shutdown}, since a tool torn down
191
+ * mid-gesture must still get its stop, and a host that closes a record per gesture (the
192
+ * scene editor's project session) must hear the end.
193
+ */
194
+ /**
195
+ * Hand a gesture to a tool: the flag goes up, the signal fires, the tool starts. The pointer's
196
+ * primary press calls it; so may a host that drives a tool without a pointer (a scripted
197
+ * stroke, a spec). A gesture already in progress ends first.
198
+ * @param {Tool} tool
199
+ */
200
+ start_gesture(tool) {
201
+ if (this.#gesture_tool !== null) {
202
+ this.end_gesture();
203
+ }
204
+
205
+ this.#gesture_tool = tool;
206
+ this.#gesture_active = true;
207
+ this.onGestureStart.send1(tool);
208
+
209
+ tool.start();
210
+ }
211
+
212
+ end_gesture() {
213
+ const tool = this.#gesture_tool;
214
+
215
+ this.#gesture_tool = null;
216
+
217
+ if (tool === null) {
218
+ return;
219
+ }
220
+
221
+ try {
222
+ tool.stop();
223
+ } finally {
224
+ this.#gesture_active = false;
225
+ this.onGestureEnd.send1(tool);
226
+ }
227
+ }
228
+
229
+ shutdown() {
230
+ // before the tool is deactivated: its stop hook may still commit through the editor. A
231
+ // hook that throws has still ended its gesture; the teardown goes on
232
+ try {
233
+ this.end_gesture();
234
+ } catch (e) {
235
+ console.error(`ToolEngine.shutdown: the gesture's stop hook failed: ${e.message}`);
236
+ }
237
+
238
+ this.isRunning = false;
239
+ const toolProxy = this.active;
240
+
241
+ const tool = toolProxy.getValue();
242
+
243
+ if (tool !== null) {
244
+ toolProxy.set(null);
245
+ }
246
+
247
+ //execute cleanup
248
+ this.shutdownCallbacks.forEach(function (cb) {
249
+ cb();
250
+ });
251
+
252
+ this.shutdownCallbacks = [];
253
+ }
254
+ }
255
+
256
+
257
+ export default ToolEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../../../editor/view/ecs/EntityList.js"],"names":[],"mappings":";AA4DA;IAGI;;;;OAIG;IACH,4CAmJC;IA1JD,mBAAmC;IAgB3B,OAAY;IAQhB,eAAoB;IAuGpB;;;;;;MAUC;IAmBL,eAEC;CAsCJ;iBAzPgB,2BAA2B"}
1
+ {"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../../../editor/view/ecs/EntityList.js"],"names":[],"mappings":";AA6DA;IAGI;;;;OAIG;IACH,4CAmJC;IA1JD,mBAAmC;IAgB3B,OAAY;IAQhB,eAAoB;IAuGpB;;;;;;MAUC;IAmBL,eAEC;CAsCJ;iBA1PgB,2BAA2B"}
@@ -8,6 +8,7 @@ import ButtonView from '../../../src/view/elements/button/ButtonView.js';
8
8
  import EmptyView from "../../../src/view/elements/EmptyView.js";
9
9
  import View from "../../../src/view/View.js";
10
10
 
11
+ import EntityCreateAction from '../../actions/concrete/EntityCreateAction.js';
11
12
  import SelectionAddAction from '../../actions/concrete/SelectionAddAction.js';
12
13
  import SelectionRemoveAction from '../../actions/concrete/SelectionRemoveAction.js';
13
14
 
@@ -133,11 +134,11 @@ class EntityListView extends View {
133
134
  const actionAdd = {
134
135
  name: "Add",
135
136
  action: function () {
136
- const dataset = editor.engine.entityManager.dataset;
137
-
138
- if (dataset !== null) {
139
- dataset.createEntity();
140
- }
137
+ // through an action: undoable, and a host that leases entity ids assigns one before
138
+ // apply (a direct createEntity would take the lowest free id and bypass both)
139
+ const actions = editor.actions;
140
+ actions.mark('add entity');
141
+ actions.do(new EntityCreateAction());
141
142
  }
142
143
  };
143
144
 
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleEmitterInspectorView.d.ts","sourceRoot":"","sources":["../../../../../editor/view/particles/effect/ParticleEmitterInspectorView.js"],"names":[],"mappings":"AA+DA;IAkDI;;;OAGG;IACH;QAFyG,MAAM,EAApG,OAAO,qDAAqD,EAAE,sBAAsB;OAqC9F;IAhCG,mBAAuC;IAIvC;;OAEG;IACH,QAFU,OAAO,qDAAqD,EAAE,sBAAsB,CAE1E;IA2BxB;;;;;;OAMG;IACH,gBAiBC;;CAmZJ;iBA3jBgB,8BAA8B"}
1
+ {"version":3,"file":"ParticleEmitterInspectorView.d.ts","sourceRoot":"","sources":["../../../../../editor/view/particles/effect/ParticleEmitterInspectorView.js"],"names":[],"mappings":"AAyEA;IAkDI;;;OAGG;IACH;QAFyG,MAAM,EAApG,OAAO,qDAAqD,EAAE,sBAAsB;OAqC9F;IAhCG,mBAAuC;IAIvC;;OAEG;IACH,QAFU,OAAO,qDAAqD,EAAE,sBAAsB,CAE1E;IA2BxB;;;;;;OAMG;IACH,gBAiBC;;CAiZJ;iBAnkBgB,8BAA8B"}
@@ -12,8 +12,12 @@ import View from "../../../../src/view/View.js";
12
12
 
13
13
  /**
14
14
  * Everything about an effect that is not its simulation: how fast it emits, how its particles are
15
- * blended and oriented, which per-particle attribute drives which render channel, its bounds sphere,
16
- * and the attribute schema those channels can name.
15
+ * blended and oriented, which per-particle attribute drives which render channel, and the attribute
16
+ * schema those channels can name.
17
+ *
18
+ * There is nothing here for bounds. An emitter has none to declare — the box the culling and
19
+ * occupancy passes use is measured from the live particles on the GPU — so the one bounds-related
20
+ * control an author gets is the `cull` toggle.
17
21
  *
18
22
  * It belongs to neither editing layer, and both need it — a program that writes `position` does
19
23
  * nothing visible until something says that `position` is what the renderer should place the quad
@@ -41,12 +45,13 @@ const NUMERIC_FIELDS = [
41
45
  help: "Particles per second. Integrated on the GPU — the CPU never counts particles.",
42
46
  },
43
47
  {
44
- key: "bounds_radius",
45
- label: "bounds radius",
48
+ key: "prewarm",
49
+ label: "pre-warm",
46
50
  min: 0,
47
51
  step: 0.1,
48
- help: "Radius of the emitter's bounding sphere. Under AVBOIT it marks the depth slices the "
49
- + "effect may occlude in, so an effect that outruns it occludes at the wrong depth.",
52
+ help: "Seconds the effect is run forward before it is first shown, so a continuous one arrives "
53
+ + "at its steady population instead of growing into it. About the particle lifetime is "
54
+ + "enough; longer only costs a longer warm-up on the frame the effect appears. 0 is off.",
50
55
  },
51
56
  ];
52
57
 
@@ -58,7 +63,12 @@ const FLAG_FIELDS = [
58
63
  { key: "lighting", label: "lighting", help: "Forward-shade the billboards with scene lighting." },
59
64
  { key: "soft_depth", label: "soft depth", help: "Fade against scene depth instead of cutting into it." },
60
65
  { key: "sort", label: "sort", help: "Depth-sort this emitter's particles." },
61
- { key: "cull", label: "cull", help: "Sleep the simulation when the emitter is out of view." },
66
+ {
67
+ key: "cull",
68
+ label: "cull",
69
+ help: "Sleep the simulation when the emitter is out of view. The box tested is measured from "
70
+ + "the live particles on the GPU, so there is nothing here to size by hand.",
71
+ },
62
72
  ];
63
73
 
64
74
  export class ParticleEmitterInspectorView extends View {
@@ -212,8 +222,6 @@ export class ParticleEmitterInspectorView extends View {
212
222
  section.addChild(this.#numericRow(field));
213
223
  }
214
224
 
215
- section.addChild(this.#vectorRow("bounds centre", "bounds_center", 3));
216
-
217
225
  return section;
218
226
  }
219
227
 
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Advanced 3D game engine",
7
7
  "type": "module",
8
8
  "author": "Alexander Goldring",
9
- "version": "3.17.2",
9
+ "version": "3.18.0",
10
10
  "exports": {
11
11
  "./build/*": "./build/*",
12
12
  "./src/*": "./src/*",
@@ -162,8 +162,7 @@ grep -rln "binary/lz4\|binary/zstd" --include=*.js . | grep -v "^./core/binary/"
162
162
  # shade/renderer/geometry/virtual/format/frame/vgeo_*.js (zstd, three files)
163
163
  # shade/renderer/loader/usd/usd_lz4.js (lz4)
164
164
  grep -rn "binary/meshopt" --include=*.js . | grep -v "^./core/binary/meshopt/" | grep -v spec
165
- # shade/renderer/loader/gltf/ext/meshopt/MeshoptBufferViewExtension.js (three imports)
166
- # engine/asset/loaders/gltf_test_fixtures.js (test-only encoder)
165
+ # format/scene/gltf/ext/meshopt/MeshoptBufferViewExtension.js (three imports)
167
166
  ```
168
167
 
169
168
  zstd is shared between KTX2 and the virtual-geometry frame format; lz4 is USD-only today; meshopt is