@woosh/meep-engine 2.106.1 → 2.107.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 (587) hide show
  1. package/build/meep.cjs +1990 -2364
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +1990 -2364
  4. package/editor/Editor.js +55 -60
  5. package/editor/SelectionVisualizer.js +111 -109
  6. package/editor/actions/concrete/ComponentAddAction.js +0 -3
  7. package/editor/actions/concrete/ComponentRemoveAction.js +0 -4
  8. package/editor/actions/concrete/EntityCreateAction.js +0 -3
  9. package/editor/actions/concrete/EntityRemoveAction.js +0 -4
  10. package/editor/actions/concrete/SelectionAddAction.js +0 -3
  11. package/editor/actions/concrete/SelectionClearAction.js +0 -3
  12. package/editor/actions/concrete/SelectionRemoveAction.js +0 -3
  13. package/editor/ecs/EditorEntity.js +8 -6
  14. package/editor/tools/SelectionTool.js +0 -5
  15. package/editor/tools/TopDownCameraControlTool.js +2 -5
  16. package/editor/tools/TransformTool.js +137 -136
  17. package/editor/tools/engine/Tool.js +1 -6
  18. package/editor/tools/engine/ToolEngine.js +145 -148
  19. package/editor/tools/v2/TransformControls.js +25 -24
  20. package/editor/view/EditorView.js +0 -5
  21. package/editor/view/ecs/ComponentControlFactory.js +37 -40
  22. package/editor/view/ecs/EntityEditor.js +0 -3
  23. package/editor/view/ecs/EntityList.js +6 -11
  24. package/editor/view/ecs/components/MeshController.js +4 -7
  25. package/editor/view/ecs/components/TransformController.js +3 -9
  26. package/editor/view/tools/ToolView.js +2 -8
  27. package/package.json +1 -1
  28. package/src/core/IdPool.d.ts.map +1 -1
  29. package/src/core/IdPool.js +0 -5
  30. package/src/core/UUID.d.ts.map +1 -1
  31. package/src/core/UUID.js +0 -4
  32. package/src/core/binary/BitSet.d.ts +17 -14
  33. package/src/core/binary/BitSet.d.ts.map +1 -1
  34. package/src/core/binary/BitSet.js +411 -412
  35. package/src/core/binary/type/Field.d.ts +0 -8
  36. package/src/core/binary/type/Field.d.ts.map +1 -1
  37. package/src/core/binary/type/Field.js +16 -19
  38. package/src/core/binary/type/MultiplicityType.js +0 -4
  39. package/src/core/binary/type/PrimitiveTypes.d.ts.map +1 -1
  40. package/src/core/binary/type/PrimitiveTypes.js +0 -4
  41. package/src/core/binary/type/Type.d.ts +0 -6
  42. package/src/core/binary/type/Type.d.ts.map +1 -1
  43. package/src/core/binary/type/Type.js +63 -64
  44. package/src/core/binary/type/TypeBuilder.d.ts +0 -1
  45. package/src/core/binary/type/TypeBuilder.d.ts.map +1 -1
  46. package/src/core/binary/type/TypeBuilder.js +15 -18
  47. package/src/core/binary/type/TypeRegistry.d.ts +6 -4
  48. package/src/core/binary/type/TypeRegistry.d.ts.map +1 -1
  49. package/src/core/binary/type/TypeRegistry.js +38 -42
  50. package/src/core/bvh2/visual/BVHGeometry.d.ts.map +1 -1
  51. package/src/core/bvh2/visual/BVHGeometry.js +0 -3
  52. package/src/core/codegen/LineBuilder.d.ts.map +1 -1
  53. package/src/core/codegen/LineBuilder.js +0 -5
  54. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  55. package/src/core/collection/set/ArraySet.js +1 -5
  56. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  57. package/src/core/collection/table/RowFirstTable.js +0 -5
  58. package/src/core/color/parse_color.d.ts.map +1 -1
  59. package/src/core/color/parse_color.js +1 -5
  60. package/src/core/geom/2d/Rectangle.d.ts.map +1 -1
  61. package/src/core/geom/2d/Rectangle.js +0 -4
  62. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  63. package/src/core/geom/2d/aabb/AABB2.js +0 -6
  64. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  65. package/src/core/geom/3d/aabb/AABB3.js +0 -5
  66. package/src/core/geom/3d/morton/Morton.d.ts.map +1 -1
  67. package/src/core/geom/3d/morton/Morton.js +0 -3
  68. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +11 -11
  69. package/src/core/geom/Quaternion.d.ts.map +1 -1
  70. package/src/core/geom/Quaternion.js +0 -5
  71. package/src/core/geom/Vector4.d.ts.map +1 -1
  72. package/src/core/geom/Vector4.js +0 -4
  73. package/src/core/graph/Edge.d.ts.map +1 -1
  74. package/src/core/graph/Edge.js +0 -5
  75. package/src/core/graph/WeightedEdge.d.ts.map +1 -1
  76. package/src/core/json/JsonUtils.d.ts.map +1 -1
  77. package/src/core/json/JsonUtils.js +0 -4
  78. package/src/core/math/random/MersenneTwister.d.ts +1 -2
  79. package/src/core/math/random/MersenneTwister.d.ts.map +1 -1
  80. package/src/core/math/random/MersenneTwister.js +134 -133
  81. package/src/core/model/BooleanVector3.d.ts.map +1 -1
  82. package/src/core/model/BooleanVector3.js +108 -108
  83. package/src/core/model/BoundedValue.d.ts +116 -0
  84. package/src/core/model/BoundedValue.d.ts.map +1 -0
  85. package/src/core/model/BoundedValue.js +214 -217
  86. package/src/core/model/LinearValue.d.ts +84 -0
  87. package/src/core/model/LinearValue.d.ts.map +1 -0
  88. package/src/core/model/LinearValue.js +116 -117
  89. package/src/core/model/ObservedEnum.d.ts.map +1 -1
  90. package/src/core/model/ObservedEnum.js +82 -80
  91. package/src/core/model/ObservedValue.d.ts +10 -17
  92. package/src/core/model/ObservedValue.d.ts.map +1 -1
  93. package/src/core/model/ObservedValue.js +85 -88
  94. package/src/core/model/object/ObjectPoolFactory.d.ts +1 -9
  95. package/src/core/model/object/ObjectPoolFactory.d.ts.map +1 -1
  96. package/src/core/model/object/ObjectPoolFactory.js +73 -73
  97. package/src/core/model/scheme/Schema.d.ts +0 -6
  98. package/src/core/model/scheme/Schema.d.ts.map +1 -1
  99. package/src/core/model/scheme/Schema.js +50 -48
  100. package/src/core/model/scheme/SchemeRegistry.d.ts +6 -1
  101. package/src/core/model/scheme/SchemeRegistry.d.ts.map +1 -1
  102. package/src/core/model/scheme/SchemeRegistry.js +46 -44
  103. package/src/core/process/Future.d.ts +14 -9
  104. package/src/core/process/Future.d.ts.map +1 -1
  105. package/src/core/process/Future.js +96 -98
  106. package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
  107. package/src/core/process/executor/ConcurrentExecutor.js +0 -3
  108. package/src/core/process/task/Task.d.ts.map +1 -1
  109. package/src/core/process/task/Task.js +0 -5
  110. package/src/core/process/task/TaskGroup.d.ts.map +1 -1
  111. package/src/core/process/task/TaskGroup.js +178 -180
  112. package/src/core/process/task/TaskSignal.d.ts.map +1 -1
  113. package/src/core/process/task/TaskSignal.js +0 -5
  114. package/src/core/process/task/TaskState.d.ts.map +1 -1
  115. package/src/core/process/task/TaskState.js +0 -4
  116. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  117. package/src/core/process/worker/WorkerBuilder.js +0 -5
  118. package/src/core/process/worker/WorkerProxy.d.ts.map +1 -1
  119. package/src/core/process/worker/WorkerProxy.js +0 -5
  120. package/src/engine/Clock.d.ts.map +1 -1
  121. package/src/engine/Clock.js +0 -5
  122. package/src/engine/Engine.js +4 -4
  123. package/src/engine/EntityCreator.d.ts.map +1 -1
  124. package/src/engine/EntityCreator.js +7 -10
  125. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  126. package/src/engine/animation/AnimatedActions.js +0 -5
  127. package/src/engine/animation/Animations.d.ts.map +1 -1
  128. package/src/engine/animation/Animations.js +1 -6
  129. package/src/engine/animation/EntityAnimation.js +1 -4
  130. package/src/engine/animation/Tween.js +1 -4
  131. package/src/engine/animation/keyed2/AnimationTrack.d.ts +0 -6
  132. package/src/engine/animation/keyed2/AnimationTrack.d.ts.map +1 -1
  133. package/src/engine/animation/keyed2/AnimationTrack.js +154 -152
  134. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +0 -10
  135. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  136. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +173 -171
  137. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  138. package/src/engine/asset/AssetManager.js +0 -5
  139. package/src/engine/asset/preloader/AssetLevel.js +0 -3
  140. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  141. package/src/engine/ecs/EntityManager.js +0 -4
  142. package/src/engine/ecs/System.d.ts.map +1 -1
  143. package/src/engine/ecs/System.js +0 -5
  144. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  145. package/src/engine/ecs/animation/Animation.js +1 -19
  146. package/src/engine/ecs/components/Motion.d.ts.map +1 -1
  147. package/src/engine/ecs/components/Motion.js +0 -5
  148. package/src/engine/ecs/components/PropertySet.d.ts +8 -1
  149. package/src/engine/ecs/components/PropertySet.d.ts.map +1 -1
  150. package/src/engine/ecs/components/PropertySet.js +87 -83
  151. package/src/engine/ecs/components/Script.d.ts +0 -16
  152. package/src/engine/ecs/components/Script.d.ts.map +1 -1
  153. package/src/engine/ecs/components/Script.js +14 -18
  154. package/src/engine/ecs/components/Tag.d.ts.map +1 -1
  155. package/src/engine/ecs/components/Tag.js +4 -5
  156. package/src/engine/ecs/components/Timer.d.ts +0 -5
  157. package/src/engine/ecs/components/Timer.d.ts.map +1 -1
  158. package/src/engine/ecs/components/Timer.js +0 -5
  159. package/src/engine/ecs/grid/HeightMap2NormalMap.d.ts.map +1 -1
  160. package/src/engine/ecs/grid/HeightMap2NormalMap.js +2 -6
  161. package/src/engine/ecs/grid/HeightSampler2NormalSamplerSoft.d.ts.map +1 -1
  162. package/src/engine/ecs/grid/HeightSampler2NormalSamplerSoft.js +0 -3
  163. package/src/engine/ecs/grid/NormalMap2AOMap.d.ts.map +1 -1
  164. package/src/engine/ecs/grid/NormalMap2AOMap.js +3 -8
  165. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  166. package/src/engine/ecs/gui/GUIElement.js +0 -3
  167. package/src/engine/ecs/gui/GUIElementSystem.d.ts.map +1 -1
  168. package/src/engine/ecs/gui/GUIElementSystem.js +0 -4
  169. package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts.map +1 -1
  170. package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +0 -7
  171. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  172. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +0 -5
  173. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts.map +1 -1
  174. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -8
  175. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  176. package/src/engine/ecs/gui/position/ViewportPosition.js +0 -4
  177. package/src/engine/ecs/gui/position/ViewportPositionSystem.d.ts +1 -2
  178. package/src/engine/ecs/gui/position/ViewportPositionSystem.d.ts.map +1 -1
  179. package/src/engine/ecs/gui/position/ViewportPositionSystem.js +6 -10
  180. package/src/engine/ecs/ik/IKProblem.d.ts +1 -2
  181. package/src/engine/ecs/ik/IKProblem.d.ts.map +1 -1
  182. package/src/engine/ecs/renderable/RenderSystem.d.ts.map +1 -1
  183. package/src/engine/ecs/renderable/RenderSystem.js +0 -3
  184. package/src/engine/ecs/renderable/Renderable.d.ts.map +1 -1
  185. package/src/engine/ecs/renderable/Renderable.js +0 -5
  186. package/src/engine/ecs/systems/AnimationSystem.d.ts.map +1 -1
  187. package/src/engine/ecs/systems/AnimationSystem.js +9 -17
  188. package/src/engine/ecs/systems/MotionSystem.d.ts.map +1 -1
  189. package/src/engine/ecs/systems/MotionSystem.js +1 -6
  190. package/src/engine/ecs/systems/ScriptSystem.d.ts.map +1 -1
  191. package/src/engine/ecs/systems/ScriptSystem.js +1 -6
  192. package/src/engine/ecs/systems/TimerSystem.d.ts.map +1 -1
  193. package/src/engine/ecs/systems/TimerSystem.js +1 -6
  194. package/src/engine/ecs/team/Team.d.ts.map +1 -1
  195. package/src/engine/ecs/team/Team.js +0 -3
  196. package/src/engine/ecs/terrain/BufferedGeometryArraysBuilder.d.ts.map +1 -1
  197. package/src/engine/ecs/terrain/BufferedGeometryArraysBuilder.js +0 -5
  198. package/src/engine/ecs/terrain/TerrainClouds.d.ts.map +1 -1
  199. package/src/engine/ecs/terrain/TerrainClouds.js +0 -5
  200. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  201. package/src/engine/ecs/terrain/ecs/Terrain.js +0 -5
  202. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrain.d.ts.map +1 -1
  203. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrain.js +0 -3
  204. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  205. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +11 -14
  206. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
  207. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +0 -5
  208. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  209. package/src/engine/ecs/terrain/tiles/TerrainTile.js +0 -5
  210. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +1 -1
  211. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  212. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +0 -3
  213. package/src/engine/ecs/terrain/tiles/TileBuildWorker.js +0 -4
  214. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  215. package/src/engine/ecs/transform/Transform.js +0 -4
  216. package/src/engine/google/gapi.js +0 -4
  217. package/src/engine/graphics/FrameThrottle.d.ts +0 -4
  218. package/src/engine/graphics/FrameThrottle.d.ts.map +1 -1
  219. package/src/engine/graphics/FrameThrottle.js +0 -5
  220. package/src/engine/graphics/GraphicsEngine.d.ts.map +1 -1
  221. package/src/engine/graphics/GraphicsEngine.js +1 -6
  222. package/src/engine/graphics/composit/LayerCompositer.d.ts.map +1 -1
  223. package/src/engine/graphics/composit/LayerCompositer.js +2 -5
  224. package/src/engine/graphics/ecs/animation/AnimationController.d.ts.map +1 -1
  225. package/src/engine/graphics/ecs/animation/AnimationController.js +0 -5
  226. package/src/engine/graphics/ecs/animation/AnimationControllerSystem.d.ts.map +1 -1
  227. package/src/engine/graphics/ecs/animation/AnimationControllerSystem.js +2 -7
  228. package/src/engine/graphics/ecs/animation/AnimationRule.d.ts +0 -1
  229. package/src/engine/graphics/ecs/animation/AnimationRule.d.ts.map +1 -1
  230. package/src/engine/graphics/ecs/animation/AnimationRule.js +70 -66
  231. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  232. package/src/engine/graphics/ecs/camera/Camera.js +0 -5
  233. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  234. package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -5
  235. package/src/engine/graphics/ecs/camera/FrustumProjector.d.ts.map +1 -1
  236. package/src/engine/graphics/ecs/camera/FrustumProjector.js +0 -5
  237. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  238. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +4 -9
  239. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  240. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +3 -8
  241. package/src/engine/graphics/ecs/highlight/Highlight.d.ts.map +1 -1
  242. package/src/engine/graphics/ecs/highlight/Highlight.js +0 -3
  243. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  244. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +3 -8
  245. package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
  246. package/src/engine/graphics/ecs/light/Light.js +2 -6
  247. package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
  248. package/src/engine/graphics/ecs/light/LightSystem.js +0 -5
  249. package/src/engine/graphics/ecs/mesh/Mesh.d.ts.map +1 -1
  250. package/src/engine/graphics/ecs/mesh/Mesh.js +0 -3
  251. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  252. package/src/engine/graphics/ecs/mesh/MeshSystem.js +0 -5
  253. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  254. package/src/engine/graphics/ecs/trail2d/Trail2D.js +0 -5
  255. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  256. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +0 -5
  257. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  258. package/src/engine/graphics/ecs/water/Water.js +0 -5
  259. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  260. package/src/engine/graphics/ecs/water/WaterSystem.js +0 -3
  261. package/src/engine/graphics/filter/ImageFilter.d.ts.map +1 -1
  262. package/src/engine/graphics/filter/ImageFilter.js +0 -5
  263. package/src/engine/graphics/geometry/BufferGeometryWrap.js +1 -3
  264. package/src/engine/graphics/geometry/buffered/ComputeNormals.d.ts.map +1 -1
  265. package/src/engine/graphics/geometry/buffered/ComputeNormals.js +0 -5
  266. package/src/engine/graphics/geometry/ribbon/Ribbon.d.ts.map +1 -1
  267. package/src/engine/graphics/geometry/ribbon/Ribbon.js +1 -4
  268. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  269. package/src/engine/graphics/material/SplatMaterial.js +0 -3
  270. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  271. package/src/engine/graphics/material/WaterMaterial.js +0 -3
  272. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts +0 -5
  273. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +1 -1
  274. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.js +114 -114
  275. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -1
  276. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
  277. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +347 -348
  278. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +1 -3
  279. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
  280. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -1
  281. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +1 -1
  282. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +110 -111
  283. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSheet.d.ts +0 -9
  284. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSheet.d.ts.map +1 -1
  285. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSheet.js +70 -66
  286. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -5
  287. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +1 -1
  288. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +82 -82
  289. package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -7
  290. package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +1 -1
  291. package/src/engine/graphics/particles/particular/group/Operation.js +16 -14
  292. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -9
  293. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +1 -1
  294. package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +23 -21
  295. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts +2 -10
  296. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts.map +1 -1
  297. package/src/engine/graphics/particles/particular/group/ParticleGroup.js +463 -464
  298. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -2
  299. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +1 -1
  300. package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +39 -33
  301. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +6 -1
  302. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +1 -1
  303. package/src/engine/graphics/render/buffer/FrameBufferManager.js +166 -163
  304. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  305. package/src/engine/graphics/render/layers/RenderLayer.js +0 -5
  306. package/src/engine/graphics/shaders/AlphaBlendShader.js +1 -3
  307. package/src/engine/graphics/shaders/AmbientOcclusionShader.d.ts.map +1 -1
  308. package/src/engine/graphics/shaders/AmbientOcclusionShader.js +0 -3
  309. package/src/engine/graphics/shaders/ClearShader.js +1 -3
  310. package/src/engine/graphics/shaders/CopyShader.d.ts +0 -3
  311. package/src/engine/graphics/shaders/CopyShader.d.ts.map +1 -1
  312. package/src/engine/graphics/shaders/CopyShader.js +1 -3
  313. package/src/engine/graphics/shaders/NormalMapShader2.d.ts.map +1 -1
  314. package/src/engine/graphics/shaders/NormalMapShader2.js +0 -5
  315. package/src/engine/graphics/shaders/TerrainShader.js +0 -4
  316. package/src/engine/graphics/shaders/WaterShader.js +0 -3
  317. package/src/engine/graphics/shaders/lib/ShaderChunks.js +1 -3
  318. package/src/engine/graphics/texture/Canvas2Sampler2D.d.ts.map +1 -1
  319. package/src/engine/graphics/texture/Canvas2Sampler2D.js +1 -4
  320. package/src/engine/graphics/texture/CheckersTexture.d.ts.map +1 -1
  321. package/src/engine/graphics/texture/CheckersTexture.js +0 -3
  322. package/src/engine/graphics/texture/CheckersTextureURI.js +1 -3
  323. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  324. package/src/engine/graphics/texture/sampler/Sampler2D.js +0 -5
  325. package/src/engine/graphics/texture/sampler/Sampler2D2Canvas.d.ts.map +1 -1
  326. package/src/engine/graphics/texture/sampler/Sampler2D2Canvas.js +0 -5
  327. package/src/engine/graphics/texture/sampler/Sampler2D2Texture.d.ts.map +1 -1
  328. package/src/engine/graphics/texture/sampler/Sampler2D2Texture.js +0 -3
  329. package/src/engine/graphics/three/ThreeFactory.d.ts.map +1 -1
  330. package/src/engine/graphics/three/ThreeFactory.js +0 -5
  331. package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts.map +1 -1
  332. package/src/engine/grid/grid2transform/GridPosition2Transform.js +0 -4
  333. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  334. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +4 -7
  335. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  336. package/src/engine/grid/obstacle/GridObstacle.js +0 -5
  337. package/src/engine/grid/position/GridPosition.d.ts.map +1 -1
  338. package/src/engine/grid/position/GridPosition.js +0 -4
  339. package/src/engine/grid/position/GridPositionSystem.d.ts.map +1 -1
  340. package/src/engine/grid/position/GridPositionSystem.js +1 -4
  341. package/src/engine/input/devices/KeyCodes.d.ts.map +1 -1
  342. package/src/engine/input/devices/KeyCodes.js +3 -4
  343. package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
  344. package/src/engine/input/devices/KeyboardDevice.js +0 -4
  345. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  346. package/src/engine/input/devices/PointerDevice.js +0 -3
  347. package/src/engine/input/ecs/components/InputController.d.ts.map +1 -1
  348. package/src/engine/input/ecs/components/InputController.js +1 -5
  349. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  350. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +5 -10
  351. package/src/engine/input/ecs/systems/InputControllerSystem.d.ts.map +1 -1
  352. package/src/engine/input/ecs/systems/InputControllerSystem.js +78 -78
  353. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  354. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -6
  355. package/src/engine/intelligence/mcts/MonteCarlo.spec.js +78 -76
  356. package/src/engine/navigation/ecs/components/Path.d.ts.map +1 -1
  357. package/src/engine/navigation/ecs/components/Path.js +0 -5
  358. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts.map +1 -1
  359. package/src/engine/navigation/ecs/path_following/PathFollower.js +1 -6
  360. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  361. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +5 -12
  362. package/src/engine/network/DataChannel.js +284 -284
  363. package/src/engine/network/xhr.d.ts +0 -3
  364. package/src/engine/network/xhr.d.ts.map +1 -1
  365. package/src/engine/network/xhr.js +0 -3
  366. package/src/engine/notify/Notification.d.ts +1 -1
  367. package/src/engine/notify/Notification.d.ts.map +1 -1
  368. package/src/engine/notify/Notification.js +1 -6
  369. package/src/engine/notify/NotificationLog.d.ts.map +1 -1
  370. package/src/engine/notify/NotificationLog.js +0 -5
  371. package/src/engine/options/OptionsView.d.ts.map +1 -1
  372. package/src/engine/options/OptionsView.js +1 -6
  373. package/src/engine/physics/ammo/Body.js +0 -3
  374. package/src/engine/physics/ammo/PhysicsWorker.d.ts.map +1 -1
  375. package/src/engine/physics/ammo/PhysicsWorker.js +1 -3
  376. package/src/engine/physics/ammo/World.d.ts +68 -0
  377. package/src/engine/physics/ammo/World.d.ts.map +1 -0
  378. package/src/engine/physics/ammo/World.js +277 -278
  379. package/src/engine/physics/ammo/shapes/BoxShape.js +0 -3
  380. package/src/engine/physics/ammo/shapes/CapsuleShape.js +0 -3
  381. package/src/engine/physics/ammo/shapes/MeshShape.js +0 -3
  382. package/src/engine/physics/ammo/shapes/PlaneShape.js +0 -3
  383. package/src/engine/physics/ammo/shapes/Shape.js +1 -3
  384. package/src/engine/physics/ammo/shapes/SphereShape.js +0 -3
  385. package/src/engine/physics/cannon/CannonJSPhysicsSystem.d.ts.map +1 -1
  386. package/src/engine/physics/cannon/CannonJSPhysicsSystem.js +3 -6
  387. package/src/engine/save/GameStateLoader.d.ts.map +1 -1
  388. package/src/engine/save/GameStateLoader.js +1 -5
  389. package/src/engine/save/Storage.d.ts.map +1 -1
  390. package/src/engine/save/Storage.js +0 -7
  391. package/src/engine/scene/Scene.d.ts.map +1 -1
  392. package/src/engine/scene/Scene.js +2 -7
  393. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  394. package/src/engine/scene/SceneManager.js +1 -4
  395. package/src/engine/simulation/DormandPrince.d.ts +0 -1
  396. package/src/engine/simulation/DormandPrince.d.ts.map +1 -1
  397. package/src/engine/simulation/DormandPrince.js +5 -5
  398. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  399. package/src/engine/simulation/Ticker.js +0 -3
  400. package/src/engine/sound/ecs/SoundController.d.ts +0 -7
  401. package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
  402. package/src/engine/sound/ecs/SoundController.js +118 -119
  403. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  404. package/src/engine/sound/ecs/SoundControllerSystem.js +3 -8
  405. package/src/engine/sound/ecs/SoundListener.d.ts +0 -1
  406. package/src/engine/sound/ecs/SoundListener.d.ts.map +1 -1
  407. package/src/engine/sound/ecs/SoundListener.js +26 -29
  408. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  409. package/src/engine/sound/ecs/SoundListenerSystem.js +0 -5
  410. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +1 -1
  411. package/src/engine/sound/ecs/emitter/SoundEmitter.js +0 -5
  412. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  413. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -7
  414. package/src/engine/ui/GUIEngine.d.ts.map +1 -1
  415. package/src/engine/ui/GUIEngine.js +0 -5
  416. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  417. package/src/engine/ui/tiles2d/TileGrid.js +1 -4
  418. package/src/generation/markers/debug/visualizeMarkers.js +10 -10
  419. package/src/view/DOM.js +1 -3
  420. package/src/view/SVG.d.ts +0 -3
  421. package/src/view/SVG.d.ts.map +1 -1
  422. package/src/view/SVG.js +0 -4
  423. package/src/view/asset/PreloaderView.d.ts.map +1 -1
  424. package/src/view/asset/PreloaderView.js +0 -3
  425. package/src/view/common/LabelView.d.ts +1 -6
  426. package/src/view/common/LabelView.d.ts.map +1 -1
  427. package/src/view/common/LabelView.js +24 -33
  428. package/src/view/common/ListView.d.ts.map +1 -1
  429. package/src/view/common/ListView.js +0 -6
  430. package/src/view/common/MeshView.js +3 -6
  431. package/src/view/common/VirtualListView.d.ts.map +1 -1
  432. package/src/view/common/VirtualListView.js +0 -5
  433. package/src/view/common/dnd/DragAndDropContext.d.ts +1 -2
  434. package/src/view/common/dnd/DragAndDropContext.d.ts.map +1 -1
  435. package/src/view/common/dnd/DragAndDropContext.js +107 -110
  436. package/src/view/controller/GuiController.d.ts.map +1 -1
  437. package/src/view/controller/GuiController.js +1 -6
  438. package/src/view/controller/controls/BooleanVector3Control.d.ts +1 -1
  439. package/src/view/controller/controls/BooleanVector3Control.d.ts.map +1 -1
  440. package/src/view/controller/controls/GuiControl.js +2 -7
  441. package/src/view/controller/controls/Vector1Control.d.ts +1 -1
  442. package/src/view/controller/controls/Vector1Control.d.ts.map +1 -1
  443. package/src/view/controller/controls/Vector1Control.js +2 -7
  444. package/src/view/controller/controls/Vector2Control.d.ts.map +1 -1
  445. package/src/view/controller/controls/Vector2Control.js +0 -4
  446. package/src/view/controller/controls/Vector3Control.d.ts.map +1 -1
  447. package/src/view/controller/controls/Vector3Control.js +0 -3
  448. package/src/view/elements/ConfirmationDialogView.d.ts.map +1 -1
  449. package/src/view/elements/ConfirmationDialogView.js +1 -6
  450. package/src/view/elements/DropDownSelectionView.d.ts.map +1 -1
  451. package/src/view/elements/DropDownSelectionView.js +0 -5
  452. package/src/view/elements/EmptyView.d.ts.map +1 -1
  453. package/src/view/elements/EmptyView.js +0 -4
  454. package/src/view/elements/Group.d.ts.map +1 -1
  455. package/src/view/elements/Group.js +0 -3
  456. package/src/view/elements/MeshPreview.d.ts.map +1 -1
  457. package/src/view/elements/MeshPreview.js +5 -8
  458. package/src/view/elements/SimpleWindow.d.ts +1 -1
  459. package/src/view/elements/SimpleWindow.d.ts.map +1 -1
  460. package/src/view/elements/SimpleWindow.js +5 -11
  461. package/src/view/elements/button/ButtonView.d.ts.map +1 -1
  462. package/src/view/elements/button/ButtonView.js +1 -5
  463. package/src/view/elements/image/ImageView.d.ts.map +1 -1
  464. package/src/view/elements/image/ImageView.js +0 -4
  465. package/src/view/elements/image/SvgImageView.d.ts.map +1 -1
  466. package/src/view/elements/image/SvgImageView.js +2 -7
  467. package/src/view/elements/label/LabeledValueView.d.ts.map +1 -1
  468. package/src/view/elements/label/LabeledValueView.js +3 -8
  469. package/src/view/elements/navigation/ViewStack.d.ts +0 -7
  470. package/src/view/elements/navigation/ViewStack.d.ts.map +1 -1
  471. package/src/view/elements/navigation/ViewStack.js +17 -19
  472. package/src/view/elements/notify/NotificationView.js +1 -4
  473. package/src/view/elements/notify/ToastLogView.d.ts.map +1 -1
  474. package/src/view/elements/notify/ToastLogView.js +0 -3
  475. package/src/view/elements/progress/SmoothProgressBar.d.ts +72 -0
  476. package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -0
  477. package/src/view/elements/radial/RadialMenu.d.ts.map +1 -1
  478. package/src/view/elements/radial/RadialMenu.js +1 -6
  479. package/src/view/elements/radial/RadialMenuElement.d.ts.map +1 -1
  480. package/src/view/elements/radial/RadialMenuElement.js +1 -4
  481. package/src/view/elements/radial/RadialProgressView.d.ts +1 -1
  482. package/src/view/elements/radial/RadialProgressView.d.ts.map +1 -1
  483. package/src/view/elements/radial/RadialProgressView.js +4 -9
  484. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  485. package/src/view/elements/tiles2d/Tile.js +3 -6
  486. package/src/view/elements/tiles2d/TileGrid.d.ts.map +1 -1
  487. package/src/view/elements/tiles2d/TileGrid.js +0 -5
  488. package/src/view/minimap/Minimap.d.ts.map +1 -1
  489. package/src/view/minimap/Minimap.js +11 -16
  490. package/src/view/minimap/dom/MinimapCameraView.d.ts +1 -2
  491. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  492. package/src/view/minimap/dom/MinimapTerrainView.d.ts +1 -1
  493. package/src/view/minimap/dom/MinimapTerrainView.d.ts.map +1 -1
  494. package/src/view/minimap/gl/MarkerGL.d.ts +2 -12
  495. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  496. package/src/view/minimap/gl/MarkerGL.js +60 -56
  497. package/src/view/minimap/gl/MinimapMarkersGL.d.ts +1 -1
  498. package/src/view/minimap/gl/MinimapMarkersGL.d.ts.map +1 -1
  499. package/src/view/minimap/gl/MinimapTerrainGL.d.ts +1 -2
  500. package/src/view/minimap/gl/MinimapTerrainGL.d.ts.map +1 -1
  501. package/src/view/renderModel.d.ts.map +1 -1
  502. package/src/view/renderModel.js +3 -7
  503. package/src/view/task/TaskProgressView.d.ts.map +1 -1
  504. package/src/view/task/TaskProgressView.js +0 -5
  505. package/src/engine/asset/loaders/LegacyThreeJSONAssetLoader.d.ts +0 -9
  506. package/src/engine/asset/loaders/LegacyThreeJSONAssetLoader.d.ts.map +0 -1
  507. package/src/engine/asset/loaders/LegacyThreeJSONAssetLoader.js +0 -105
  508. package/src/engine/graphics/geometry/decimation/SimplifyModifier.d.ts +0 -117
  509. package/src/engine/graphics/geometry/decimation/SimplifyModifier.d.ts.map +0 -1
  510. package/src/engine/graphics/geometry/decimation/SimplifyModifier.js +0 -971
  511. package/src/engine/graphics/loader/threejs/GLTFLoader.js +0 -3179
  512. package/src/engine/graphics/loader/threejs/LegacyJSONLoader.d.ts +0 -6
  513. package/src/engine/graphics/loader/threejs/LegacyJSONLoader.d.ts.map +0 -1
  514. package/src/engine/graphics/loader/threejs/LegacyJSONLoader.js +0 -845
  515. package/src/engine/graphics/postprocess/Postprocess.js +0 -284
  516. package/src/engine/graphics/postprocess/threejs/Mirror.js +0 -330
  517. package/src/engine/graphics/postprocess/threejs/WaterShader.js +0 -306
  518. package/src/engine/graphics/postprocess/threejs/postprocessing/AdaptiveToneMappingPass.js +0 -338
  519. package/src/engine/graphics/postprocess/threejs/postprocessing/BloomPass.js +0 -132
  520. package/src/engine/graphics/postprocess/threejs/postprocessing/BokehPass.js +0 -115
  521. package/src/engine/graphics/postprocess/threejs/postprocessing/ClearMaskPass.d.ts +0 -4
  522. package/src/engine/graphics/postprocess/threejs/postprocessing/ClearMaskPass.d.ts.map +0 -1
  523. package/src/engine/graphics/postprocess/threejs/postprocessing/ClearMaskPass.js +0 -23
  524. package/src/engine/graphics/postprocess/threejs/postprocessing/DotScreenPass.d.ts +0 -1
  525. package/src/engine/graphics/postprocess/threejs/postprocessing/DotScreenPass.d.ts.map +0 -1
  526. package/src/engine/graphics/postprocess/threejs/postprocessing/DotScreenPass.js +0 -60
  527. package/src/engine/graphics/postprocess/threejs/postprocessing/EffectComposer.js +0 -150
  528. package/src/engine/graphics/postprocess/threejs/postprocessing/FilmPass.d.ts +0 -1
  529. package/src/engine/graphics/postprocess/threejs/postprocessing/FilmPass.d.ts.map +0 -1
  530. package/src/engine/graphics/postprocess/threejs/postprocessing/FilmPass.js +0 -61
  531. package/src/engine/graphics/postprocess/threejs/postprocessing/GlitchPass.d.ts +0 -1
  532. package/src/engine/graphics/postprocess/threejs/postprocessing/GlitchPass.d.ts.map +0 -1
  533. package/src/engine/graphics/postprocess/threejs/postprocessing/GlitchPass.js +0 -117
  534. package/src/engine/graphics/postprocess/threejs/postprocessing/RenderPass.js +0 -63
  535. package/src/engine/graphics/postprocess/threejs/postprocessing/SMAAPass.js +0 -187
  536. package/src/engine/graphics/postprocess/threejs/postprocessing/SavePass.d.ts +0 -1
  537. package/src/engine/graphics/postprocess/threejs/postprocessing/SavePass.d.ts.map +0 -1
  538. package/src/engine/graphics/postprocess/threejs/postprocessing/SavePass.js +0 -67
  539. package/src/engine/graphics/postprocess/threejs/postprocessing/TexturePass.js +0 -50
  540. package/src/engine/graphics/postprocess/threejs/shaders/BokehShader.d.ts +0 -42
  541. package/src/engine/graphics/postprocess/threejs/shaders/BokehShader.d.ts.map +0 -1
  542. package/src/engine/graphics/postprocess/threejs/shaders/BokehShader.js +0 -117
  543. package/src/engine/graphics/postprocess/threejs/shaders/ConvolutionShader.d.ts +0 -30
  544. package/src/engine/graphics/postprocess/threejs/shaders/ConvolutionShader.d.ts.map +0 -1
  545. package/src/engine/graphics/postprocess/threejs/shaders/ConvolutionShader.js +0 -106
  546. package/src/engine/graphics/postprocess/threejs/shaders/FXAAShader.d.ts +0 -19
  547. package/src/engine/graphics/postprocess/threejs/shaders/FXAAShader.d.ts.map +0 -1
  548. package/src/engine/graphics/postprocess/threejs/shaders/FXAAShader.js +0 -90
  549. package/src/engine/graphics/postprocess/threejs/shaders/GammaCorrectionShader.d.ts +0 -12
  550. package/src/engine/graphics/postprocess/threejs/shaders/GammaCorrectionShader.d.ts.map +0 -1
  551. package/src/engine/graphics/postprocess/threejs/shaders/GammaCorrectionShader.js +0 -52
  552. package/src/engine/graphics/postprocess/threejs/shaders/LuminosityShader.d.ts +0 -12
  553. package/src/engine/graphics/postprocess/threejs/shaders/LuminosityShader.d.ts.map +0 -1
  554. package/src/engine/graphics/postprocess/threejs/shaders/LuminosityShader.js +0 -51
  555. package/src/engine/graphics/postprocess/threejs/shaders/SMAAShader.d.ts +0 -76
  556. package/src/engine/graphics/postprocess/threejs/shaders/SMAAShader.d.ts.map +0 -1
  557. package/src/engine/graphics/postprocess/threejs/shaders/SMAAShader.js +0 -468
  558. package/src/engine/graphics/postprocess/threejs/shaders/SSAOShader.d.ts +0 -61
  559. package/src/engine/graphics/postprocess/threejs/shaders/SSAOShader.d.ts.map +0 -1
  560. package/src/engine/graphics/postprocess/threejs/shaders/SSAOShader.js +0 -230
  561. package/src/engine/graphics/postprocess/threejs/shaders/ToneMapShader.d.ts +0 -36
  562. package/src/engine/graphics/postprocess/threejs/shaders/ToneMapShader.d.ts.map +0 -1
  563. package/src/engine/graphics/postprocess/threejs/shaders/ToneMapShader.js +0 -76
  564. package/src/engine/graphics/shaders/GaussianBlurShader.d.ts +0 -22
  565. package/src/engine/graphics/shaders/GaussianBlurShader.d.ts.map +0 -1
  566. package/src/engine/graphics/shaders/GaussianBlurShader.js +0 -79
  567. package/src/engine/graphics/shaders/GaussianGlowShader.d.ts +0 -26
  568. package/src/engine/graphics/shaders/GaussianGlowShader.d.ts.map +0 -1
  569. package/src/engine/graphics/shaders/GaussianGlowShader.js +0 -83
  570. package/src/engine/graphics/shaders/NormalMapShader.d.ts +0 -33
  571. package/src/engine/graphics/shaders/NormalMapShader.d.ts.map +0 -1
  572. package/src/engine/graphics/shaders/NormalMapShader.js +0 -62
  573. package/src/engine/graphics/shaders/SoftOutlineShader.d.ts +0 -3
  574. package/src/engine/graphics/shaders/SoftOutlineShader.d.ts.map +0 -1
  575. package/src/engine/graphics/shaders/SoftOutlineShader.js +0 -111
  576. package/src/engine/graphics/three/Reflector.d.ts +0 -12
  577. package/src/engine/graphics/three/Reflector.d.ts.map +0 -1
  578. package/src/engine/graphics/three/Reflector.js +0 -281
  579. package/src/engine/graphics/three/Refractor.d.ts +0 -11
  580. package/src/engine/graphics/three/Refractor.d.ts.map +0 -1
  581. package/src/engine/graphics/three/Refractor.js +0 -352
  582. package/src/engine/navigation/ecs/components/PathFinder.d.ts +0 -14
  583. package/src/engine/navigation/ecs/components/PathFinder.d.ts.map +0 -1
  584. package/src/engine/navigation/ecs/components/PathFinder.js +0 -11
  585. package/src/view/elements/navigation/NavigationMenu.d.ts +0 -13
  586. package/src/view/elements/navigation/NavigationMenu.d.ts.map +0 -1
  587. package/src/view/elements/navigation/NavigationMenu.js +0 -27
