@woosh/meep-engine 3.17.1 → 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.
- package/editor/actions/concrete/ComponentAddAction.d.ts +1 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -1
- package/editor/actions/concrete/ComponentAddAction.js +4 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts +1 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -1
- package/editor/actions/concrete/ComponentRemoveAction.js +4 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts +1 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -1
- package/editor/actions/concrete/EntityCreateAction.js +7 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts +1 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -1
- package/editor/actions/concrete/EntityRemoveAction.js +4 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +10 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -1
- package/editor/actions/concrete/PatchTerrainHeightAction.js +107 -85
- package/editor/actions/concrete/TransformModifyAction.d.ts +1 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
- package/editor/actions/concrete/TransformModifyAction.js +4 -0
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +10 -6
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +98 -4
- package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -1
- package/editor/particles/effect/make_starter_particle_effect.js +0 -2
- package/editor/tools/engine/ToolEngine.d.ts +30 -0
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
- package/editor/tools/engine/ToolEngine.js +257 -188
- package/editor/view/ecs/EntityList.d.ts.map +1 -1
- package/editor/view/ecs/EntityList.js +6 -5
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +17 -9
- package/package.json +1 -1
- package/src/CODEC_LAYOUT_VERIFICATION.md +1 -2
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts +56 -0
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts.map +1 -0
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.js +73 -0
- package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.d.ts.map +1 -1
- package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.js +18 -63
- package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts +53 -0
- package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_byte_group.js +140 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts +32 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.js +77 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts +46 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.js +146 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts +40 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.js +700 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts +24 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.js +39 -0
- package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
- package/src/core/math/random/seededRandom_Mulberry32.js +4 -2
- package/src/core/process/undo/Action.d.ts +19 -0
- package/src/core/process/undo/Action.d.ts.map +1 -1
- package/src/core/process/undo/Action.js +17 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +78 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +310 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts +17 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +30 -10
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
- package/src/engine/graphics3/particles/particle_gpu_records.js +0 -2
- package/src/engine/interpolation/InterpolationSystem.d.ts +7 -0
- package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationSystem.js +10 -0
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +14 -34
- package/src/engine/network/time/RenderPlayout.d.ts +76 -0
- package/src/engine/network/time/RenderPlayout.d.ts.map +1 -0
- package/src/engine/network/time/RenderPlayout.js +163 -0
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +11 -4
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +4 -12
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +39 -13
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.js +4 -1
- package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +23 -2
- package/src/shade/playground/particle_system/README.md +139 -139
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +0 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts +6 -9
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +6 -13
- package/src/shade/playground/ssr_reprojection/README.md +103 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts +17 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -0
- package/src/shade/playground/ssr_reprojection/index.html +79 -0
- package/src/shade/playground/ssr_reprojection/main.d.ts +2 -0
- package/src/shade/playground/ssr_reprojection/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/main.js +245 -0
- package/src/shade/playground/ssr_reprojection/scene.d.ts +18 -0
- package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/scene.js +51 -0
- package/src/shade/renderer/Renderer.d.ts +2 -23
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +185 -218
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -8
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +12 -12
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +6 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +7 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.js +51 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +5 -35
- package/src/shade/renderer/particles/DESIGN.md +703 -514
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +16 -4
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +1189 -991
- package/src/shade/renderer/particles/ParticleConstants.d.ts +64 -0
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +71 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +57 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +181 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts +7 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.js +12 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts +33 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.js +67 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts +40 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +15 -2
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +14 -8
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +58 -4
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +79 -4
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +23 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +35 -2
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +4 -2
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +5 -8
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/particle_emitter_record.js +0 -6
- package/src/shade/renderer/particles/graph_particles.d.ts +25 -3
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +108 -31
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +6 -4
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +5 -5
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +5 -0
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +27 -6
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +4 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +6 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +35 -27
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +424 -425
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +20 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +4 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -2
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts +22 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.js +42 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +53 -22
- package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +213 -216
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +50 -0
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +1 -1
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts +36 -0
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.js +102 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts +102 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.js +329 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts +112 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.js +318 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts +35 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +108 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts +3 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +70 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts +62 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.js +55 -0
- package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/PostProcess.js +2 -1
- package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +286 -0
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +57 -21
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +230 -129
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts +11 -0
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.js +6 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.js +32 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +30 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +70 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts +21 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +363 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_get_neighbour_weight.js +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts +2 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.js +24 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts +1 -6
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +16 -332
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts +1 -6
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +25 -358
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -5
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +201 -276
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +167 -143
- package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts +15 -0
- package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts.map +1 -0
- package/src/shade/renderer/shader/graph/graph_create_buffer.js +20 -0
- package/src/shade/renderer/view/GPUViewContext.d.ts +3 -4
- package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewContext.js +5 -5
- package/src/core/binary/meshopt/__meshopt_test_streams.d.ts +0 -24
- package/src/core/binary/meshopt/__meshopt_test_streams.d.ts.map +0 -1
- package/src/core/binary/meshopt/__meshopt_test_streams.js +0 -237
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +0 -84
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +0 -1
- package/src/core/geom/3d/atlas/atlas_test_fixtures.js +0 -266
- package/src/engine/asset/loaders/gltf_test_fixtures.d.ts +0 -97
- package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +0 -1
- package/src/engine/asset/loaders/gltf_test_fixtures.js +0 -359
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts +0 -29
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts +0 -86
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_test_fixtures.js +0 -250
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts +0 -16
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.js +0 -27
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts +0 -151
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/particles/particle_test_fixtures.js +0 -229
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +0 -23
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +0 -457
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentAddAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/ComponentAddAction.js"],"names":[],"mappings":";AAEA;IAOI,yCAIC;IAVD;;;OAGG;IACH,gCAAe;IAIX,YAAoB;IACpB,eAA0B;IAG9B,kCAqBC;IAED,mCAGC;CACJ;
|
|
1
|
+
{"version":3,"file":"ComponentAddAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/ComponentAddAction.js"],"names":[],"mappings":";AAEA;IAOI,yCAIC;IAVD;;;OAGG;IACH,gCAAe;IAIX,YAAoB;IACpB,eAA0B;IAG9B,8CAEC;IAED,kCAqBC;IAED,mCAGC;CACJ;uBA9CsB,0CAA0C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentRemoveAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/ComponentRemoveAction.js"],"names":[],"mappings":";AAEA;IAGI,6CAKC;IAPD,eAAiB;IAKb,YAAoB;IACpB,mBAAkC;IAGtC,kCAUC;IAED,mCAIC;CACJ;
|
|
1
|
+
{"version":3,"file":"ComponentRemoveAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/ComponentRemoveAction.js"],"names":[],"mappings":";AAEA;IAGI,6CAKC;IAPD,eAAiB;IAKb,YAAoB;IACpB,mBAAkC;IAGtC,8CAEC;IAED,kCAUC;IAED,mCAIC;CACJ;uBAjCsB,0CAA0C"}
|
|
@@ -10,6 +10,10 @@ class ComponentRemoveAction extends Action {
|
|
|
10
10
|
this.componentType = componentType;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
collectWrites(editor, writes) {
|
|
14
|
+
writes.component(this.entity, this.componentType);
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
async apply(editor) {
|
|
14
18
|
/**
|
|
15
19
|
* @type {EntityComponentDataset}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCreateAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/EntityCreateAction.js"],"names":[],"mappings":";AAEA;;IACI;;;OAGG;IACH,QAFU,MAAM,GAAC,IAAI,CAEP;IAEd;;;OAGG;IACH,4BAAW;IAEX,kCAkBC;IAED,mCAEC;CACJ;
|
|
1
|
+
{"version":3,"file":"EntityCreateAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/EntityCreateAction.js"],"names":[],"mappings":";AAEA;;IACI;;;OAGG;IACH,QAFU,MAAM,GAAC,IAAI,CAEP;IAEd;;;OAGG;IACH,4BAAW;IAEX,8CAKC;IAED,kCAkBC;IAED,mCAEC;CACJ;uBA7CsB,0CAA0C"}
|
|
@@ -13,6 +13,13 @@ class EntityCreateAction extends Action {
|
|
|
13
13
|
*/
|
|
14
14
|
ecd = null;
|
|
15
15
|
|
|
16
|
+
collectWrites(editor, writes) {
|
|
17
|
+
// the id is assigned before apply by hosts that lease ids; a null entity is a local create
|
|
18
|
+
if (this.entity !== null) {
|
|
19
|
+
writes.entity(this.entity);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
async apply(editor) {
|
|
17
24
|
if (this.ecd === null) {
|
|
18
25
|
/**
|
|
@@ -6,6 +6,7 @@ declare class EntityRemoveAction extends Action<Editor> {
|
|
|
6
6
|
constructor(entity: any);
|
|
7
7
|
components: any[];
|
|
8
8
|
entity: any;
|
|
9
|
+
collectWrites(editor: any, writes: any): void;
|
|
9
10
|
}
|
|
10
11
|
import { Action } from "../../../src/core/process/undo/Action.js";
|
|
11
12
|
//# sourceMappingURL=EntityRemoveAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityRemoveAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/EntityRemoveAction.js"],"names":[],"mappings":";AAEA;;GAEG;AACH;IAGI,yBAGC;IALD,kBAAgB;IAIZ,YAAoB;
|
|
1
|
+
{"version":3,"file":"EntityRemoveAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/EntityRemoveAction.js"],"names":[],"mappings":";AAEA;;GAEG;AACH;IAGI,yBAGC;IALD,kBAAgB;IAIZ,YAAoB;IAGxB,8CAEC;CAkCJ;uBAjDsB,0CAA0C"}
|
|
@@ -26,7 +26,17 @@ export class PatchTerrainHeightAction extends ModifyPatchSampler2DAction {
|
|
|
26
26
|
* @type {Terrain}
|
|
27
27
|
*/
|
|
28
28
|
terrain: Terrain;
|
|
29
|
+
/**
|
|
30
|
+
* The heightmap rectangle this action writes (E4): a host recording through a ledger turns it
|
|
31
|
+
* into blob patches keyed by the terrain's entity.
|
|
32
|
+
* @param {Editor} editor
|
|
33
|
+
* @param {{blob: function(number, Function, string, number, number, number, number): void}} writes
|
|
34
|
+
*/
|
|
35
|
+
collectWrites(editor: Editor, writes: {
|
|
36
|
+
blob: (arg0: number, arg1: Function, arg2: string, arg3: number, arg4: number, arg5: number, arg6: number) => void;
|
|
37
|
+
}): void;
|
|
29
38
|
updateTerrain(): Promise<void>;
|
|
30
39
|
}
|
|
31
40
|
import { ModifyPatchSampler2DAction } from "./ModifyPatchSampler2DAction.js";
|
|
41
|
+
import Terrain from "../../../src/engine/ecs/terrain/ecs/Terrain.js";
|
|
32
42
|
//# sourceMappingURL=PatchTerrainHeightAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PatchTerrainHeightAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/PatchTerrainHeightAction.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PatchTerrainHeightAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/PatchTerrainHeightAction.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,8CARW,MAAM,EAAE,KACR,MAAM,KACN,MAAM,eACN,MAAM,gBACN,MAAM,aACN,MAAM,cACN,MAAM,QAOhB;AAID;IACI;;;;;;;OAOG;IACH,qBANW,OAAO,KACP,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,EAUhB;IALG;;;OAGG;IACH,SAFU,OAAO,CAEK;IAG1B;;;;;OAKG;IACH,sCAFW;QAAC,IAAI,SAAW,MAAM,wBAAY,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,QAAE,MAAM,KAAG,IAAI,CAAA;KAAC,QAe1F;IAED,+BA6BC;CAaJ;2CAzG0C,iCAAiC;oBADxD,gDAAgD"}
|
|
@@ -1,85 +1,107 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @param {number}
|
|
9
|
-
* @param {number}
|
|
10
|
-
* @param {number}
|
|
11
|
-
* @param {number}
|
|
12
|
-
* @param {number}
|
|
13
|
-
* @param {number}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
result[
|
|
18
|
-
result[
|
|
19
|
-
result[
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*
|
|
28
|
-
* @param {
|
|
29
|
-
* @param {number}
|
|
30
|
-
* @param {number}
|
|
31
|
-
* @param {number}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
1
|
+
import Terrain from "../../../src/engine/ecs/terrain/ecs/Terrain.js";
|
|
2
|
+
import { ModifyPatchSampler2DAction } from "./ModifyPatchSampler2DAction.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* UV rectangle covered by a texel-space patch of a sampler. Standalone so the
|
|
6
|
+
* region math is testable without live terrain tile machinery.
|
|
7
|
+
*
|
|
8
|
+
* @param {number[]} result [u0, v0, u1, v1]
|
|
9
|
+
* @param {number} x patch origin in texels
|
|
10
|
+
* @param {number} y
|
|
11
|
+
* @param {number} patch_width in texels
|
|
12
|
+
* @param {number} patch_height
|
|
13
|
+
* @param {number} map_width sampler dimensions in texels
|
|
14
|
+
* @param {number} map_height
|
|
15
|
+
*/
|
|
16
|
+
export function compute_patch_uv_rect(result, x, y, patch_width, patch_height, map_width, map_height) {
|
|
17
|
+
result[0] = x / map_width;
|
|
18
|
+
result[1] = y / map_height;
|
|
19
|
+
result[2] = (x + patch_width) / map_width;
|
|
20
|
+
result[3] = (y + patch_height) / map_height;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const scratch_uv_rect = [0, 0, 0, 0];
|
|
24
|
+
|
|
25
|
+
export class PatchTerrainHeightAction extends ModifyPatchSampler2DAction {
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
* @param {Terrain} terrain
|
|
29
|
+
* @param {number} x
|
|
30
|
+
* @param {number} y
|
|
31
|
+
* @param {number} width
|
|
32
|
+
* @param {number} height
|
|
33
|
+
*/
|
|
34
|
+
constructor(terrain, x, y, width, height) {
|
|
35
|
+
super(terrain.samplerHeight, [x, y, x + width, y + height]);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* @type {Terrain}
|
|
40
|
+
*/
|
|
41
|
+
this.terrain = terrain;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The heightmap rectangle this action writes (E4): a host recording through a ledger turns it
|
|
46
|
+
* into blob patches keyed by the terrain's entity.
|
|
47
|
+
* @param {Editor} editor
|
|
48
|
+
* @param {{blob: function(number, Function, string, number, number, number, number): void}} writes
|
|
49
|
+
*/
|
|
50
|
+
collectWrites(editor, writes) {
|
|
51
|
+
const dataset = editor.engine.entityManager.dataset;
|
|
52
|
+
let entity = -1;
|
|
53
|
+
|
|
54
|
+
dataset.traverseComponents(Terrain, (terrain, e) => {
|
|
55
|
+
if (terrain === this.terrain) {
|
|
56
|
+
entity = e;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (entity !== -1) {
|
|
61
|
+
writes.blob(entity, Terrain, "samplerHeight", this.x, this.y, this.patch.width, this.patch.height);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async updateTerrain() {
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @type {Terrain}
|
|
69
|
+
*/
|
|
70
|
+
const terrain = this.terrain;
|
|
71
|
+
|
|
72
|
+
terrain.updateWorkerHeights();
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @type {Sampler2D}
|
|
77
|
+
*/
|
|
78
|
+
const heightMap = terrain.samplerHeight;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
*
|
|
82
|
+
* @type {TerrainTileManager}
|
|
83
|
+
*/
|
|
84
|
+
const tiles = terrain.__tiles;
|
|
85
|
+
|
|
86
|
+
compute_patch_uv_rect(
|
|
87
|
+
scratch_uv_rect,
|
|
88
|
+
this.x, this.y,
|
|
89
|
+
this.patch.width, this.patch.height,
|
|
90
|
+
heightMap.width, heightMap.height
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
tiles.rebuildTilesByUV(scratch_uv_rect[0], scratch_uv_rect[1], scratch_uv_rect[2], scratch_uv_rect[3]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async apply(context) {
|
|
97
|
+
await super.apply(context);
|
|
98
|
+
|
|
99
|
+
await this.updateTerrain();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async revert(context) {
|
|
103
|
+
await super.revert(context);
|
|
104
|
+
|
|
105
|
+
await this.updateTerrain();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -10,6 +10,7 @@ declare class TransformModifyAction extends Action<any> {
|
|
|
10
10
|
oldState: any;
|
|
11
11
|
modified: Transform64;
|
|
12
12
|
entity: any;
|
|
13
|
+
collectWrites(editor: any, writes: any): void;
|
|
13
14
|
revert(editor: any): Promise<void>;
|
|
14
15
|
}
|
|
15
16
|
import { Action } from "../../../src/core/process/undo/Action.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformModifyAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/TransformModifyAction.js"],"names":[],"mappings":";AAGA;IAGI;;;;;OAKG;IACH,mCAHW,WAAW,EAQrB;IAbD,cAAgB;IAWZ,sBAAwB;IACxB,YAAoB;
|
|
1
|
+
{"version":3,"file":"TransformModifyAction.d.ts","sourceRoot":"","sources":["../../../../editor/actions/concrete/TransformModifyAction.js"],"names":[],"mappings":";AAGA;IAGI;;;;;OAKG;IACH,mCAHW,WAAW,EAQrB;IAbD,cAAgB;IAWZ,sBAAwB;IACxB,YAAoB;IAOxB,8CAEC;IAiBD,mCAIC;CACJ;uBA9CsB,0CAA0C;4BADrC,kDAAkD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleEffectDocument.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/ParticleEffectDocument.js"],"names":[],"mappings":";;;qCA+EU,MAAM;AA7ChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH;;;GAGG;AACH;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;IAEI;;OAEG;IACH,MAFU,MAAM,CAEA;IAEhB;;;;;;;;OAQG;IACH,YAFU,MAAM;QAAC,MAAM,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAShE;IAEF;;;;;;;;;OASG;IACH,QAFU,OAAO,kEAAkE,EAAE,iBAAiB,EAAE,CAE5F;IAEZ;;OAEG;IACH,MAFU,SAAS,CAEI;IAEvB;;OAEG;IACH,QAFU,SAAS,CAEM;IAEzB;;;;OAIG;IACH,aAFU,mBAAmB,CAEW;IAExC;;OAEG;IACH,eAFU,mBAAmB,CAEa;IAE1C;;;;OAIG;IACH,SAFU,MAAM,CAqBd;IAEF;;;OAGG;IACH,QAFU,MAAM,CAEsB;IAEtC;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;;;;;;;;;;OAgBG;IACH,UAFU,OAAO,CAED;IAEhB;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH;QACI;;;;WAIG;;MAEL;IAkGF;;;;;;OAMG;IACH,cASC;IAED;;;;;;;;;;;;;OAaG;IACH,2BAcC;IAED;;;;;;;;OAQG;IACH,qBAHW,MAAM,GACJ,OAAO,wEAAwE,EAAE,uBAAuB,GAAC,SAAS,CAI9H;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,kEAAkE,EAAE,iBAAiB,GAAC,SAAS,CAIlH;IAED;;;;;;;;;OASG;IACH,yBAHW,MAAM,GACJ,MAAM,CAalB;IAED;;;;;;OAMG;IACH,gBAJW,OAAO,kEAAkE,EAAE,iBAAiB,GAC1F,IAAI,CAWhB;IAED;;;;;;;;;OASG;IACH,mBAHW,OAAO,kEAAkE,EAAE,iBAAiB,GAC1F,OAAO,CAcnB;IAED;;;;;;;;OAQG;IACH,eAHa,cAAc,CAK1B;IAED;;;;;;;;;;;;OAYG;IACH,WAFa,yBAAyB,CAcrC;IAmLD;;;;;;;;;;OAUG;IACH,0BAJW,cAAc,GAEZ,yBAAyB,CAAC,aAAa,CAAC,CAgBpD;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHa,yBAAyB,CAsBrC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,2BAHW,yBAAyB,GACvB,MAAM,CAclB;IAED;;;OAGG;IACH,kBAQC;IAED;;;;OAIG;IACH,qBAFW,OAAO,QAUjB;IAED;;;;;;;;OAQG;IACH,mBANW,MAAM,cACN,MAAM,SACN,MAAM,QAchB;IAED;;;;;;;;OAQG;IACH,sBAHW,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;;;;;;;OAUG;IACH,mCAJW;QAAC,MAAM,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,GAEvC,MAAM,
|
|
1
|
+
{"version":3,"file":"ParticleEffectDocument.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/ParticleEffectDocument.js"],"names":[],"mappings":";;;qCA+EU,MAAM;AA7ChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH;;;GAGG;AACH;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;IAEI;;OAEG;IACH,MAFU,MAAM,CAEA;IAEhB;;;;;;;;OAQG;IACH,YAFU,MAAM;QAAC,MAAM,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAShE;IAEF;;;;;;;;;OASG;IACH,QAFU,OAAO,kEAAkE,EAAE,iBAAiB,EAAE,CAE5F;IAEZ;;OAEG;IACH,MAFU,SAAS,CAEI;IAEvB;;OAEG;IACH,QAFU,SAAS,CAEM;IAEzB;;;;OAIG;IACH,aAFU,mBAAmB,CAEW;IAExC;;OAEG;IACH,eAFU,mBAAmB,CAEa;IAE1C;;;;OAIG;IACH,SAFU,MAAM,CAqBd;IAEF;;;OAGG;IACH,QAFU,MAAM,CAEsB;IAEtC;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;;;;;;;;;;OAgBG;IACH,UAFU,OAAO,CAED;IAEhB;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH;QACI;;;;WAIG;;MAEL;IAkGF;;;;;;OAMG;IACH,cASC;IAED;;;;;;;;;;;;;OAaG;IACH,2BAcC;IAED;;;;;;;;OAQG;IACH,qBAHW,MAAM,GACJ,OAAO,wEAAwE,EAAE,uBAAuB,GAAC,SAAS,CAI9H;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,kEAAkE,EAAE,iBAAiB,GAAC,SAAS,CAIlH;IAED;;;;;;;;;OASG;IACH,yBAHW,MAAM,GACJ,MAAM,CAalB;IAED;;;;;;OAMG;IACH,gBAJW,OAAO,kEAAkE,EAAE,iBAAiB,GAC1F,IAAI,CAWhB;IAED;;;;;;;;;OASG;IACH,mBAHW,OAAO,kEAAkE,EAAE,iBAAiB,GAC1F,OAAO,CAcnB;IAED;;;;;;;;OAQG;IACH,eAHa,cAAc,CAK1B;IAED;;;;;;;;;;;;OAYG;IACH,WAFa,yBAAyB,CAcrC;IAmLD;;;;;;;;;;OAUG;IACH,0BAJW,cAAc,GAEZ,yBAAyB,CAAC,aAAa,CAAC,CAgBpD;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHa,yBAAyB,CAsBrC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,2BAHW,yBAAyB,GACvB,MAAM,CAclB;IAED;;;OAGG;IACH,kBAQC;IAED;;;;OAIG;IACH,qBAFW,OAAO,QAUjB;IAED;;;;;;;;OAQG;IACH,mBANW,MAAM,cACN,MAAM,SACN,MAAM,QAchB;IAED;;;;;;;;OAQG;IACH,sBAHW,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;;;;;;;OAUG;IACH,mCAJW;QAAC,MAAM,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,GAEvC,MAAM,CA+BlB;IAED;;;OAGG;IACH,gBAFa,MAAM,CAWlB;IAED;;OAEG;IACH,UAFa,MAAM,CAclB;IAED;;;;;;;OAOG;IACH,eALW,MAAM,kDAGJ,sBAAsB,CAKlC;;CAoEJ;;;;;;;;aA35Ba,OAAO,8DAA8D,EAAE,eAAe,GAAC,IAAI;;;;;YAE3F,cAAc,GAAC,IAAI;;;;;;iBAEnB,OAAO,8DAA8D,EAAE,eAAe,GAAC,IAAI;;;;;iBAI3F,MAAM;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;;0BAlGzE,iDAAiD;oCACvC,kEAAkE;+BA6BvE,gEAAgE"}
|
|
@@ -167,14 +167,14 @@ export class ParticleEffectDocument {
|
|
|
167
167
|
*/
|
|
168
168
|
emitter = {
|
|
169
169
|
spawn_rate: 120,
|
|
170
|
+
/** seconds of emission run forward before the effect is first shown; 0 is off */
|
|
171
|
+
prewarm: 0,
|
|
170
172
|
blend: EMITTER_BLEND.ADDITIVE,
|
|
171
173
|
projection: EMITTER_PROJECTION.BILLBOARD,
|
|
172
174
|
lighting: false,
|
|
173
175
|
soft_depth: false,
|
|
174
176
|
sort: false,
|
|
175
177
|
cull: false,
|
|
176
|
-
bounds_center: [0, 1, 0],
|
|
177
|
-
bounds_radius: 3,
|
|
178
178
|
/** image to draw with, by URL; null draws against the default atlas, a white texel */
|
|
179
179
|
texture: null,
|
|
180
180
|
flipbook: [1, 1],
|
|
@@ -885,6 +885,7 @@ export class ParticleEffectDocument {
|
|
|
885
885
|
program,
|
|
886
886
|
name: this.name,
|
|
887
887
|
spawn_rate: this.emitter.spawn_rate,
|
|
888
|
+
prewarm: this.emitter.prewarm,
|
|
888
889
|
flags: {
|
|
889
890
|
blend: this.emitter.blend,
|
|
890
891
|
projection: this.emitter.projection,
|
|
@@ -893,10 +894,6 @@ export class ParticleEffectDocument {
|
|
|
893
894
|
sort: this.emitter.sort,
|
|
894
895
|
cull: this.emitter.cull,
|
|
895
896
|
},
|
|
896
|
-
bounds: {
|
|
897
|
-
center: this.emitter.bounds_center,
|
|
898
|
-
radius: this.emitter.bounds_radius,
|
|
899
|
-
},
|
|
900
897
|
texture: this.emitter.texture,
|
|
901
898
|
flipbook: this.emitter.flipbook,
|
|
902
899
|
render,
|
|
@@ -990,6 +987,13 @@ export class ParticleEffectDocument {
|
|
|
990
987
|
});
|
|
991
988
|
|
|
992
989
|
this.emitter = { ...this.emitter, ...structuredClone(json.emitter ?? {}) };
|
|
990
|
+
|
|
991
|
+
// An effect saved while emitters still carried an authored bounding sphere. There is nothing
|
|
992
|
+
// to migrate — the box is measured from the particles now — and the merge above is a spread,
|
|
993
|
+
// so without this the dead keys would ride along in every later save.
|
|
994
|
+
delete this.emitter.bounds_center;
|
|
995
|
+
delete this.emitter.bounds_radius;
|
|
996
|
+
|
|
993
997
|
this.source = json.source === PARTICLE_EFFECT_SOURCE.ASSEMBLY
|
|
994
998
|
? PARTICLE_EFFECT_SOURCE.ASSEMBLY
|
|
995
999
|
: PARTICLE_EFFECT_SOURCE.GRAPH;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleReferenceSimulation.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/ParticleReferenceSimulation.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ParticleReferenceSimulation.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/ParticleReferenceSimulation.js"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,wCAFU,MAAM,CAE8B;AAE9C;IAgGI;;;OAGG;IACH;QAF4B,QAAQ,GAAzB,MAAM;OAiBhB;IAjHD;;;;OAIG;IACH,MAFU,WAAW,CAEhB;IAEL;;;OAGG;IACH,OAFU,MAAM,EAAE,CAEP;IAEX;;;OAGG;IACH,MAFU,MAAM,EAAE,CAER;IAEV;;;OAGG;IACH,KAFU,WAAW,CAEI;IAQzB;;;OAGG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,MAFU,MAAM,CAEP;IAoDL;;OAEG;IACH,UAFU,MAAM,CAEQ;IAa5B;;OAEG;IACH,cAYC;IAED;;;;;;;;;;;;OAYG;IACH;QAJ0G,OAAO,EAAtG,OAAO,8DAA8D,EAAE,eAAe;QACU,MAAM,EAAtG,OAAO,gEAAgE,EAAE,cAAc;QACxE,OAAO,EAAtB,MAAM;aAsBhB;IAED;;OAEG;IACH,oBAEC;IAED;;;;OAIG;IACH,SAFW,MAAM,QAmBhB;IA0KD;;;;;;;;;OASG;IACH;WAFwB,MAAM;WAAK,MAAM;WAAK,MAAM;cAAQ,MAAM;WAAK,MAAM;WAAK,MAAM;WAAK,MAAM;WAAK,MAAM;kBAAY,MAAM;eAAS,MAAM;qBA6C9I;;CACJ"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { hash_mix2 } from "../../../src/core/math/hash/hash_mix2.js";
|
|
1
2
|
import {
|
|
2
3
|
PARTICLE_RECORD_WORD_COUNT,
|
|
4
|
+
PARTICLE_WARMUP_DT_JITTER,
|
|
3
5
|
} from "../../../src/shade/renderer/particles/ParticleConstants.js";
|
|
6
|
+
import {
|
|
7
|
+
warmup_remaining,
|
|
8
|
+
warmup_schedule,
|
|
9
|
+
} from "../../../src/shade/renderer/particles/warmup/warmup_schedule.js";
|
|
4
10
|
import { EMITTER_ATTRIBUTE_ABSENT } from "../../../src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js";
|
|
5
11
|
import { VM_BUILTIN } from "../../../src/shade/renderer/particles/isa/ParticleVMISA.js";
|
|
6
12
|
import { execute_particle_vm } from "../../../src/shade/renderer/particles/vm/ParticleVMReference.js";
|
|
@@ -20,7 +26,10 @@ import { execute_particle_vm } from "../../../src/shade/renderer/particles/vm/Pa
|
|
|
20
26
|
* keep in step.
|
|
21
27
|
*
|
|
22
28
|
* Spawning follows the emitter's rate the way the GPU tick pass does — an accumulator carried across
|
|
23
|
-
* frames, so a rate that is not a whole number of particles per frame still averages out
|
|
29
|
+
* frames, so a rate that is not a whole number of particles per frame still averages out — and an
|
|
30
|
+
* emitter's pre-warm the way the warm-up pipeline does (`warmup/`): the same loop, run forward over
|
|
31
|
+
* the same schedule before the first frame, so what an author sees when they type a duration into
|
|
32
|
+
* the inspector is the population the effect will arrive with in a scene.
|
|
24
33
|
*/
|
|
25
34
|
|
|
26
35
|
/** Where the previewed emitter sits, and which way it points. Fixed: the preview has one emitter. */
|
|
@@ -94,6 +103,22 @@ export class ParticleReferenceSimulation {
|
|
|
94
103
|
*/
|
|
95
104
|
#spawn_counter = 0;
|
|
96
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Whether the next emission is the emitter's first since it started over, and so owes the
|
|
108
|
+
* emitter's pre-warm. The GPU's equivalent is the tick pass's generation comparison, which no
|
|
109
|
+
* preview has a use for: here "started over" is {@link reset}.
|
|
110
|
+
* @type {boolean}
|
|
111
|
+
*/
|
|
112
|
+
#owes_prewarm = true;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The pre-warm the effect was last set with, so a change to it can restart the preview. Typing a
|
|
116
|
+
* duration into the inspector and watching nothing happen — because the effect is already
|
|
117
|
+
* running and pre-warm only applies to a start — would read as a broken control.
|
|
118
|
+
* @type {number}
|
|
119
|
+
*/
|
|
120
|
+
#prewarm = 0;
|
|
121
|
+
|
|
97
122
|
/**
|
|
98
123
|
* @type {import("../../../src/shade/renderer/particles/isa/ParticleProgram.js").ParticleProgram|null}
|
|
99
124
|
*/
|
|
@@ -152,6 +177,7 @@ export class ParticleReferenceSimulation {
|
|
|
152
177
|
this.pool.fill(0);
|
|
153
178
|
this.spawn_accumulator = 0;
|
|
154
179
|
this.emitter_age = 0;
|
|
180
|
+
this.#owes_prewarm = true;
|
|
155
181
|
}
|
|
156
182
|
|
|
157
183
|
/**
|
|
@@ -172,8 +198,14 @@ export class ParticleReferenceSimulation {
|
|
|
172
198
|
.map(attribute => `${attribute.name}:${attribute.offset}:${attribute.components}`)
|
|
173
199
|
.join(",");
|
|
174
200
|
|
|
175
|
-
|
|
201
|
+
const prewarm = emitter.prewarm ?? 0;
|
|
202
|
+
|
|
203
|
+
// A pre-warm is a statement about how an effect STARTS, so the only way to show one is to
|
|
204
|
+
// start the effect. The layout signature is checked the same way and for the same reason:
|
|
205
|
+
// both are changes the particles in flight cannot survive meaning anything under.
|
|
206
|
+
if (signature !== this.#layout_signature || prewarm !== this.#prewarm) {
|
|
176
207
|
this.#layout_signature = signature;
|
|
208
|
+
this.#prewarm = prewarm;
|
|
177
209
|
|
|
178
210
|
this.reset();
|
|
179
211
|
}
|
|
@@ -200,6 +232,13 @@ export class ParticleReferenceSimulation {
|
|
|
200
232
|
return;
|
|
201
233
|
}
|
|
202
234
|
|
|
235
|
+
// The first frame after a start pays the pre-warm first, so the population this frame
|
|
236
|
+
// adds to is the one the emitter would have had.
|
|
237
|
+
if (this.#owes_prewarm) {
|
|
238
|
+
this.#owes_prewarm = false;
|
|
239
|
+
this.#warmup();
|
|
240
|
+
}
|
|
241
|
+
|
|
203
242
|
this.time += dt;
|
|
204
243
|
this.emitter_age += dt;
|
|
205
244
|
|
|
@@ -207,6 +246,50 @@ export class ParticleReferenceSimulation {
|
|
|
207
246
|
this.#update(dt);
|
|
208
247
|
}
|
|
209
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Run the emitter forward by its pre-warm before it is first shown: the ordinary loop — emit,
|
|
251
|
+
* then update — over the same schedule the GPU warm-up uses ({@link warmup_schedule}), with the
|
|
252
|
+
* clocks rewound so `TIME` and `EMITTER_AGE` read as they would have.
|
|
253
|
+
*
|
|
254
|
+
* It ends with the emitter's age at exactly its pre-warm and the frame's clock where it was, so
|
|
255
|
+
* the frame that follows adds its own `dt` to both, as the GPU's next tick does.
|
|
256
|
+
*
|
|
257
|
+
* The preview has one emitter, so the per-emitter beat the GPU queue carries (each emitter's
|
|
258
|
+
* tick at a slightly different clock, its accumulator started at a hashed fraction) has nothing
|
|
259
|
+
* to separate here and is not reproduced; the per-particle jitter is, because it is what keeps
|
|
260
|
+
* a warm-up of N ticks from arriving as N bands.
|
|
261
|
+
*/
|
|
262
|
+
#warmup() {
|
|
263
|
+
const prewarm = this.#emitter.prewarm ?? 0;
|
|
264
|
+
|
|
265
|
+
if (prewarm <= 0) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
const schedule = warmup_schedule(prewarm);
|
|
270
|
+
const now = this.time;
|
|
271
|
+
|
|
272
|
+
for (let tick = 0; tick < schedule.ticks; tick++) {
|
|
273
|
+
const remaining = warmup_remaining(schedule, tick);
|
|
274
|
+
|
|
275
|
+
// The loop's clock counts down to now; the emitter joins it once the time left is what
|
|
276
|
+
// it asked to have been running for. Only the rounding of the schedule's span up to a
|
|
277
|
+
// whole tick can leave it out of the first one.
|
|
278
|
+
if (remaining > prewarm) {
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
this.time = now - remaining;
|
|
283
|
+
this.emitter_age = prewarm - remaining + schedule.dt;
|
|
284
|
+
|
|
285
|
+
this.#emit(schedule.dt);
|
|
286
|
+
this.#update(schedule.dt, tick + 1);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
this.time = now;
|
|
290
|
+
this.emitter_age = prewarm;
|
|
291
|
+
}
|
|
292
|
+
|
|
210
293
|
/**
|
|
211
294
|
* @param {number} dt
|
|
212
295
|
*/
|
|
@@ -258,8 +341,11 @@ export class ParticleReferenceSimulation {
|
|
|
258
341
|
|
|
259
342
|
/**
|
|
260
343
|
* @param {number} dt
|
|
344
|
+
* @param {number} [tick] a warm-up tick's number, when this is one: the tick is then jittered per
|
|
345
|
+
* particle by {@link PARTICLE_WARMUP_DT_JITTER}, hashed from the slot and the tick, exactly as
|
|
346
|
+
* the GPU's advance does. Zero — a frame — is not jittered.
|
|
261
347
|
*/
|
|
262
|
-
#update(dt) {
|
|
348
|
+
#update(dt, tick = 0) {
|
|
263
349
|
const alive = this.alive;
|
|
264
350
|
|
|
265
351
|
let write = 0;
|
|
@@ -267,12 +353,20 @@ export class ParticleReferenceSimulation {
|
|
|
267
353
|
for (let read = 0; read < alive.length; read++) {
|
|
268
354
|
const slot = alive[read];
|
|
269
355
|
|
|
356
|
+
let dt_particle = dt;
|
|
357
|
+
|
|
358
|
+
if (tick !== 0) {
|
|
359
|
+
const u = ((hash_mix2(slot, tick) >>> 8) / 16777216);
|
|
360
|
+
|
|
361
|
+
dt_particle = dt * (1 + PARTICLE_WARMUP_DT_JITTER * (u - 0.5));
|
|
362
|
+
}
|
|
363
|
+
|
|
270
364
|
const result = execute_particle_vm({
|
|
271
365
|
words: this.#program.update,
|
|
272
366
|
constants: this.#program.constants,
|
|
273
367
|
register_count: this.#program.register_count,
|
|
274
368
|
record: this.#record(slot),
|
|
275
|
-
builtins: this.#builtins(
|
|
369
|
+
builtins: this.#builtins(dt_particle, slot, 0),
|
|
276
370
|
rng_state: this.rng[slot],
|
|
277
371
|
});
|
|
278
372
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_starter_particle_effect.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/make_starter_particle_effect.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,gDAFa,sBAAsB,
|
|
1
|
+
{"version":3,"file":"make_starter_particle_effect.d.ts","sourceRoot":"","sources":["../../../../editor/particles/effect/make_starter_particle_effect.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,gDAFa,sBAAsB,CAgBlC;uCApCsC,6BAA6B"}
|
|
@@ -44,8 +44,6 @@ export function make_starter_particle_effect() {
|
|
|
44
44
|
document.emitter.spawn_rate = 220;
|
|
45
45
|
document.emitter.blend = EMITTER_BLEND.ADDITIVE;
|
|
46
46
|
document.emitter.projection = EMITTER_PROJECTION.BILLBOARD;
|
|
47
|
-
document.emitter.bounds_center = [0, 1.5, 0];
|
|
48
|
-
document.emitter.bounds_radius = 4;
|
|
49
47
|
document.emitter.render = { position: "position", size: "size", color: "color", velocity: "velocity" };
|
|
50
48
|
|
|
51
49
|
return document;
|