@woosh/meep-engine 3.29.0 → 3.30.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/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +14 -2
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +14 -1
- package/src/core/cache/FrequencySketch.d.ts +3 -1
- package/src/core/cache/FrequencySketch.d.ts.map +1 -1
- package/src/core/cache/FrequencySketch.js +10 -4
- package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
- package/src/core/cache/wtinylfu/CacheWTinylfu.js +24 -2
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts +20 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +69 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts +48 -18
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +262 -70
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_fold_limit.d.ts +25 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_fold_limit.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_fold_limit.js +228 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_would_fold.d.ts +13 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_would_fold.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_edge_collapse_would_fold.js +10 -128
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_build_face_bvh.js +11 -1
- package/src/core/graph/mn_graph_collapse_weighted_edge.js +6 -6
- package/src/core/math/lookup/ParameterLookupTable.d.ts.map +1 -1
- package/src/core/math/lookup/ParameterLookupTable.js +10 -5
- package/src/core/math/noise/sdnoise.d.ts.map +1 -1
- package/src/core/math/noise/sdnoise.js +16 -10
- package/src/core/model/object/ImmutableObjectPool.d.ts.map +1 -1
- package/src/core/model/object/ImmutableObjectPool.js +17 -7
- package/src/core/process/executor/ConcurrentExecutor.d.ts +1 -5
- package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
- package/src/core/process/executor/ConcurrentExecutor.js +95 -1
- package/src/core/process/task/task_find_dependency_cycle.d.ts +17 -0
- package/src/core/process/task/task_find_dependency_cycle.d.ts.map +1 -0
- package/src/core/process/task/task_find_dependency_cycle.js +81 -0
- package/src/core/wfc/WFCCellChoice.d.ts +17 -0
- package/src/core/wfc/WFCCellChoice.d.ts.map +1 -0
- package/src/core/wfc/WFCCellChoice.js +36 -0
- package/src/core/wfc/WFCLattice.d.ts +105 -0
- package/src/core/wfc/WFCLattice.d.ts.map +1 -0
- package/src/core/wfc/WFCLattice.js +235 -0
- package/src/core/wfc/WFCRuleTable.d.ts +172 -0
- package/src/core/wfc/WFCRuleTable.d.ts.map +1 -0
- package/src/core/wfc/WFCRuleTable.js +334 -0
- package/src/core/wfc/WFCState.d.ts +273 -0
- package/src/core/wfc/WFCState.d.ts.map +1 -0
- package/src/core/wfc/WFCState.js +552 -0
- package/src/core/wfc/WFCStatus.d.ts +11 -0
- package/src/core/wfc/WFCStatus.d.ts.map +1 -0
- package/src/core/wfc/WFCStatus.js +28 -0
- package/src/core/wfc/WFCTileWeights.d.ts +48 -0
- package/src/core/wfc/WFCTileWeights.d.ts.map +1 -0
- package/src/core/wfc/WFCTileWeights.js +86 -0
- package/src/core/wfc/WFC_UNRESOLVED.d.ts +12 -0
- package/src/core/wfc/WFC_UNRESOLVED.d.ts.map +1 -0
- package/src/core/wfc/WFC_UNRESOLVED.js +11 -0
- package/src/core/wfc/wfc_estimate_bytes.d.ts +24 -0
- package/src/core/wfc/wfc_estimate_bytes.d.ts.map +1 -0
- package/src/core/wfc/wfc_estimate_bytes.js +47 -0
- package/src/core/wfc/wfc_rule_table_tile_components.d.ts +27 -0
- package/src/core/wfc/wfc_rule_table_tile_components.d.ts.map +1 -0
- package/src/core/wfc/wfc_rule_table_tile_components.js +80 -0
- package/src/core/wfc/wfc_solve.d.ts +21 -0
- package/src/core/wfc/wfc_solve.d.ts.map +1 -0
- package/src/core/wfc/wfc_solve.js +154 -0
- package/src/core/wfc/wfc_state_apply_boundary.d.ts +18 -0
- package/src/core/wfc/wfc_state_apply_boundary.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_apply_boundary.js +61 -0
- package/src/core/wfc/wfc_state_assign.d.ts +11 -0
- package/src/core/wfc/wfc_state_assign.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_assign.js +36 -0
- package/src/core/wfc/wfc_state_ban_bits.d.ts +17 -0
- package/src/core/wfc/wfc_state_ban_bits.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_ban_bits.js +81 -0
- package/src/core/wfc/wfc_state_collapse.d.ts +12 -0
- package/src/core/wfc/wfc_state_collapse.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_collapse.js +73 -0
- package/src/core/wfc/wfc_state_flush_dirty.d.ts +12 -0
- package/src/core/wfc/wfc_state_flush_dirty.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_flush_dirty.js +39 -0
- package/src/core/wfc/wfc_state_propagate.d.ts +14 -0
- package/src/core/wfc/wfc_state_propagate.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_propagate.js +155 -0
- package/src/core/wfc/wfc_state_read.d.ts +11 -0
- package/src/core/wfc/wfc_state_read.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_read.js +38 -0
- package/src/core/wfc/wfc_state_restrict.d.ts +18 -0
- package/src/core/wfc/wfc_state_restrict.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_restrict.js +39 -0
- package/src/core/wfc/wfc_state_set_eligible.d.ts +24 -0
- package/src/core/wfc/wfc_state_set_eligible.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_set_eligible.js +49 -0
- package/src/core/wfc/wfc_state_undo_to.d.ts +13 -0
- package/src/core/wfc/wfc_state_undo_to.d.ts.map +1 -0
- package/src/core/wfc/wfc_state_undo_to.js +84 -0
- package/src/core/wfc/wfc_words_per_cell.d.ts +11 -0
- package/src/core/wfc/wfc_words_per_cell.d.ts.map +1 -0
- package/src/core/wfc/wfc_words_per_cell.js +16 -0
- package/src/engine/ecs/EntityComponentDataset.d.ts +8 -0
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +37 -14
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts +8 -1
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
- package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +37 -2
- package/src/engine/ecs/guid/UUID.d.ts.map +1 -1
- package/src/engine/ecs/guid/UUID.js +45 -17
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +3 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +366 -360
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.js +24 -10
- package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
- package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +24 -5
- package/src/engine/interpolation/Interpoland.d.ts +7 -1
- package/src/engine/interpolation/Interpoland.d.ts.map +1 -1
- package/src/engine/interpolation/Interpoland.js +8 -1
- package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationSystem.js +3 -0
- package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts +5 -3
- package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
- package/src/engine/interpolation/TransformPoseSerializationAdapter.js +14 -3
- package/src/engine/interpolation/pose_interpoland.d.ts.map +1 -1
- package/src/engine/interpolation/pose_interpoland.js +2 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +15 -10
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +17 -0
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.js +14 -0
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts +2 -1
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts +1 -0
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +1 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts +2 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +12 -3
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts +1 -0
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -0
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.js +4 -1
- package/src/format/image/avif/av1/decode/decode_coefficients.d.ts.map +1 -1
- package/src/format/image/avif/av1/decode/decode_coefficients.js +248 -259
- package/src/format/image/avif/av1/decode/read_golomb.d.ts +21 -0
- package/src/format/image/avif/av1/decode/read_golomb.d.ts.map +1 -0
- package/src/format/image/avif/av1/decode/read_golomb.js +49 -0
- package/src/format/image/avif/av1/filter/loop_restoration.js +461 -451
- package/src/format/image/avif/av1/util/round2.d.ts +19 -2
- package/src/format/image/avif/av1/util/round2.d.ts.map +1 -1
- package/src/format/image/avif/av1/util/round2.js +51 -27
- package/src/format/image/avif/heif/parse_avif_file.js +24 -0
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +14 -0
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +46 -3
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +91 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +0 -13
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +0 -15
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.js +5 -5
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.d.ts +11 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.js +11 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.d.ts +18 -9
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.js +20 -26
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.d.ts +1 -3
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.js +2 -5
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.js +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +14 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +12 -3
- package/src/shade/renderer/light/environment/rgbe/RGBE_ReadPixels_RLE.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/rgbe/RGBE_ReadPixels_RLE.js +7 -1
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +349 -336
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/load_gltf.js +1137 -1128
- package/src/shade/renderer/particles/DESIGN.md +14 -5
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +25 -10
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +182 -38
- package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/simplex_reference.js +16 -10
- package/src/shade/renderer/particles/graph_particles.d.ts +4 -2
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +8 -2
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +8 -2
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +10 -4
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts +31 -0
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_init_free_list.js +62 -0
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +13 -0
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +95 -17
- package/src/shade/renderer/rasterize/bucket/rasterization_has_opaque_bucket.d.ts +21 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_has_opaque_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_has_opaque_bucket.js +28 -0
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +19 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +19 -2
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.js +12 -0
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.d.ts +8 -2
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.d.ts.map +1 -1
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +41 -6
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +2383 -2356
- package/src/view/tooltip/DomTooltipManager.d.ts +7 -0
- package/src/view/tooltip/DomTooltipManager.d.ts.map +1 -1
- package/src/view/tooltip/DomTooltipManager.js +22 -0
- package/src/view/tooltip/DomTooltipObserver.d.ts.map +1 -1
- package/src/view/tooltip/DomTooltipObserver.js +13 -3
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_CREASE_ANGLE.js +0 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampler2d_scale_down_linear.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"sampler2d_scale_down_linear.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,uFAoFC"}
|
|
@@ -31,15 +31,26 @@ export function sampler2d_scale_down_linear(input, output) {
|
|
|
31
31
|
|
|
32
32
|
const sample = new Float64Array(itemSize);
|
|
33
33
|
|
|
34
|
-
const sampleSize = sW * sH;
|
|
35
|
-
const sampleSizeInv = 1 / sampleSize;
|
|
36
|
-
|
|
37
34
|
const input_data = input.data;
|
|
38
35
|
const output_data = output.data;
|
|
39
36
|
|
|
40
37
|
for (let y = 0; y < oH; y++) {
|
|
41
38
|
|
|
42
|
-
|
|
39
|
+
/**
|
|
40
|
+
* The source window is derived with integer arithmetic, and the divisor is the number of
|
|
41
|
+
* texels it actually covers.
|
|
42
|
+
*
|
|
43
|
+
* The ratios themselves used to serve as both loop bound and texel offset, which only works
|
|
44
|
+
* while they are whole: at 25 -> 12 `sampleOffsetX = x * 2.0833...` is fractional, the flat
|
|
45
|
+
* address is fractional, and every typed-array read comes back `undefined`, so the output is
|
|
46
|
+
* NaN. Silently — the one guard, `assert.ok(sW >= 1)`, rejects upscaling and nothing else,
|
|
47
|
+
* and the consumer strips asserts. An odd dimension above 2 is enough to reach it: both mip
|
|
48
|
+
* callers halve with a floor, so a 50x50 source goes 25 -> 12 and NaNs the rest of its chain.
|
|
49
|
+
*
|
|
50
|
+
* For a whole ratio the window is exactly the old one, texel for texel.
|
|
51
|
+
*/
|
|
52
|
+
const y0 = Math.floor(y * sH);
|
|
53
|
+
const y1 = Math.max(y0 + 1, Math.min(iH, Math.floor((y + 1) * sH)));
|
|
43
54
|
|
|
44
55
|
const row_address = y * oW * itemSize;
|
|
45
56
|
|
|
@@ -47,15 +58,18 @@ export function sampler2d_scale_down_linear(input, output) {
|
|
|
47
58
|
|
|
48
59
|
const output_texel_address = row_address + x * itemSize;
|
|
49
60
|
|
|
50
|
-
const
|
|
61
|
+
const x0 = Math.floor(x * sW);
|
|
62
|
+
const x1 = Math.max(x0 + 1, Math.min(iW, Math.floor((x + 1) * sW)));
|
|
63
|
+
|
|
64
|
+
const sampleSizeInv = 1 / ((y1 - y0) * (x1 - x0));
|
|
51
65
|
|
|
52
66
|
// accumulate sample
|
|
53
|
-
for (let j =
|
|
54
|
-
const row_index =
|
|
55
|
-
|
|
56
|
-
let input_texel_address =
|
|
67
|
+
for (let j = y0; j < y1; j++) {
|
|
68
|
+
const row_index = j * iW;
|
|
69
|
+
|
|
70
|
+
let input_texel_address = (row_index + x0) * itemSize;
|
|
57
71
|
|
|
58
|
-
for (let i =
|
|
72
|
+
for (let i = x0; i < x1; i++) {
|
|
59
73
|
|
|
60
74
|
for (let k = 0; k < itemSize; k++) {
|
|
61
75
|
sample[k] += input_data[k + input_texel_address];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridPosition2TransformSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/grid2transform/GridPosition2TransformSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridPosition2TransformSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/grid2transform/GridPosition2TransformSystem.js"],"names":[],"mappings":"AAYA;IAOI,cASC;IAfD,2FAAmE;IACnE,mEAEE;IACF,YAAU;IAKN,4CAKC;IAGL;;;;;;OAMG;IACH,gBALW,sBAAsB,MACtB,YAAY,aACZ,WAAW,UACX,MAAM,QAiChB;IAED;;;;;;OAMG;IACH,kBALW,sBAAsB,MACtB,YAAY,aACZ,WAAW,UACX,MAAM,QAQhB;IAED,cAeC;CACJ;uBAlGsB,qBAAqB;4BAEhB,oCAAoC;uCAGzB,6BAA6B;yBAD3C,6BAA6B;4CALV,oDAAoD"}
|
|
@@ -4,6 +4,7 @@ import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessS
|
|
|
4
4
|
import { System } from '../../ecs/System.js';
|
|
5
5
|
import { obtainTerrain } from "../../ecs/terrain/util/obtainTerrain.js";
|
|
6
6
|
import { Transform64 } from '../../ecs/transform/Transform64.js';
|
|
7
|
+
import { t64_announce_change } from '../../ecs/transform/t64_announce_change.js';
|
|
7
8
|
import GridPosition from '../position/GridPosition.js';
|
|
8
9
|
import { GridPosition2Transform } from './GridPosition2Transform.js';
|
|
9
10
|
import { GridPosition2TransformFlags } from "./GridPosition2TransformFlags.js";
|
|
@@ -36,6 +37,7 @@ export class GridPosition2TransformSystem extends System {
|
|
|
36
37
|
*/
|
|
37
38
|
link(component, gp, transform, entity) {
|
|
38
39
|
const mapPoint = this.mapPoint;
|
|
40
|
+
const em = this.entityManager;
|
|
39
41
|
|
|
40
42
|
function sync() {
|
|
41
43
|
const transformOffset = component.offset;
|
|
@@ -46,7 +48,7 @@ export class GridPosition2TransformSystem extends System {
|
|
|
46
48
|
const centerX = x + transformOffset.x;
|
|
47
49
|
const centerY = y + transformOffset.y;
|
|
48
50
|
|
|
49
|
-
setTransformFromGrid(mapPoint, centerX, centerY, transform);
|
|
51
|
+
setTransformFromGrid(mapPoint, centerX, centerY, transform, em.dataset, entity);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
sync.clear = function () {
|
|
@@ -107,12 +109,29 @@ const v3 = new Vector3();
|
|
|
107
109
|
* @param {number} x
|
|
108
110
|
* @param {number} y
|
|
109
111
|
* @param {Transform64} transform
|
|
112
|
+
* @param {EntityComponentDataset} ecd
|
|
113
|
+
* @param {number} entity
|
|
110
114
|
*/
|
|
111
|
-
function setTransformFromGrid(mapPointGrid2world, x, y, transform) {
|
|
115
|
+
function setTransformFromGrid(mapPointGrid2world, x, y, transform, ecd, entity) {
|
|
112
116
|
mapPointGrid2world(x, y, v3);
|
|
113
|
-
|
|
117
|
+
|
|
114
118
|
//check if positions are different
|
|
115
|
-
if (v3.x
|
|
116
|
-
|
|
119
|
+
if (v3.x === transform.translation_x && v3.z === transform.translation_z) {
|
|
120
|
+
return;
|
|
117
121
|
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* `setTranslation`, not `translation.setXZ`: `translation` is a Float64Array view over the
|
|
125
|
+
* transform's own buffer — freshly allocated on every access — and `setXZ` is a Vector3 method
|
|
126
|
+
* that exists nowhere else, so the write used to throw. The exception was swallowed by the
|
|
127
|
+
* signal dispatch on the `gp.onChanged` path, which left the transform silently never moving.
|
|
128
|
+
*/
|
|
129
|
+
transform.setTranslation(v3.x, transform.translation_y, v3.z);
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* A Transform64 carries no signals, so the write is invisible until it is announced — without
|
|
133
|
+
* this the render placement, the parent/child sync and the spatial audio refit all keep the old
|
|
134
|
+
* position. Translation-only, so no `updateMatrix` is owed: it is a column of the matrix.
|
|
135
|
+
*/
|
|
136
|
+
t64_announce_change(ecd, entity);
|
|
118
137
|
}
|
|
@@ -29,8 +29,12 @@ export class Interpoland {
|
|
|
29
29
|
* decodes the live component to / from a snapshot
|
|
30
30
|
* @param {BinaryInterpolationAdapter} interpolation_adapter blends two
|
|
31
31
|
* snapshots
|
|
32
|
+
* @param {(dataset: EntityComponentDataset, entity: number) => void} [announce]
|
|
33
|
+
* called after the blended snapshot has been written into the live component. A component
|
|
34
|
+
* that carries no signals of its own — {@link Transform64} is the reason this exists — is
|
|
35
|
+
* invisible to everything downstream until someone says it changed, and the writer owes that.
|
|
32
36
|
*/
|
|
33
|
-
constructor(type_id: number, component_class: Function, serialization_adapter: BinaryClassSerializationAdapter, interpolation_adapter: BinaryInterpolationAdapter);
|
|
37
|
+
constructor(type_id: number, component_class: Function, serialization_adapter: BinaryClassSerializationAdapter, interpolation_adapter: BinaryInterpolationAdapter, announce?: (dataset: EntityComponentDataset, entity: number) => void);
|
|
34
38
|
/** @type {number} */
|
|
35
39
|
type_id: number;
|
|
36
40
|
/** @type {Function} */
|
|
@@ -39,6 +43,8 @@ export class Interpoland {
|
|
|
39
43
|
serialization_adapter: BinaryClassSerializationAdapter;
|
|
40
44
|
/** @type {BinaryInterpolationAdapter} */
|
|
41
45
|
interpolation_adapter: BinaryInterpolationAdapter;
|
|
46
|
+
/** @type {(dataset: EntityComponentDataset, entity: number) => void} */
|
|
47
|
+
announce: (dataset: EntityComponentDataset, entity: number) => void;
|
|
42
48
|
/**
|
|
43
49
|
* @readonly
|
|
44
50
|
* @type {boolean}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interpoland.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/Interpoland.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Interpoland.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/Interpoland.js"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IACI;;;;;;;;;;;OAWG;IACH,qBAXW,MAAM,mJAMN,CAAC,OAAO,wBAAwB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAgBnE;IAVG,qBAAqB;IACrB,SADW,MAAM,CACK;IACtB,uBAAuB;IACvB,0BAAsC;IACtC,8CAA8C;IAC9C,uDAAkD;IAClD,yCAAyC;IACzC,kDAAkD;IAClD,wEAAwE;IACxE,UADW,CAAC,OAAO,wBAAwB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAC5C;IAIhC;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { noop } from "../../core/function/noop.js";
|
|
1
2
|
/**
|
|
2
3
|
* Descriptor for ONE thing the interpolation system blends for an entity.
|
|
3
4
|
*
|
|
@@ -29,8 +30,12 @@ export class Interpoland {
|
|
|
29
30
|
* decodes the live component to / from a snapshot
|
|
30
31
|
* @param {BinaryInterpolationAdapter} interpolation_adapter blends two
|
|
31
32
|
* snapshots
|
|
33
|
+
* @param {(dataset: EntityComponentDataset, entity: number) => void} [announce]
|
|
34
|
+
* called after the blended snapshot has been written into the live component. A component
|
|
35
|
+
* that carries no signals of its own — {@link Transform64} is the reason this exists — is
|
|
36
|
+
* invisible to everything downstream until someone says it changed, and the writer owes that.
|
|
32
37
|
*/
|
|
33
|
-
constructor(type_id, component_class, serialization_adapter, interpolation_adapter) {
|
|
38
|
+
constructor(type_id, component_class, serialization_adapter, interpolation_adapter, announce = noop) {
|
|
34
39
|
/** @type {number} */
|
|
35
40
|
this.type_id = type_id;
|
|
36
41
|
/** @type {Function} */
|
|
@@ -39,6 +44,8 @@ export class Interpoland {
|
|
|
39
44
|
this.serialization_adapter = serialization_adapter;
|
|
40
45
|
/** @type {BinaryInterpolationAdapter} */
|
|
41
46
|
this.interpolation_adapter = interpolation_adapter;
|
|
47
|
+
/** @type {(dataset: EntityComponentDataset, entity: number) => void} */
|
|
48
|
+
this.announce = announce;
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterpolationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/InterpolationSystem.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAOI;;OAEG;IACH,0DAFW;QAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EA6CvE;IAnDD,sCAA8B;IAC9B,oEAEE;IAQE;;;;OAIG;IACH,KAFU,gBAAgB,CAEkD;IAE5E;;;;;OAKG;IACH,mBAA2B;IAE3B;;;;OAIG;IACH,kBAAmC;IAGnC;;;;;;;OAOG;IACH,kBAA0B;IAE1B;;;;;OAKG;IACH,yBAAiC;IAGrC;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,OACN,gBAAgB,UAChB,MAAM;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,QAI7D;IAED;;;;;OAKG;IACH,2BAHW,MAAM,GACJ,OAAO,CAInB;IAED;;OAEG;IACH,qDAEC;IAED;;;OAGG;IACH,mBAHW,YAAY,UACZ,MAAM,QAShB;IAED;;;OAGG;IACH,qBAHW,YAAY,UACZ,MAAM,QAIhB;IAED,
|
|
1
|
+
{"version":3,"file":"InterpolationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/InterpolationSystem.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAOI;;OAEG;IACH,0DAFW;QAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EA6CvE;IAnDD,sCAA8B;IAC9B,oEAEE;IAQE;;;;OAIG;IACH,KAFU,gBAAgB,CAEkD;IAE5E;;;;;OAKG;IACH,mBAA2B;IAE3B;;;;OAIG;IACH,kBAAmC;IAGnC;;;;;;;OAOG;IACH,kBAA0B;IAE1B;;;;;OAKG;IACH,yBAAiC;IAGrC;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,OACN,gBAAgB,UAChB,MAAM;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,QAI7D;IAED;;;;;OAKG;IACH,2BAHW,MAAM,GACJ,OAAO,CAInB;IAED;;OAEG;IACH,qDAEC;IAED;;;OAGG;IACH,mBAHW,YAAY,UACZ,MAAM,QAShB;IAED;;;OAGG;IACH,qBAHW,YAAY,UACZ,MAAM,QAIhB;IAED,sBA6FC;IAGL;;;OAGG;IACH,gCAFU,OAAO,CAEkC;CANlD;uBA3OsB,kBAAkB;6BAEyC,mBAAmB;4CAHzD,iDAAiD;iCAE5D,uBAAuB"}
|
|
@@ -230,6 +230,9 @@ export class InterpolationSystem extends System {
|
|
|
230
230
|
|
|
231
231
|
scratch.position = 0;
|
|
232
232
|
interpoland.serialization_adapter.deserialize(scratch, target);
|
|
233
|
+
|
|
234
|
+
// the write is invisible to everything downstream until it is announced
|
|
235
|
+
interpoland.announce(dataset, entity);
|
|
233
236
|
}
|
|
234
237
|
}
|
|
235
238
|
}
|
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
* fidelity in a massive world needs the full mantissa far from the origin, and
|
|
9
9
|
* the interpolation log is local memory, not wire bytes.
|
|
10
10
|
*
|
|
11
|
-
* `deserialize` writes
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* `deserialize` writes the pose and recomposes the matrix, because a
|
|
12
|
+
* {@link Transform64} does not maintain it. Telling the rest of the engine that
|
|
13
|
+
* the row changed is the caller's half: a Transform64 carries no signals either,
|
|
14
|
+
* so {@link InterpolationSystem} announces through the interpoland once the write
|
|
15
|
+
* has landed.
|
|
14
16
|
*
|
|
15
17
|
* @author Alex Goldring
|
|
16
18
|
* @copyright Company Named Limited (c) 2026
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformPoseSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/TransformPoseSerializationAdapter.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"TransformPoseSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/TransformPoseSerializationAdapter.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH;;IAEI,0BAAoB;IAGpB;;;OAGG;IACH,2CAFW,WAAW,QAWrB;IAED;;;OAGG;IACH,6CAFW,WAAW,QAqBrB;CACJ;gDAlE+C,0DAA0D;4BAC9E,iCAAiC"}
|
|
@@ -11,9 +11,11 @@ import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
|
11
11
|
* fidelity in a massive world needs the full mantissa far from the origin, and
|
|
12
12
|
* the interpolation log is local memory, not wire bytes.
|
|
13
13
|
*
|
|
14
|
-
* `deserialize` writes
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* `deserialize` writes the pose and recomposes the matrix, because a
|
|
15
|
+
* {@link Transform64} does not maintain it. Telling the rest of the engine that
|
|
16
|
+
* the row changed is the caller's half: a Transform64 carries no signals either,
|
|
17
|
+
* so {@link InterpolationSystem} announces through the interpoland once the write
|
|
18
|
+
* has landed.
|
|
17
19
|
*
|
|
18
20
|
* @author Alex Goldring
|
|
19
21
|
* @copyright Company Named Limited (c) 2026
|
|
@@ -52,5 +54,14 @@ export class TransformPoseSerializationAdapter extends BinaryClassSerializationA
|
|
|
52
54
|
const rw = buffer.readFloat64();
|
|
53
55
|
transform.setTranslation(px, py, pz);
|
|
54
56
|
transform.setRotation(rx, ry, rz, rw);
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* `setRotation` does not touch the matrix — it says so — and the matrix is what render
|
|
60
|
+
* placement, culling and attachments read. Without this the rotation half of every
|
|
61
|
+
* interpolated pose was written into slots nothing looks at, and the object rendered at
|
|
62
|
+
* whatever pose was last composed. The translation half escaped only because the translation
|
|
63
|
+
* *is* the matrix's fourth column.
|
|
64
|
+
*/
|
|
65
|
+
transform.updateMatrix();
|
|
55
66
|
}
|
|
56
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pose_interpoland.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/pose_interpoland.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pose_interpoland.d.ts","sourceRoot":"","sources":["../../../../src/engine/interpolation/pose_interpoland.js"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,2BAFU,MAAM,CAEc;AAE9B;;;;;GAKG;AACH,+BAFU,WAAW,CAQnB;4BA1B0B,kBAAkB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
2
|
+
import { t64_announce_change } from "../ecs/transform/t64_announce_change.js";
|
|
2
3
|
import { Interpoland } from "./Interpoland.js";
|
|
3
4
|
import { PoseInterpolationAdapter } from "./PoseInterpolationAdapter.js";
|
|
4
5
|
import { TransformPoseSerializationAdapter } from "./TransformPoseSerializationAdapter.js";
|
|
@@ -24,4 +25,5 @@ export const POSE_INTERPOLAND = new Interpoland(
|
|
|
24
25
|
Transform64,
|
|
25
26
|
new TransformPoseSerializationAdapter(),
|
|
26
27
|
new PoseInterpolationAdapter(),
|
|
28
|
+
t64_announce_change,
|
|
27
29
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkPeer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/NetworkPeer.js"],"names":[],"mappings":";;;;;gCAgDU,MAAM;;;;;;;;;;;;;;;;;;;iCA2HI,MAAM;AAF1B;;;GAGG;AACH;;;;;IAKI;;;;;OAKG;;IAEH;;;;;;;;OAQG;;GAEJ;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;IAgDI;;;;;;;;;;;;;OAaG;IACH,gMAbW;QACV,KAAS,yBAAyB;QAClC,eAAmB,8BAA8B;QACjD,qBAAyB,EAAE,UAAU,CAAC;QACtC,cAAkB,EAAE,UAAU,CAAC;QAC/B,YAAgB,CAAC,EAAE;YAAE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QACxF,cAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAmB,CAAC,EAAE,cAAc,GAAC,IAAI,CAAC;QAC1C,oBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,oBAAwB,CAAC,EAAE,MAAM,CAAC;KAC/B,EAuPH;IAnOG,qCAAqC;IACrC,8BAAkB;IAElB,0CAA0C;IAC1C,oBADW,2BAA2B,CACoC;IAK1E,gCAAgC;IAChC,iBADW,iBAAiB,CACkB;IAK9C,mCAAmC;IACnC,YADW,oBAAoB,CACa;IAE5C,wBAAwB;IACxB,YADW,SAAS,CACoD;IAExE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,sBAFU,MAAM,CAEgC;IAEhD;;;;;;;;OAQG;IACH,iBAFU,cAAc,GAAC,IAAI,CAES;IAatC,gCAAgC;IAChC,UADW,iBAAiB,CAQ1B;IAEF,yBAAyB;IACzB,YADW,UAAU,CAOnB;IAEF,uBAAuB;IACvB,UADW,QAAQ,CACW;IAgC9B;;;;;;OAMG;IACH,mBAFU,MAAM,CAEqB;IAErC;;;;;;OAMG;IACH,mBAFU,MAAM,CAEqB;IAErC;;;;;;;;OAQG;IACH,cAFU,MAAM,CAEgB;IAEhC;;;;;;;;OAQG;IACH,aAFU,MAAM,CAEe;IAE/B;;;;OAIG;IACH,wBAFU,MAAM,CAE0B;IAE1C;;;;;;OAMG;IACH,eAFU,MAAM,CAEiB;IAEjC;;;;;;;;;OASG;IACH,eAFU,MAAM,CAEiB;IAEjC;;;;OAIG;IACH,gBAFU,MAAM,CAEkB;IAElC;;;;OAIG;IACH,gBAFU,MAAM,CAEkB;IAElC;;;;;OAKG;IACH,oBAFU,MAAM,CAEsB;IAEtC;;;;;;;;;;;;;OAaG;IACH,mBAFU,MAAM,CAEqB;IAGzC;;;;;;;OAOG;IACH,sBAHW,MAAM,aACN;QAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,GAAG,CAAA;KAAE,QAuS3E;IAED;;;OAGG;IACH,yBAFW,MAAM,QAgChB;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,6BAFa,MAAM,CAIlB;IAED;;;;;;;;OAQG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;;;;;;OASG;IACH,2BAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,OAAO,GAAC,SAAS,CAK7B;IAED;;;;;;;OAOG;IACH,yBAFW,MAAM,QAYhB;IAED;;;;;;;;OAQG;IACH,
|
|
1
|
+
{"version":3,"file":"NetworkPeer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/NetworkPeer.js"],"names":[],"mappings":"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"}
|
|
@@ -988,16 +988,6 @@ export class NetworkPeer {
|
|
|
988
988
|
this.#tick_open = false;
|
|
989
989
|
|
|
990
990
|
this.flush_outbound(this.#current_frame);
|
|
991
|
-
|
|
992
|
-
// Per-tick fragment maintenance: age out sender-side retention
|
|
993
|
-
// and drive NACK emission for any incomplete inbound messages.
|
|
994
|
-
// Runs AFTER the action-stream send loop so the shared
|
|
995
|
-
// __send_buffer is free for the on_nack closure to reuse.
|
|
996
|
-
const now_ms = performance.now();
|
|
997
|
-
for (const [, conn] of this.#peers) {
|
|
998
|
-
conn.fragment_retention.service(now_ms);
|
|
999
|
-
conn.fragment_assembler.service(now_ms, conn.on_nack);
|
|
1000
|
-
}
|
|
1001
991
|
}
|
|
1002
992
|
|
|
1003
993
|
/**
|
|
@@ -1174,6 +1164,21 @@ export class NetworkPeer {
|
|
|
1174
1164
|
// Reset the per-tick changed-entity set so the next tick starts clean.
|
|
1175
1165
|
// (begin_tick also clears it; the dual call is harmless.)
|
|
1176
1166
|
if (this.#changed_entities !== null) this.#changed_entities.clear();
|
|
1167
|
+
|
|
1168
|
+
// Per-tick fragment maintenance: age out sender-side retention and drive NACK emission for
|
|
1169
|
+
// any incomplete inbound messages. Runs AFTER the action-stream send loop so the shared
|
|
1170
|
+
// #send_buffer is free for the on_nack closure to reuse.
|
|
1171
|
+
//
|
|
1172
|
+
// Here and not in `end_tick`: a host never calls `end_tick`. ServerAuthoritativeServer
|
|
1173
|
+
// bypasses it and drives `flush_outbound` directly because it manages action_log frames
|
|
1174
|
+
// itself across the rollback replay, so with these two calls one level up, NACK recovery and
|
|
1175
|
+
// retention age-out were inoperative in the client -> host direction — the direction that
|
|
1176
|
+
// carries player input.
|
|
1177
|
+
const now_ms = performance.now();
|
|
1178
|
+
for (const [, conn] of this.#peers) {
|
|
1179
|
+
conn.fragment_retention.service(now_ms);
|
|
1180
|
+
conn.fragment_assembler.service(now_ms, conn.on_nack);
|
|
1181
|
+
}
|
|
1177
1182
|
}
|
|
1178
1183
|
|
|
1179
1184
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClothWorld.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/ClothWorld.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH;IAEI;;;OAGG;IACH,SAFU,YAAY,CAEoB;IAE1C;;;;;;;;;;;;OAYG;IACH,WAFU,aAAa,EAAE,CAEV;IAEf;;;;;;;;;;;;;;;OAeG;IACH,QAFU;QAAC,WAAW,SAAW,MAAM,KAAG,CAAC,iBAAe,IAAI,CAAC,CAAA;KAAC,GAAC,IAAI,CAEvD;IAEd;;OAEG;IACH,eAFU,gBAAc,IAAI,CAEP;IAErB;;OAEG;IACH,aAFU,yBAAyB,GAAC,IAAI,CAErB;IAEnB;;;;;;OAMG;IACH,WAFU,mBAAmB,GAAC,IAAI,CAEjB;IAEjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAFU,oBAAkB,IAAI,CAEpB;IAEZ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAFU,MAAM,CAEP;IAET;;;;;OAKG;IACH,uBAAmB;IAEnB;;;;;OAKG;IACH,cAFU,OAAO,CAEI;IAErB;;;OAGG;IACH,oBAAwB;IAExB;;;;;;;;;;;;;;;;OAgBG;IACH,uBAKE;IAEF;;;;;OAKG;IACH,2CAiBC;IAED;;;;;OAKG;IACH,YALW,KAAK,kCAEL,MAAM,GACJ,aAAa,CAczB;IAED;;;;;;;;OAQG;IACH,iDAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,iDAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CA0BnC;IA+CD;;;;;;;;;;;OAWG;IACH,eAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CAanC;IAED;;;;;;;OAOG;IACH,aAHW,MAAM,GACJ,IAAI,CAShB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CAInC;IAED;;;;;OAKG;IACH,uCAFW,MAAM,QAgBhB;IAED;;;;;;;;;OASG;IACH,wBANW,aAAa,mCAEb,MAAM,GACJ,OAAO,CA8BnB;IAED;;;;;;;OAOG;IACH,iBAJW,aAAa,gCAEX,IAAI,
|
|
1
|
+
{"version":3,"file":"ClothWorld.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/ClothWorld.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH;IAEI;;;OAGG;IACH,SAFU,YAAY,CAEoB;IAE1C;;;;;;;;;;;;OAYG;IACH,WAFU,aAAa,EAAE,CAEV;IAEf;;;;;;;;;;;;;;;OAeG;IACH,QAFU;QAAC,WAAW,SAAW,MAAM,KAAG,CAAC,iBAAe,IAAI,CAAC,CAAA;KAAC,GAAC,IAAI,CAEvD;IAEd;;OAEG;IACH,eAFU,gBAAc,IAAI,CAEP;IAErB;;OAEG;IACH,aAFU,yBAAyB,GAAC,IAAI,CAErB;IAEnB;;;;;;OAMG;IACH,WAFU,mBAAmB,GAAC,IAAI,CAEjB;IAEjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAFU,oBAAkB,IAAI,CAEpB;IAEZ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAFU,MAAM,CAEP;IAET;;;;;OAKG;IACH,uBAAmB;IAEnB;;;;;OAKG;IACH,cAFU,OAAO,CAEI;IAErB;;;OAGG;IACH,oBAAwB;IAExB;;;;;;;;;;;;;;;;OAgBG;IACH,uBAKE;IAEF;;;;;OAKG;IACH,2CAiBC;IAED;;;;;OAKG;IACH,YALW,KAAK,kCAEL,MAAM,GACJ,aAAa,CAczB;IAED;;;;;;;;OAQG;IACH,iDAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,iDAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CA0BnC;IA+CD;;;;;;;;;;;OAWG;IACH,eAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CAanC;IAED;;;;;;;OAOG;IACH,aAHW,MAAM,GACJ,IAAI,CAShB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,aAAa,GAAC,SAAS,CAInC;IAED;;;;;OAKG;IACH,uCAFW,MAAM,QAgBhB;IAED;;;;;;;;;OASG;IACH,wBANW,aAAa,mCAEb,MAAM,GACJ,OAAO,CA8BnB;IAED;;;;;;;OAOG;IACH,iBAJW,aAAa,gCAEX,IAAI,CA4ChB;IAwFD;;;;;;;;;;;OAWG;IACH,kBAPW,aAAa,MACb,MAAM,UACN,YAAY,UACZ,MAAM,GACJ,OAAO,CAgPnB;;CA8EJ;8BAn9B6B,oBAAoB;0CAjB3C,gEAAgE;oCAcnC,0BAA0B;sBA4BxC,YAAY"}
|
|
@@ -549,6 +549,23 @@ export class ClothWorld {
|
|
|
549
549
|
* @returns {void}
|
|
550
550
|
*/
|
|
551
551
|
finish(instance, ecd) {
|
|
552
|
+
if (!instance.seeded) {
|
|
553
|
+
/**
|
|
554
|
+
* The seeding this step ran against is gone. `#rig_removed` nulls `instance.rig` from an
|
|
555
|
+
* observer callback while every rig-path array is still in place, and `cloth_seed_rig`
|
|
556
|
+
* leaves the entity-path arrays empty on purpose so a stale write-back cannot reach a
|
|
557
|
+
* previous seeding's entities — so between the removal and the next `#seed` the writer
|
|
558
|
+
* this method picks and the arrays it would read disagree.
|
|
559
|
+
*
|
|
560
|
+
* Under `ClothSystem` that window never opens: step and finish are one block. Under
|
|
561
|
+
* `WorkerClothSystem` a whole frame sits between dispatch and join, so taking a cape off
|
|
562
|
+
* landed the join on `cloth_write_back` reading an `undefined` transform, inside the
|
|
563
|
+
* fixed pass. `seeded` is the flag that actually tracks the arrays, so it is what this
|
|
564
|
+
* follows; the result is discarded and the next step re-seeds and steps again.
|
|
565
|
+
*/
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
|
|
552
569
|
const result = instance.state.result;
|
|
553
570
|
|
|
554
571
|
instance.contact_count = result[ClothStepResult.CONTACT_COUNT];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MLS_MPM.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/mls-mpm/MLS_MPM.js"],"names":[],"mappings":"AAcA;IACI,iBAAe;IAIX;;;;;OAKG;IACH,MAFU,YAAY,CAEiB;IAG3C;;;OAGG;IACH,YAFW,MAAM,
|
|
1
|
+
{"version":3,"file":"MLS_MPM.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/mls-mpm/MLS_MPM.js"],"names":[],"mappings":"AAcA;IACI,iBAAe;IAIX;;;;;OAKG;IACH,MAFU,YAAY,CAEiB;IAG3C;;;OAGG;IACH,YAFW,MAAM,QAuWhB;IAED;;;;;;;;;;;OAWG;IACH,uBALW,MAAM,EAAE,KACR,MAAM,gBACK,MAAM,UACjB,MAAM,QAgBhB;CACJ"}
|
|
@@ -316,6 +316,16 @@ export class MLS_MPMSolver {
|
|
|
316
316
|
|
|
317
317
|
const grid_y = base_coordinate_y + j;
|
|
318
318
|
|
|
319
|
+
// Same guard as the scatter above, which this loop was missing entirely. The stencil
|
|
320
|
+
// reaches `base + 2` and the base reaches the last cell, so a particle near the far
|
|
321
|
+
// corner indexed past the end of the flat grid, read `undefined`, and turned itself
|
|
322
|
+
// into NaN for the rest of the simulation - the hardening `Math.exp` and the polar
|
|
323
|
+
// decomposition both propagate it, and its next scatter poisons whatever node
|
|
324
|
+
// `(NaN | 0)` maps to, which is the corner of the domain.
|
|
325
|
+
if (grid_y < 0 || grid_y >= n) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
|
|
319
329
|
for (let i = 0; i < 3; i++) {
|
|
320
330
|
|
|
321
331
|
const i2 = i * 2;
|
|
@@ -323,6 +333,10 @@ export class MLS_MPMSolver {
|
|
|
323
333
|
|
|
324
334
|
const grid_x = base_coordinate_x + i;
|
|
325
335
|
|
|
336
|
+
if (grid_x < 0 || grid_x >= n) {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
|
|
326
340
|
const cell_index = grid_x + grid_width * grid_y;
|
|
327
341
|
|
|
328
342
|
const cell_address = cell_index * 3;
|
|
@@ -55,7 +55,7 @@ export class AbstractAudioClip {
|
|
|
55
55
|
* @param {number} [gainDb] accumulated gain offset (dB); start with the event's master gain
|
|
56
56
|
* @param {number} [pitchCents] accumulated pitch offset (cents)
|
|
57
57
|
* @param {number} [offset] start time of this clip relative to the timeline origin (seconds)
|
|
58
|
-
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number}[], duration: number}}
|
|
58
|
+
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number, duration: number}[], duration: number}}
|
|
59
59
|
*/
|
|
60
60
|
planTimeline(env: {
|
|
61
61
|
durationOf: (arg0: SampleAudioClip) => number;
|
|
@@ -67,6 +67,7 @@ export class AbstractAudioClip {
|
|
|
67
67
|
offset: number;
|
|
68
68
|
gainDb: number;
|
|
69
69
|
pitchCents: number;
|
|
70
|
+
duration: number;
|
|
70
71
|
}[];
|
|
71
72
|
duration: number;
|
|
72
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/AbstractAudioClip.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH;IAEI;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,8BAFW,iBAAiB,QAK3B;IAED;;;;;OAKG;IACH,cAHW,iBAAiB,GACf,OAAO,CAKnB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAOlB;IAED;;;;;;;;;;;;;;OAcG;IACH,kBATW;QAAC,UAAU,SAAW,eAAe,KAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,oBAAoB,CAAC;QAAC,YAAY,SAAW,MAAM,KAAE,CAAC,MAAM,GAAC,SAAS,CAAC,CAAA;KAAC,WAIjI,MAAM,eACN,MAAM,WACN,MAAM,GACJ;QAAC,KAAK,EAAE;YAAC,IAAI,EAAE,eAAe,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,
|
|
1
|
+
{"version":3,"file":"AbstractAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/AbstractAudioClip.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH;IAEI;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,8BAFW,iBAAiB,QAK3B;IAED;;;;;OAKG;IACH,cAHW,iBAAiB,GACf,OAAO,CAKnB;IAED;;;;OAIG;IACH,QAFa,MAAM,CAOlB;IAED;;;;;;;;;;;;;;OAcG;IACH,kBATW;QAAC,UAAU,SAAW,eAAe,KAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,oBAAoB,CAAC;QAAC,YAAY,SAAW,MAAM,KAAE,CAAC,MAAM,GAAC,SAAS,CAAC,CAAA;KAAC,WAIjI,MAAM,eACN,MAAM,WACN,MAAM,GACJ;QAAC,KAAK,EAAE;YAAC,IAAI,EAAE,eAAe,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAItI;IAED;;;;;;;;OAQG;IACH,yBAHW,eAAe,EAAE,GACf,eAAe,EAAE,CAI7B;IAED;;;;;;OAMG;IACH,SAFa,OAAO,CAInB;IAGL;;;OAGG;IACH,sBAFU,OAAO,CAEsB;CANtC;mCAvGY,OAAO,uCAAuC,EAAE,oBAAoB;8BACpE,OAAO,sBAAsB,EAAE,eAAe"}
|
|
@@ -76,7 +76,7 @@ export class AbstractAudioClip {
|
|
|
76
76
|
* @param {number} [gainDb] accumulated gain offset (dB); start with the event's master gain
|
|
77
77
|
* @param {number} [pitchCents] accumulated pitch offset (cents)
|
|
78
78
|
* @param {number} [offset] start time of this clip relative to the timeline origin (seconds)
|
|
79
|
-
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number}[], duration: number}}
|
|
79
|
+
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number, duration: number}[], duration: number}}
|
|
80
80
|
*/
|
|
81
81
|
planTimeline(env, gainDb = 0, pitchCents = 0, offset = 0) {
|
|
82
82
|
throw new Error('Implementation must override planTimeline()');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlendContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH;IAqBI;;;;OAIG;IACH,uBAJW,mBAAmB,wCACnB;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,MAAM,CAAC,EAAC,cAAc,EAAE,CAAA;KAAC,GACjE,uBAAuB,CAWnC;IAjCD;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB;;;;OAIG;IACH,QAFU,cAAc,EAAE,CAEd;IAkCZ
|
|
1
|
+
{"version":3,"file":"BlendContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH;IAqBI;;;;OAIG;IACH,uBAJW,mBAAmB,wCACnB;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,MAAM,CAAC,EAAC,cAAc,EAAE,CAAA;KAAC,GACjE,uBAAuB,CAWnC;IAjCD;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB;;;;OAIG;IACH,QAFU,cAAc,EAAE,CAEd;IAkCZ;;;;;;;;;MA+BC;IAED;;;OAGG;IACH,cAHW,uBAAuB,GACrB,OAAO,CAkBnB;IAqBD,iCAaC;IAED;;;;;;;;;;;;MASC;IAED;;;;;;;aAWC;;CACJ;;;;mCAjLkC,yBAAyB;+BAF7B,+CAA+C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RandomContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAqEI;;;;;;OAMG;IACH,uBALW,mBAAmB,oCACnB;QAAC,kBAAkB,CAAC,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,EAAE,CAAA;KAAC,GAE7C,wBAAwB,CAapC;IArFD;;;OAGG;IACH,sBAFU,MAAM,CAES;IAEzB;;;;;;;;;;;;OAYG;IACH,SAFU,MAAM,EAAE,CAEL;IAEb;;;;;OAKG;IACH,4CAFa,IAAI,CAQhB;IAWD;;;;;;OAMG;IACH,oBAHW,MAAM,EAAE,GACN,IAAI,CAgBhB;IAsBD;;;;OAIG;IACH,cAHW,wBAAwB,GACtB,OAAO,CAuBnB;IAcD,kCAaC;IAED;;;;;;;;;MAQC;IAED;;;;;;aAQC;IAED;;;;;;;;OAQG;IACH,gDAFa,MAAM,CA6BlB;IAED
|
|
1
|
+
{"version":3,"file":"RandomContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAqEI;;;;;;OAMG;IACH,uBALW,mBAAmB,oCACnB;QAAC,kBAAkB,CAAC,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,EAAE,CAAA;KAAC,GAE7C,wBAAwB,CAapC;IArFD;;;OAGG;IACH,sBAFU,MAAM,CAES;IAEzB;;;;;;;;;;;;OAYG;IACH,SAFU,MAAM,EAAE,CAEL;IAEb;;;;;OAKG;IACH,4CAFa,IAAI,CAQhB;IAWD;;;;;;OAMG;IACH,oBAHW,MAAM,EAAE,GACN,IAAI,CAgBhB;IAsBD;;;;OAIG;IACH,cAHW,wBAAwB,GACtB,OAAO,CAuBnB;IAcD,kCAaC;IAED;;;;;;;;;MAQC;IAED;;;;;;aAQC;IAED;;;;;;;;OAQG;IACH,gDAFa,MAAM,CA6BlB;IAED;;;;;;;;;MAQC;CACJ;;;;mCA5NkC,yBAAyB"}
|
|
@@ -91,7 +91,7 @@ export class SampleAudioClip extends AbstractAudioClip {
|
|
|
91
91
|
* @param {number} [gainDb]
|
|
92
92
|
* @param {number} [pitchCents]
|
|
93
93
|
* @param {number} [offset]
|
|
94
|
-
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number}[], duration: number}}
|
|
94
|
+
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number, duration: number}[], duration: number}}
|
|
95
95
|
*/
|
|
96
96
|
planTimeline(env: any, gainDb?: number, pitchCents?: number, offset?: number): {
|
|
97
97
|
plays: {
|
|
@@ -99,6 +99,7 @@ export class SampleAudioClip extends AbstractAudioClip {
|
|
|
99
99
|
offset: number;
|
|
100
100
|
gainDb: number;
|
|
101
101
|
pitchCents: number;
|
|
102
|
+
duration: number;
|
|
102
103
|
}[];
|
|
103
104
|
duration: number;
|
|
104
105
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SampleAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SampleAudioClip.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH;IA2CI;;;;;OAKG;IACH,iBAJW,MAAM,mFACN;QAAC,UAAU,CAAC,EAAC,OAAO,CAAC;QAAC,IAAI,CAAC,EAAC,OAAO,CAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAA;KAAC,GAC5I,eAAe,CAyB3B;IAtED;;;OAGG;IACH,KAFU,MAAM,CAEP;IAET;;;OAGG;IACH,YAFU,OAAO,CAEE;IAEnB;;OAEG;IACH,MAFU,OAAO,CAEJ;IAEb;;;OAGG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,YAFU,MAAM,CAED;IAiCf;;;;OAIG;IACH,cAHW,eAAe,GACb,OAAO,CAWnB;IAkBD;;OAEG;IACH,SAFa,eAAe,CAe3B;IAED;;;;;;;;;;MAYC;IAED;;;;;;;;;;aAUC;IAED;;;;;;OAMG;IACH,gCALW,MAAM,eACN,MAAM,WACN,MAAM,GACJ;QAAC,KAAK,EAAE;YAAC,IAAI,EAAE,eAAe,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,
|
|
1
|
+
{"version":3,"file":"SampleAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SampleAudioClip.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH;IA2CI;;;;;OAKG;IACH,iBAJW,MAAM,mFACN;QAAC,UAAU,CAAC,EAAC,OAAO,CAAC;QAAC,IAAI,CAAC,EAAC,OAAO,CAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAC,KAAK,CAAC,EAAC,MAAM,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAC;QAAC,UAAU,CAAC,EAAC,MAAM,CAAA;KAAC,GAC5I,eAAe,CAyB3B;IAtED;;;OAGG;IACH,KAFU,MAAM,CAEP;IAET;;;OAGG;IACH,YAFU,OAAO,CAEE;IAEnB;;OAEG;IACH,MAFU,OAAO,CAEJ;IAEb;;;OAGG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,YAFU,MAAM,CAED;IAiCf;;;;OAIG;IACH,cAHW,eAAe,GACb,OAAO,CAWnB;IAkBD;;OAEG;IACH,SAFa,eAAe,CAe3B;IAED;;;;;;;;;;MAYC;IAED;;;;;;;;;;aAUC;IAED;;;;;;OAMG;IACH,gCALW,MAAM,eACN,MAAM,WACN,MAAM,GACJ;QAAC,KAAK,EAAE;YAAC,IAAI,EAAE,eAAe,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CA6BtI;IAED,uCAGC;CAKJ;;;;kCAzMiC,wBAAwB"}
|
|
@@ -163,7 +163,7 @@ export class SampleAudioClip extends AbstractAudioClip {
|
|
|
163
163
|
* @param {number} [gainDb]
|
|
164
164
|
* @param {number} [pitchCents]
|
|
165
165
|
* @param {number} [offset]
|
|
166
|
-
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number}[], duration: number}}
|
|
166
|
+
* @returns {{plays: {clip: SampleAudioClip, offset: number, gainDb: number, pitchCents: number, duration: number}[], duration: number}}
|
|
167
167
|
*/
|
|
168
168
|
planTimeline(env, gainDb = 0, pitchCents = 0, offset = 0) {
|
|
169
169
|
let g = gainDb + this.gain;
|
|
@@ -177,10 +177,19 @@ export class SampleAudioClip extends AbstractAudioClip {
|
|
|
177
177
|
p += (env.playback.random() * 2 - 1) * this.pitchRandom;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
/**
|
|
181
|
+
* At the pitch just resolved, not the raw buffer seconds. `pitchCents` reaches the voice as
|
|
182
|
+
* `source.detune`, which changes playback RATE — a leaf an octave down plays at half speed
|
|
183
|
+
* and lasts twice its buffer. Every duration here used to be the unscaled value, so a
|
|
184
|
+
* detuned leaf was retired mid-sound with a hard stop and every sequence holding it advanced
|
|
185
|
+
* early; `pitchRandom` made it a different amount on every trigger.
|
|
186
|
+
*/
|
|
187
|
+
const rate = 2 ** (p / 1200);
|
|
188
|
+
|
|
189
|
+
const duration = this.loop ? Infinity : env.durationOf(this) / rate;
|
|
181
190
|
|
|
182
191
|
return {
|
|
183
|
-
plays: [{ clip: this, offset, gainDb: g, pitchCents: p }],
|
|
192
|
+
plays: [{ clip: this, offset, gainDb: g, pitchCents: p, duration }],
|
|
184
193
|
duration
|
|
185
194
|
};
|
|
186
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH;IAEI;;;;OAIG;IACH,uBAHW,mBAAmB,GACjB,0BAA0B,CAQtC;IAID,oCAUC;IAED;;;;;;;MAMC;IAED;;;;aAIC;IAED
|
|
1
|
+
{"version":3,"file":"SequenceContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH;IAEI;;;;OAIG;IACH,uBAHW,mBAAmB,GACjB,0BAA0B,CAQtC;IAID,oCAUC;IAED;;;;;;;MAMC;IAED;;;;aAIC;IAED;;;;;;;;;MAyBC;CACJ;;;;mCA5EkC,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAcI;;;;OAIG;IACH,uBAJW,mBAAmB,gCACnB;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAA;KAAC,GACvC,wBAAwB,CAUpC;IAzBD;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;IAmCjB
|
|
1
|
+
{"version":3,"file":"SwitchContainerAudioClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH;IAcI;;;;OAIG;IACH,uBAJW,mBAAmB,gCACnB;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAA;KAAC,GACvC,wBAAwB,CAUpC;IAzBD;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;IAmCjB;;;;;;;;;MAWC;IAED;;;OAGG;IACH,cAHW,wBAAwB,GACtB,OAAO,CAMnB;IAWD,kCAYC;IAED;;;;;;;YA/EA;;;;eAIG;;;MAmFF;IAED;;;;;;aAMC;;CACJ;;;;mCAvHkC,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/runtime/EventInstance.js"],"names":[],"mappings":";;;iCAqBU,MAAM;;;;;;AAoFhB;;;;;;;;;GASG;AACH;IAqII;;;;OAIG;IACH,oBAJW,WAAW,eACX,gBAAgB,qIAChB;QAAC,KAAK,CAAC,EAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAC,OAAO,CAAC,EAAC,OAAO,CAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAC;QAAC,eAAe,CAAC,EAAC,oBAAoB,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAC,OAAO,CAAC,EAAC,OAAO,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,WAAW,CAAC,EAAC,UAAU,CAAC;QAAC,WAAW,CAAC,EAAC,mBAAmB,CAAA;KAAC,EA0EnQ;IAhND;;OAEG;IACH,WAFU,MAAM,CAEF;IAEd;;OAEG;IACH,OAFU,kBAAkB,GAAC,MAAM,CAEA;IAEnC;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;OAKG;IACH,cAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,aAAuB;IAyHnB;;OAEG;IACH,QAFU,WAAW,CAED;IAEpB;;OAEG;IACH,aAFU,gBAAgB,CAEI;IAE9B;;OAEG;IACH,OAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,UAFU,OAAO,GAAC,IAAI,CAEE;IAExB;;;;;OAKG;IACH,aAFU,UAAU,GAAC,IAAI,CAEK;IAE9B;;;;;OAKG;IACH,aAFU,mBAAmB,GAAC,IAAI,CAEJ;IAE9B;;OAEG;IACH,SAFU,OAAO,CAEK;IAEtB;;OAEG;IACH,oBAFU,MAAM,CAEqB;IAErC;;OAEG;IACH,iBAFU,oBAAoB,CAEQ;IAW1C;;;OAGG;IACH,uBAEC;IAED;;;OAGG;IACH,2CAeC;IAED;;;OAGG;IACH,WAFW,MAAM,QAyChB;
|
|
1
|
+
{"version":3,"file":"EventInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/sopra/runtime/EventInstance.js"],"names":[],"mappings":";;;iCAqBU,MAAM;;;;;;AAoFhB;;;;;;;;;GASG;AACH;IAqII;;;;OAIG;IACH,oBAJW,WAAW,eACX,gBAAgB,qIAChB;QAAC,KAAK,CAAC,EAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAC,OAAO,CAAC,EAAC,OAAO,CAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAC;QAAC,eAAe,CAAC,EAAC,oBAAoB,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAC,OAAO,CAAC,EAAC,OAAO,CAAC;QAAC,YAAY,CAAC,EAAC,MAAM,CAAC;QAAC,WAAW,CAAC,EAAC,UAAU,CAAC;QAAC,WAAW,CAAC,EAAC,mBAAmB,CAAA;KAAC,EA0EnQ;IAhND;;OAEG;IACH,WAFU,MAAM,CAEF;IAEd;;OAEG;IACH,OAFU,kBAAkB,GAAC,MAAM,CAEA;IAEnC;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;OAKG;IACH,cAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,aAAuB;IAyHnB;;OAEG;IACH,QAFU,WAAW,CAED;IAEpB;;OAEG;IACH,aAFU,gBAAgB,CAEI;IAE9B;;OAEG;IACH,OAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,UAFU,OAAO,GAAC,IAAI,CAEE;IAExB;;;;;OAKG;IACH,aAFU,UAAU,GAAC,IAAI,CAEK;IAE9B;;;;;OAKG;IACH,aAFU,mBAAmB,GAAC,IAAI,CAEJ;IAE9B;;OAEG;IACH,SAFU,OAAO,CAEK;IAEtB;;OAEG;IACH,oBAFU,MAAM,CAEqB;IAErC;;OAEG;IACH,iBAFU,oBAAoB,CAEQ;IAW1C;;;OAGG;IACH,uBAEC;IAED;;;OAGG;IACH,2CAeC;IAED;;;OAGG;IACH,WAFW,MAAM,QAyChB;IAoID;;;OAGG;IACH,qBAEC;IAED;;;OAGG;IACH,wBAEC;IAED;;;OAGG;IACH,cAFW,MAAM,QAQhB;IAED;;;;;;;;;;;OAWG;IACH,sBAFW,gBAAgB,QA8C1B;IAED;;;;;OAKG;IACH,uBAJW,MAAM,YACN,MAAM,eACN,MAAM,QAQhB;IAED;;;;;OAKG;IACH,yBAHW,MAAM,eACN,MAAM,QAYhB;IAED;;;;OAIG;IACH,cAFW,MAAM,QAehB;IAED;;OAEG;IACH,gBAEC;IAED;;;;;OAKG;IACH,YAHW,MAAM,oBACN,OAAO,GAAC,IAAI,QAkDtB;IAmGD;;OAEG;IACH,aAsCC;;CACJ;yBA91BY,OAAO,qCAAqC,EAAE,UAAU;sBACxD,OAAO,kCAAkC,EAAE,OAAO;+BAClD,OAAO,2CAA2C,EAAE,gBAAgB;kCACpE,OAAO,oDAAoD,EAAE,mBAAmB;0BAChF,OAAO,mBAAmB,EAAE,WAAW;+BACvC,OAAO,mCAAmC,EAAE,gBAAgB;mCAC5D,OAAO,2BAA2B,EAAE,oBAAoB;oBACxD,OAAO,YAAY,EAAE,KAAK"}
|
|
@@ -423,7 +423,10 @@ export class EventInstance {
|
|
|
423
423
|
offset: p.offset,
|
|
424
424
|
gainDb: p.gainDb,
|
|
425
425
|
pitchCents: p.pitchCents,
|
|
426
|
-
|
|
426
|
+
// what the plan decided, not the raw buffer: `pitchCents` is playback rate, so a
|
|
427
|
+
// detuned leaf's real duration is its buffer scaled by 2 ** (-cents / 1200), and
|
|
428
|
+
// re-reading `buffer.duration` here threw that away again
|
|
429
|
+
duration: p.duration,
|
|
427
430
|
voice: null
|
|
428
431
|
});
|
|
429
432
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode_coefficients.d.ts","sourceRoot":"","sources":["../../../../../../../src/format/image/avif/av1/decode/decode_coefficients.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decode_coefficients.d.ts","sourceRoot":"","sources":["../../../../../../../src/format/image/avif/av1/decode/decode_coefficients.js"],"names":[],"mappings":"AAgCA;;;;;;;;;;;;;;;;;GAiBG;AACH,iEAVW,MAAM,WACN,MAAM,WACN,MAAM,WACN,MAAM,GACJ,MAAM,CA2MlB"}
|