@@ -2,7 +2,6 @@
2
2
  *
3
3
  * @enum {number}
4
4
  */
5
- import IdPool from "../../../../../core/IdPool.js";
6
5
  import {
7
6
  BufferAttribute,
8
7
  BufferGeometry,
@@ -10,628 +9,628 @@ import {
10
9
  InstancedBufferAttribute,
11
10
  InstancedBufferGeometry
12
11
  } from "three";
12
+ import IdPool from "../../../../../core/IdPool.js";
13
13
  import ObservedValue from "../../../../../core/model/ObservedValue.js";
14
- import { typedArrayConstructorFromDataType } from "./typedArrayConstructorFromDataType.js";
15
14
  import { itemSizeFromAttributeType } from "./itemSizeFromAttributeType.js";
16
- import { OperationType } from "./OperationType.js";
17
15
  import { Operation } from "./Operation.js";
16
+ import { OperationType } from "./OperationType.js";
18
17
  import { optimizeCommandQueue } from "./optimizeCommandQueue.js";
18
+ import { typedArrayConstructorFromDataType } from "./typedArrayConstructorFromDataType.js";
19
19
 
20
20
 
21
- /**
22
- *
23
- * @param {ParticleSpecification} spec
24
- * @param {boolean} [instanced=false]
25
- * @constructor
26
- */
27
- function ParticleGroup(spec, instanced = false) {
28
- this.instanced = instanced;
21
+ export class ParticleGroup {
29
22
  /**
30
23
  *
31
- * @type {ParticleSpecification}
24
+ * @param {ParticleSpecification} spec
25
+ * @param {boolean} [instanced=false]
26
+ * @constructor
32
27
  */
33
- this.spec = spec;
28
+ constructor(spec, instanced = false) {
29
+ this.instanced = instanced;
30
+ /**
31
+ *
32
+ * @type {ParticleSpecification}
33
+ */
34
+ this.spec = spec;
34
35
 
35
- this.attributes = [];
36
+ this.attributes = [];
36
37
 
37
- /**
38
- *
39
- * @type {ObservedValue<BufferGeometry>}
40
- */
41
- this.geometry = new ObservedValue(null);
38
+ /**
39
+ *
40
+ * @type {ObservedValue<BufferGeometry>}
41
+ */
42
+ this.geometry = new ObservedValue(null);
42
43
 
43
- /**
44
- *
45
- * @type {int}
46
- */
47
- this.size = 0;
44
+ /**
45
+ *
46
+ * @type {int}
47
+ */
48
+ this.size = 0;
48
49
 
49
- /**
50
- *
51
- * @type {int}
52
- */
53
- this.capacity = 100;
50
+ /**
51
+ *
52
+ * @type {int}
53
+ */
54
+ this.capacity = 100;
54
55
 
55
- this.growFactor = 1.1;
56
- this.shrinkFactor = 0.9;
56
+ this.growFactor = 1.1;
57
+ this.shrinkFactor = 0.9;
57
58
 
58
- this.referenceIndexLookup = new Map();
59
- this.indexReferenceLookup = [];
59
+ this.referenceIndexLookup = new Map();
60
+ this.indexReferenceLookup = [];
60
61
 
61
- /**
62
- *
63
- * @type {Array.<Operation>}
64
- */
65
- this.commandQueue = [];
62
+ /**
63
+ *
64
+ * @type {Array.<Operation>}
65
+ */
66
+ this.commandQueue = [];
66
67
 
67
- this.referencePool = new IdPool();
68
+ this.referencePool = new IdPool();
68
69
 
69
- this.build();
70
- }
70
+ this.build();
71
+ }
71
72
 
72
- /**
73
- *
74
- * @param {Float64Array|Float32Array|Uint32Array|Uint16Array|Uint8Array|Int32Array|Int16Array|Int8Array} array
75
- * @param {int} itemSize
76
- * @returns {InstancedBufferAttribute|BufferAttribute}
77
- */
78
- ParticleGroup.prototype.buildNewBufferAttribute = function (array, itemSize) {
79
- if (this.instanced) {
80
- return new InstancedBufferAttribute(array, itemSize);
81
- } else {
82
- return new BufferAttribute(array, itemSize);
73
+ /**
74
+ *
75
+ * @param {Float64Array|Float32Array|Uint32Array|Uint16Array|Uint8Array|Int32Array|Int16Array|Int8Array} array
76
+ * @param {int} itemSize
77
+ * @returns {InstancedBufferAttribute|BufferAttribute}
78
+ */
79
+ buildNewBufferAttribute(array, itemSize) {
80
+ if (this.instanced) {
81
+ return new InstancedBufferAttribute(array, itemSize);
82
+ } else {
83
+ return new BufferAttribute(array, itemSize);
84
+ }
83
85
  }
84
- };
85
86
 
86
- /**
87
- *
88
- * @returns {InstancedBufferGeometry|BufferGeometry}
89
- */
90
- ParticleGroup.prototype.buildNewGeometry = function () {
91
- if (this.instanced) {
92
- const result = new InstancedBufferGeometry();
93
- result.maxInstanceCount = this.capacity;
94
- return result;
95
- } else {
96
- return new BufferGeometry();
87
+ /**
88
+ *
89
+ * @returns {InstancedBufferGeometry|BufferGeometry}
90
+ */
91
+ buildNewGeometry() {
92
+ if (this.instanced) {
93
+ const result = new InstancedBufferGeometry();
94
+ result.maxInstanceCount = this.capacity;
95
+ return result;
96
+ } else {
97
+ return new BufferGeometry();
98
+ }
97
99
  }
98
- };
99
100
 
100
- ParticleGroup.prototype.build = function () {
101
- const geometry = this.buildNewGeometry();
102
- geometry.dynamic = true;
101
+ build() {
102
+ const geometry = this.buildNewGeometry();
103
+ geometry.dynamic = true;
103
104
 
104
- const l = this.spec.attributes.length;
105
- for (let i = 0; i < l; i++) {
105
+ const l = this.spec.attributes.length;
106
+ for (let i = 0; i < l; i++) {
106
107
 
107
- /**
108
- * @type {ParticleAttribute}
109
- */
110
- const attributeSpec = this.spec.attributes[i];
108
+ /**
109
+ * @type {ParticleAttribute}
110
+ */
111
+ const attributeSpec = this.spec.attributes[i];
111
112
 
112
- const itemSize = itemSizeFromAttributeType(attributeSpec.type);
113
- const TypedArrayConstructor = typedArrayConstructorFromDataType(attributeSpec.dataType);
113
+ const itemSize = itemSizeFromAttributeType(attributeSpec.type);
114
+ const TypedArrayConstructor = typedArrayConstructorFromDataType(attributeSpec.dataType);
114
115
 
115
- const newArrayLength = itemSize * this.capacity;
116
- const newArray = new TypedArrayConstructor(newArrayLength);
116
+ const newArrayLength = itemSize * this.capacity;
117
+ const newArray = new TypedArrayConstructor(newArrayLength);
117
118
 
118
- const attribute = this.attributes[i];
119
- if (attribute !== undefined && attribute.count !== 0) {
120
- //copy old data
121
- newArray.set(attribute.array.subarray(0, Math.min(newArrayLength, attribute.array.length)));
122
- }
119
+ const attribute = this.attributes[i];
120
+ if (attribute !== undefined && attribute.count !== 0) {
121
+ //copy old data
122
+ newArray.set(attribute.array.subarray(0, Math.min(newArrayLength, attribute.array.length)));
123
+ }
124
+
125
+ const newAttribute = this.buildNewBufferAttribute(newArray, itemSize);
123
126
 
124
- const newAttribute = this.buildNewBufferAttribute(newArray, itemSize);
127
+ newAttribute.setUsage(DynamicDrawUsage);
128
+ newAttribute.name = attributeSpec.name;
125
129
 
126
- newAttribute.setUsage(DynamicDrawUsage);
127
- newAttribute.name = attributeSpec.name;
130
+ this.attributes[i] = newAttribute;
128
131
 
129
- this.attributes[i] = newAttribute;
132
+ geometry.setAttribute(attributeSpec.name, newAttribute);
133
+ }
130
134
 
131
- geometry.setAttribute(attributeSpec.name, newAttribute);
135
+ this.geometry.set(geometry);
132
136
  }
133
137
 
134
- this.geometry.set(geometry);
135
- };
138
+ /**
139
+ * attributes can not grow, this means that we need to rebuild entire geometry if we want to make that happen
140
+ */
141
+ setCapacity(maxSize) {
142
+ if (this.capacity === maxSize) {
143
+ //do nothing
144
+ return;
145
+ }
136
146
 
137
- /**
138
- * attributes can not grow, this means that we need to rebuild entire geometry if we want to make that happen
139
- */
140
- ParticleGroup.prototype.setCapacity = function (maxSize) {
141
- if (this.capacity === maxSize) {
142
- //do nothing
143
- return;
144
- }
147
+ if (this.size > maxSize) {
148
+ throw new Error(`Attempted to resize capacity to ${maxSize}. Can't set capacity below current size(=${this.size}).`);
149
+ }
150
+
151
+ // console.log(`capacity resized from ${this.capacity} to ${maxSize}`);
145
152
 
146
- if (this.size > maxSize) {
147
- throw new Error(`Attempted to resize capacity to ${maxSize}. Can't set capacity below current size(=${this.size}).`);
153
+ this.capacity = maxSize;
154
+ this.build();
148
155
  }
149
156
 
150
- // console.log(`capacity resized from ${this.capacity} to ${maxSize}`);
157
+ reset() {
158
+ this.commandQueue = [];
159
+ this.size = 0;
151
160
 
152
- this.capacity = maxSize;
153
- this.build();
154
- };
161
+ this.referenceIndexLookup.clear();
162
+ this.indexReferenceLookup = [];
163
+ this.referencePool.reset();
155
164
 
156
- ParticleGroup.prototype.reset = function () {
157
- this.commandQueue = [];
158
- this.size = 0;
165
+ this.setCapacity(100);
166
+ }
159
167
 
160
- this.referenceIndexLookup.clear();
161
- this.indexReferenceLookup = [];
162
- this.referencePool.reset();
168
+ /**
169
+ * Flush command queue
170
+ * @returns {boolean} true if some operations were executed, false otherwise
171
+ */
172
+ update() {
173
+ this.optimizeCommandQueue();
174
+ const numOperations = this.commandQueue.length;
175
+ for (let i = 0; i < numOperations; i++) {
176
+ const operation = this.commandQueue[i];
177
+ this.executeOperation(operation);
178
+ }
179
+ //clear out the queue
180
+ this.commandQueue = [];
163
181
 
164
- this.setCapacity(100);
165
- };
182
+ return numOperations > 0;
183
+ }
166
184
 
167
- /**
168
- * Flush command queue
169
- * @returns {boolean} true if some operations were executed, false otherwise
170
- */
171
- ParticleGroup.prototype.update = function () {
172
- this.optimizeCommandQueue();
173
- const numOperations = this.commandQueue.length;
174
- for (let i = 0; i < numOperations; i++) {
175
- const operation = this.commandQueue[i];
176
- this.executeOperation(operation);
185
+ optimizeCommandQueue() {
186
+ optimizeCommandQueue(this.commandQueue);
177
187
  }
178
- //clear out the queue
179
- this.commandQueue = [];
180
188
 
181
- return numOperations > 0;
182
- };
189
+ /**
190
+ *
191
+ * @param {number} id
192
+ */
193
+ createSpecific(id) {
194
+ const reference = this.referencePool.getSpecific(id);
183
195
 
184
- ParticleGroup.prototype.optimizeCommandQueue = function () {
185
- optimizeCommandQueue(this.commandQueue);
186
- };
196
+ this.commandQueue.push(new Operation(OperationType.Add, [reference]));
197
+ }
187
198
 
188
- /**
189
- *
190
- * @param {number} id
191
- */
192
- ParticleGroup.prototype.createSpecific = function (id) {
193
- const reference = this.referencePool.getSpecific(id);
199
+ /**
200
+ * NOTE: Deferred operation, required update before results can be observed
201
+ * @returns {number} particle reference
202
+ */
203
+ create() {
204
+ //reserve reference
205
+ const reference = this.referencePool.get();
194
206
 
195
- this.commandQueue.push(new Operation(OperationType.Add, [reference]));
196
- };
207
+ this.commandQueue.push(new Operation(OperationType.Add, [reference]));
197
208
 
198
- /**
199
- * NOTE: Deferred operation, required update before results can be observed
200
- * @returns {number} particle reference
201
- */
202
- ParticleGroup.prototype.create = function () {
203
- //reserve reference
204
- const reference = this.referencePool.get();
209
+ return reference;
210
+ }
205
211
 
206
- this.commandQueue.push(new Operation(OperationType.Add, [reference]));
212
+ /**
213
+ * NOTE: Deferred operation, required update before results can be observed
214
+ */
215
+ remove(reference) {
216
+ this.commandQueue.push(new Operation(OperationType.Remove, [reference]));
217
+ }
207
218
 
208
- return reference;
209
- };
219
+ /**
220
+ * NOTE: this method does not take pending operations into account
221
+ * @param reference
222
+ */
223
+ contains(reference) {
224
+ return this.referenceIndexLookup.has(reference);
225
+ }
210
226
 
211
- /**
212
- * NOTE: Deferred operation, required update before results can be observed
213
- */
214
- ParticleGroup.prototype.remove = function (reference) {
215
- this.commandQueue.push(new Operation(OperationType.Remove, [reference]));
216
- };
227
+ traverseReferences(visitor) {
228
+ this.referenceIndexLookup.forEach(function (value, key) {
229
+ visitor(key);
230
+ });
231
+ }
217
232
 
218
- /**
219
- * NOTE: this method does not take pending operations into account
220
- * @param reference
221
- */
222
- ParticleGroup.prototype.contains = function (reference) {
223
- return this.referenceIndexLookup.has(reference);
224
- };
233
+ /**
234
+ * NOTE: Deferred operation, required update before results can be observed
235
+ * @param {int} reference
236
+ * @param {int} attributeIndex Index of attribute to be written
237
+ * @param {Array.<number>} value
238
+ */
239
+ writeAttribute(reference, attributeIndex, value) {
240
+ this.commandQueue.push(new Operation(OperationType.WriteAttribute, [reference, attributeIndex, value]));
241
+ }
225
242
 
226
- ParticleGroup.prototype.traverseReferences = function (visitor) {
227
- this.referenceIndexLookup.forEach(function (value, key) {
228
- visitor(key);
229
- });
230
- };
243
+ /**
244
+ *
245
+ * @param {number} index
246
+ * @param {number} attributeIndex
247
+ * @param {Array|Float32Array|Float64Array|Uint8Array} result
248
+ */
249
+ readAttributeByIndex(index, attributeIndex, result) {
250
+ const attribute = this.attributes[attributeIndex];
231
251
 
232
- /**
233
- * NOTE: Deferred operation, required update before results can be observed
234
- * @param {int} reference
235
- * @param {int} attributeIndex Index of attribute to be written
236
- * @param {Array.<number>} value
237
- */
238
- ParticleGroup.prototype.writeAttribute = function (reference, attributeIndex, value) {
239
- this.commandQueue.push(new Operation(OperationType.WriteAttribute, [reference, attributeIndex, value]));
240
- };
252
+ const itemSize = attribute.itemSize;
241
253
 
242
- /**
243
- *
244
- * @param {number} index
245
- * @param {number} attributeIndex
246
- * @param {Array|Float32Array|Float64Array|Uint8Array} result
247
- */
248
- ParticleGroup.prototype.readAttributeByIndex = function (index, attributeIndex, result) {
249
- const attribute = this.attributes[attributeIndex];
254
+ const offset = index * itemSize;
250
255
 
251
- const itemSize = attribute.itemSize;
256
+ for (let i = 0; i < itemSize; i++) {
257
+ const element = attribute.array[offset + i];
258
+ result[i] = element;
259
+ }
260
+ }
252
261
 
253
- const offset = index * itemSize;
262
+ readAttribute(reference, attributeIndex, result) {
263
+ //dereference
264
+ const index = this.referenceIndexLookup.get(reference);
254
265
 
255
- for (let i = 0; i < itemSize; i++) {
256
- const element = attribute.array[offset + i];
257
- result[i] = element;
266
+ this.readAttributeByIndex(index, attributeIndex, result);
258
267
  }
259
- };
260
268
 
261
- ParticleGroup.prototype.readAttribute = function (reference, attributeIndex, result) {
262
- //dereference
263
- const index = this.referenceIndexLookup.get(reference);
269
+ /**
270
+ * Produces reference of a particle by its index
271
+ * @param {number} index
272
+ * @returns {number}
273
+ */
274
+ referenceByIndex(index) {
275
+ return this.indexReferenceLookup[index];
276
+ }
264
277
 
265
- this.readAttributeByIndex(index, attributeIndex, result);
266
- };
267
- /**
268
- * Produces reference of a particle by its index
269
- * @param {number} index
270
- * @returns {number}
271
- */
272
- ParticleGroup.prototype.referenceByIndex = function (index) {
273
- return this.indexReferenceLookup[index];
274
- };
278
+ createImmediate() {
279
+ const reference = this.referencePool.get();
280
+ this.executeOperationAdd([reference]);
275
281
 
276
- ParticleGroup.prototype.createImmediate = function () {
277
- const reference = this.referencePool.get();
278
- this.executeOperationAdd([reference]);
282
+ return reference;
283
+ }
279
284
 
280
- return reference;
281
- };
285
+ executeOperationAdd(references) {
282
286
 
283
- ParticleGroup.prototype.executeOperationAdd = function (references) {
287
+ const numAdded = references.length;
284
288
 
285
- const numAdded = references.length;
289
+ for (let i = 0; i < numAdded; i++) {
290
+ const reference = references[i];
291
+ const index = this.size + i;
286
292
 
287
- for (let i = 0; i < numAdded; i++) {
288
- const reference = references[i];
289
- const index = this.size + i;
293
+ this.referenceIndexLookup.set(reference, index);
294
+ this.indexReferenceLookup[index] = reference;
295
+ }
290
296
 
291
- this.referenceIndexLookup.set(reference, index);
292
- this.indexReferenceLookup[index] = reference;
297
+ this.grow(numAdded);
293
298
  }
294
299
 
295
- this.grow(numAdded);
296
- };
300
+ executeOperationRemove(references) {
301
+ const numRemoved = references.length;
297
302
 
298
- ParticleGroup.prototype.executeOperationRemove = function (references) {
299
- const numRemoved = references.length;
303
+ const deleteIndices = [];
300
304
 
301
- const deleteIndices = [];
305
+ for (let i = 0; i < numRemoved; i++) {
306
+ const reference = references[i];
307
+ const index = this.referenceIndexLookup.get(reference);
302
308
 
303
- for (let i = 0; i < numRemoved; i++) {
304
- const reference = references[i];
305
- const index = this.referenceIndexLookup.get(reference);
309
+ this.referenceIndexLookup.delete(reference);
306
310
 
307
- this.referenceIndexLookup.delete(reference);
311
+ deleteIndices.push(index);
308
312
 
309
- deleteIndices.push(index);
313
+ //release reference
314
+ this.referencePool.release(reference);
315
+ }
310
316
 
311
- //release reference
312
- this.referencePool.release(reference);
317
+ this.deleteIndices(deleteIndices);
313
318
  }
314
319
 
315
- this.deleteIndices(deleteIndices);
316
- };
317
-
318
- /**
319
- *
320
- * @param reference
321
- * @param attributeIndex
322
- * @param {number[]} value
323
- */
324
- ParticleGroup.prototype.executeOperationWriteAttribute = function (reference, attributeIndex, value) {
320
+ /**
321
+ *
322
+ * @param reference
323
+ * @param attributeIndex
324
+ * @param {number[]} value
325
+ */
326
+ executeOperationWriteAttribute(reference, attributeIndex, value) {
325
327
 
326
- //de-reference
327
- const index = this.referenceIndexLookup.get(reference);
328
+ //de-reference
329
+ const index = this.referenceIndexLookup.get(reference);
328
330
 
329
- //bind attribute
330
- const attribute = this.attributes[attributeIndex];
331
+ //bind attribute
332
+ const attribute = this.attributes[attributeIndex];
331
333
 
332
- attribute.array.set(value, index * attribute.itemSize);
334
+ attribute.array.set(value, index * attribute.itemSize);
333
335
 
334
- attribute.needsUpdate = true;
335
- //TODO: set update range on the attribute
336
- };
336
+ attribute.needsUpdate = true;
337
+ //TODO: set update range on the attribute
338
+ }
337
339
 
338
- /**
339
- *
340
- * @param reference
341
- * @param attributeIndex
342
- * @param {number} value
343
- */
344
- ParticleGroup.prototype.executeOperationWriteAttribute_Scalar = function (reference, attributeIndex, value) {
345
- //de-reference
346
- const index = this.referenceIndexLookup.get(reference);
340
+ /**
341
+ *
342
+ * @param reference
343
+ * @param attributeIndex
344
+ * @param {number} value
345
+ */
346
+ executeOperationWriteAttribute_Scalar(reference, attributeIndex, value) {
347
+ //de-reference
348
+ const index = this.referenceIndexLookup.get(reference);
347
349
 
348
- //bind attribute
349
- const attribute = this.attributes[attributeIndex];
350
+ //bind attribute
351
+ const attribute = this.attributes[attributeIndex];
350
352
 
351
- attribute.array[index] = value;
353
+ attribute.array[index] = value;
352
354
 
353
- attribute.needsUpdate = true;
354
- //TODO: set update range on the attribute
355
- };
355
+ attribute.needsUpdate = true;
356
+ //TODO: set update range on the attribute
357
+ }
356
358
 
357
- /**
358
- *
359
- * @param reference
360
- * @param attributeIndex
361
- * @param x
362
- * @param y
363
- * @param z
364
- */
365
- ParticleGroup.prototype.executeOperationWriteAttribute_Vector3 = function (reference, attributeIndex, x, y, z) {
366
- //de-reference
367
- const index = this.referenceIndexLookup.get(reference);
359
+ /**
360
+ *
361
+ * @param reference
362
+ * @param attributeIndex
363
+ * @param x
364
+ * @param y
365
+ * @param z
366
+ */
367
+ executeOperationWriteAttribute_Vector3(reference, attributeIndex, x, y, z) {
368
+ //de-reference
369
+ const index = this.referenceIndexLookup.get(reference);
368
370
 
369
- //bind attribute
370
- const attribute = this.attributes[attributeIndex];
371
+ //bind attribute
372
+ const attribute = this.attributes[attributeIndex];
371
373
 
372
- const address = index * 3;
374
+ const address = index * 3;
373
375
 
374
- const array = attribute.array;
376
+ const array = attribute.array;
375
377
 
376
- array[address] = x;
377
- array[address + 1] = y;
378
- array[address + 2] = z;
378
+ array[address] = x;
379
+ array[address + 1] = y;
380
+ array[address + 2] = z;
379
381
 
380
- attribute.needsUpdate = true;
381
- //TODO: set update range on the attribute
382
- };
382
+ attribute.needsUpdate = true;
383
+ //TODO: set update range on the attribute
384
+ }
383
385
 
384
- /**
385
- *
386
- * @param reference
387
- * @param attributeIndex
388
- * @param x
389
- * @param y
390
- * @param z
391
- * @param w
392
- */
393
- ParticleGroup.prototype.executeOperationWriteAttribute_Vector4 = function (reference, attributeIndex, x, y, z, w) {
394
- //de-reference
395
- const index = this.referenceIndexLookup.get(reference);
386
+ /**
387
+ *
388
+ * @param reference
389
+ * @param attributeIndex
390
+ * @param x
391
+ * @param y
392
+ * @param z
393
+ * @param w
394
+ */
395
+ executeOperationWriteAttribute_Vector4(reference, attributeIndex, x, y, z, w) {
396
+ //de-reference
397
+ const index = this.referenceIndexLookup.get(reference);
396
398
 
397
- //bind attribute
398
- const attribute = this.attributes[attributeIndex];
399
+ //bind attribute
400
+ const attribute = this.attributes[attributeIndex];
399
401
 
400
- const address = index * 4;
402
+ const address = index * 4;
401
403
 
402
- const array = attribute.array;
404
+ const array = attribute.array;
403
405
 
404
- array[address] = x;
405
- array[address + 1] = y;
406
- array[address + 2] = z;
407
- array[address + 3] = w;
406
+ array[address] = x;
407
+ array[address + 1] = y;
408
+ array[address + 2] = z;
409
+ array[address + 3] = w;
408
410
 
409
- attribute.needsUpdate = true;
410
- //TODO: set update range on the attribute
411
- };
411
+ attribute.needsUpdate = true;
412
+ //TODO: set update range on the attribute
413
+ }
412
414
 
413
- /**
414
- *
415
- * @param {Operation} operation
416
- */
417
- ParticleGroup.prototype.executeOperation = function (operation) {
418
- const operands = operation.operands;
415
+ /**
416
+ *
417
+ * @param {Operation} operation
418
+ */
419
+ executeOperation(operation) {
420
+ const operands = operation.operands;
419
421
 
420
- const self = this;
422
+ const self = this;
421
423
 
422
- function _writeAttribute(operands) {
423
- const reference = operands[0];
424
- const attributeIndex = operands[1];
425
- const value = operands[2];
424
+ function _writeAttribute(operands) {
425
+ const reference = operands[0];
426
+ const attributeIndex = operands[1];
427
+ const value = operands[2];
426
428
 
427
- self.executeOperationWriteAttribute(reference, attributeIndex, value);
428
- }
429
+ self.executeOperationWriteAttribute(reference, attributeIndex, value);
430
+ }
429
431
 
430
- switch (operation.operator) {
431
- case OperationType.Add:
432
- this.executeOperationAdd(operands);
433
- break;
432
+ switch (operation.operator) {
433
+ case OperationType.Add:
434
+ this.executeOperationAdd(operands);
435
+ break;
434
436
 
435
- case OperationType.Remove:
436
- this.executeOperationRemove(operands);
437
- break;
437
+ case OperationType.Remove:
438
+ this.executeOperationRemove(operands);
439
+ break;
438
440
 
439
- case OperationType.WriteAttribute:
440
- _writeAttribute(operands);
441
- break;
441
+ case OperationType.WriteAttribute:
442
+ _writeAttribute(operands);
443
+ break;
442
444
 
443
- default:
444
- throw new Error(`Unsupported operator: ${operation.operator}`);
445
+ default:
446
+ throw new Error(`Unsupported operator: ${operation.operator}`);
447
+ }
445
448
  }
446
- };
447
449
 
448
- /**
449
- *
450
- * @param {Array.<int>} indices
451
- */
452
- ParticleGroup.prototype.deleteIndices = function (indices) {
453
- const deleteCount = indices.length;
450
+ /**
451
+ *
452
+ * @param {Array.<int>} indices
453
+ */
454
+ deleteIndices(indices) {
455
+ const deleteCount = indices.length;
454
456
 
455
- if (deleteCount <= 0) {
456
- //nothing to do
457
- return;
458
- }
457
+ if (deleteCount <= 0) {
458
+ //nothing to do
459
+ return;
460
+ }
459
461
 
460
- const oldSize = this.size;
461
- const newSize = oldSize - deleteCount;
462
+ const oldSize = this.size;
463
+ const newSize = oldSize - deleteCount;
462
464
 
463
- //sort indices
464
- indices.sort();
465
+ //sort indices
466
+ indices.sort();
465
467
 
466
- const specAttributes = this.spec.attributes;
467
- const numAttributes = specAttributes.length;
468
+ const specAttributes = this.spec.attributes;
469
+ const numAttributes = specAttributes.length;
468
470
 
469
- let numSwapElements = 0;
470
- const swaps = [];
471
- let swapDestination = this.size - 1;
471
+ let numSwapElements = 0;
472
+ const swaps = [];
473
+ let swapDestination = this.size - 1;
472
474
 
473
- let i, j;
475
+ let i, j;
474
476
 
475
- for (i = deleteCount - 1; i >= 0; i--) {
476
- const victim = indices[i];
477
+ for (i = deleteCount - 1; i >= 0; i--) {
478
+ const victim = indices[i];
477
479
 
478
- if (swapDestination === victim) {
479
- swapDestination--;
480
- }
480
+ if (swapDestination === victim) {
481
+ swapDestination--;
482
+ }
483
+
484
+ if (victim >= newSize) {
485
+ //is beyond the end of the new array and will be removed anyway, no need to swap
486
+ continue;
487
+ }
481
488
 
482
- if (victim >= newSize) {
483
- //is beyond the end of the new array and will be removed anyway, no need to swap
484
- continue;
489
+ swaps.push(victim, swapDestination);
490
+ numSwapElements += 2;
485
491
  }
486
492
 
487
- swaps.push(victim, swapDestination);
488
- numSwapElements += 2;
489
- }
490
493
 
494
+ for (i = 0; i < numAttributes; i++) {
495
+ const attribute = this.attributes[i];
491
496
 
492
- for (i = 0; i < numAttributes; i++) {
493
- const attribute = this.attributes[i];
497
+ const itemSize = attribute.itemSize;
494
498
 
495
- const itemSize = attribute.itemSize;
499
+ const oldArray = attribute.array;
496
500
 
497
- const oldArray = attribute.array;
501
+ //do swaps in the old array
502
+ for (j = 0; j < numSwapElements; j += 2) {
503
+ const targetIndex = swaps[j] * itemSize;
504
+ const sourceIndex = swaps[j + 1] * itemSize;
498
505
 
499
- //do swaps in the old array
500
- for (j = 0; j < numSwapElements; j += 2) {
501
- const targetIndex = swaps[j] * itemSize;
502
- const sourceIndex = swaps[j + 1] * itemSize;
506
+ oldArray.copyWithin(targetIndex, sourceIndex, sourceIndex + itemSize);
507
+ }
503
508
 
504
- oldArray.copyWithin(targetIndex, sourceIndex, sourceIndex + itemSize);
509
+ attribute.needsUpdate = true;
505
510
  }
506
511
 
507
- attribute.needsUpdate = true;
508
- }
512
+ //update references
509
513
 
510
- //update references
511
-
512
- for (j = 0; j < numSwapElements; j += 2) {
513
- const targetIndex = swaps[j];
514
- const sourceIndex = swaps[j + 1];
514
+ for (j = 0; j < numSwapElements; j += 2) {
515
+ const targetIndex = swaps[j];
516
+ const sourceIndex = swaps[j + 1];
517
+
518
+ const ref = this.indexReferenceLookup[sourceIndex];
519
+ //move reference
520
+ this.indexReferenceLookup[targetIndex] = ref;
521
+ //this reference will be getting a new index
522
+ this.referenceIndexLookup.set(ref, targetIndex);
523
+ }
515
524
 
516
- const ref = this.indexReferenceLookup[sourceIndex];
517
- //move reference
518
- this.indexReferenceLookup[targetIndex] = ref;
519
- //this reference will be getting a new index
520
- this.referenceIndexLookup.set(ref, targetIndex);
521
- }
525
+ //cut tail of index lookup
526
+ for (i = 0; i < deleteCount; i++) {
527
+ this.indexReferenceLookup.pop();
528
+ }
522
529
 
523
- //cut tail of index lookup
524
- for (i = 0; i < deleteCount; i++) {
525
- this.indexReferenceLookup.pop();
530
+ this.setSize(newSize);
526
531
  }
527
532
 
528
- this.setSize(newSize);
529
- };
533
+ /**
534
+ * Swap two particles identified by index
535
+ * @param {number} indexA
536
+ * @param {number} indexB
537
+ */
538
+ swapAttributeValues(indexA, indexB) {
539
+ const attributes = this.attributes;
540
+ const numAttributes = attributes.length;
530
541
 
531
- /**
532
- * Swap two particles identified by index
533
- * @param {number} indexA
534
- * @param {number} indexB
535
- */
536
- ParticleGroup.prototype.swapAttributeValues = function (indexA, indexB) {
537
- const attributes = this.attributes;
538
- const numAttributes = attributes.length;
542
+ let i, j;
539
543
 
540
- let i, j;
544
+ for (i = 0; i < numAttributes; i++) {
545
+ const attribute = attributes[i];
541
546
 
542
- for (i = 0; i < numAttributes; i++) {
543
- const attribute = attributes[i];
547
+ const itemSize = attribute.itemSize;
544
548
 
545
- const itemSize = attribute.itemSize;
549
+ const offsetA = indexA * itemSize;
550
+ const offsetB = indexB * itemSize;
546
551
 
547
- const offsetA = indexA * itemSize;
548
- const offsetB = indexB * itemSize;
552
+ const array = attribute.array;
549
553
 
550
- const array = attribute.array;
554
+ for (j = 0; j < itemSize; j++) {
555
+ const addressA = offsetA + j;
556
+ const addressB = offsetB + j;
551
557
 
552
- for (j = 0; j < itemSize; j++) {
553
- const addressA = offsetA + j;
554
- const addressB = offsetB + j;
558
+ const elementA = array[addressA];
555
559
 
556
- const elementA = array[addressA];
560
+ array[addressA] = array[addressB];
557
561
 
558
- array[addressA] = array[addressB];
562
+ array[addressB] = elementA;
563
+ }
559
564
 
560
- array[addressB] = elementA;
565
+ attribute.needsUpdate = true;
561
566
  }
562
567
 
563
- attribute.needsUpdate = true;
568
+
564
569
  }
565
570
 
571
+ /**
572
+ *
573
+ * @param {number} indexA
574
+ * @param {number} indexB
575
+ */
576
+ swap(indexA, indexB) {
577
+ this.swapAttributeValues(indexA, indexB);
566
578
 
567
- };
579
+ const refA = this.indexReferenceLookup[indexA];
580
+ const refB = this.indexReferenceLookup[indexB];
568
581
 
569
- /**
570
- *
571
- * @param {number} indexA
572
- * @param {number} indexB
573
- */
574
- ParticleGroup.prototype.swap = function (indexA, indexB) {
575
- this.swapAttributeValues(indexA, indexB);
582
+ this.referenceIndexLookup.set(refA, indexB);
583
+ this.referenceIndexLookup.set(refB, indexA);
576
584
 
577
- const refA = this.indexReferenceLookup[indexA];
578
- const refB = this.indexReferenceLookup[indexB];
579
-
580
- this.referenceIndexLookup.set(refA, indexB);
581
- this.referenceIndexLookup.set(refB, indexA);
585
+ this.indexReferenceLookup[indexA] = refB;
586
+ this.indexReferenceLookup[indexB] = refA;
587
+ }
582
588
 
583
- this.indexReferenceLookup[indexA] = refB;
584
- this.indexReferenceLookup[indexB] = refA;
585
- };
589
+ /**
590
+ *
591
+ * @param {int} numAdded
592
+ */
593
+ grow(numAdded) {
594
+ const oldSize = this.size;
595
+ const newSize = oldSize + numAdded;
586
596
 
587
- /**
588
- *
589
- * @param {int} numAdded
590
- */
591
- ParticleGroup.prototype.grow = function (numAdded) {
592
- const oldSize = this.size;
593
- const newSize = oldSize + numAdded;
597
+ this.setSize(newSize);
598
+ }
594
599
 
595
- this.setSize(newSize);
596
- };
600
+ preAllocate(itemCount) {
601
+ const newSize = this.size + itemCount;
597
602
 
603
+ if (this.capacity < newSize) {
604
+ this.updateCapacity(newSize);
605
+ }
606
+ }
598
607
 
599
- const SHRINK_THRESHOLD = 64;
600
- const GROW_MIN_STEP = 16;
608
+ updateCapacity(newSize) {
601
609
 
602
- ParticleGroup.prototype.preAllocate = function (itemCount) {
603
- const newSize = this.size + itemCount;
610
+ if (newSize > this.capacity) {
611
+ //grow
612
+ const newCapacity = Math.floor(Math.max(newSize, this.capacity * this.growFactor, this.capacity + GROW_MIN_STEP));
613
+ this.setCapacity(newCapacity);
614
+ } else if (newSize < this.capacity * this.shrinkFactor && newSize < this.capacity - SHRINK_THRESHOLD) {
615
+ //shrink
616
+ this.setCapacity(newSize);
617
+ }
604
618
 
605
- if (this.capacity < newSize) {
606
- this.updateCapacity(newSize);
619
+ const geometry = this.geometry.getValue();
620
+ geometry.setDrawRange(0, newSize);
607
621
  }
608
- };
609
622
 
610
- ParticleGroup.prototype.updateCapacity = function (newSize) {
623
+ /**
624
+ *
625
+ * @param {int} newSize
626
+ */
627
+ setSize(newSize) {
628
+ this.size = newSize;
611
629
 
612
- if (newSize > this.capacity) {
613
- //grow
614
- const newCapacity = Math.floor(Math.max(newSize, this.capacity * this.growFactor, this.capacity + GROW_MIN_STEP));
615
- this.setCapacity(newCapacity);
616
- } else if (newSize < this.capacity * this.shrinkFactor && newSize < this.capacity - SHRINK_THRESHOLD) {
617
- //shrink
618
- this.setCapacity(newSize);
630
+ this.updateCapacity(newSize);
619
631
  }
632
+ }
620
633
 
621
- const geometry = this.geometry.getValue();
622
- geometry.setDrawRange(0, newSize);
623
- };
624
-
625
- /**
626
- *
627
- * @param {int} newSize
628
- */
629
- ParticleGroup.prototype.setSize = function (newSize) {
630
- this.size = newSize;
631
-
632
- this.updateCapacity(newSize);
633
- };
634
634
 
635
- export {
636
- ParticleGroup
637
- };
635
+ const SHRINK_THRESHOLD = 64;
636
+ const GROW_MIN_STEP = 16;