@woosh/meep-engine 3.18.0 → 3.20.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/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleCurveEditorView.js +303 -120
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGradientEditorView.js +108 -63
- package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -2
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +7 -46
- package/editor/view/particles/effect/particle-editor.css +60 -30
- package/package.json +1 -2
- package/samples/engine/README.md +1 -1
- package/src/core/binary/compression/decompress_bytes.d.ts +13 -0
- package/src/core/binary/compression/decompress_bytes.d.ts.map +1 -0
- package/src/core/binary/compression/decompress_bytes.js +28 -0
- package/src/core/collection/array/array_group_by.d.ts.map +1 -1
- package/src/core/collection/array/array_group_by.js +2 -11
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +4 -9
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +67 -22
- package/src/core/model/object/optional_clone.d.ts +7 -0
- package/src/core/model/object/optional_clone.d.ts.map +1 -0
- package/src/core/model/object/optional_equality.d.ts +10 -0
- package/src/core/model/object/optional_equality.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_equality.js +2 -2
- package/src/core/model/object/optional_hash.d.ts +9 -0
- package/src/core/model/object/optional_hash.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_hash.js +3 -3
- package/src/engine/asset/Asset.d.ts +1 -1
- package/src/engine/asset/Asset.d.ts.map +1 -1
- package/src/engine/asset/Asset.js +3 -1
- package/src/engine/asset/loaders/image/ImageDecoderWorker.js +12 -27
- package/src/engine/asset/loaders/image/prototypePNG.js +8 -7
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +9 -10
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +266 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +439 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +58 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +219 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +178 -25
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +809 -310
- package/src/format/image/png/PNGReader.d.ts +7 -6
- package/src/format/image/png/PNGReader.d.ts.map +1 -1
- package/src/format/image/png/PNGReader.js +13 -12
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts +3 -2
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +5 -4
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts +3 -2
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.js +5 -4
- package/src/format/image/png/png_inflate.d.ts +3 -3
- package/src/format/image/png/png_inflate.d.ts.map +1 -1
- package/src/format/image/png/png_inflate.js +29 -39
- package/src/format/texture/ktx2/ktx2_read.d.ts +4 -4
- package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -1
- package/src/format/texture/ktx2/ktx2_read.js +18 -21
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +3 -3
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +3 -3
- package/src/shade/descriptor/pipeline/render/FragmentState.js +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +3 -3
- package/src/shade/playground/particle_ecs/README.md +203 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.d.ts +39 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.js +315 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +145 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.js +202 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.d.ts +23 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.js +315 -0
- package/src/shade/playground/particle_ecs/bonfire_world.d.ts +86 -0
- package/src/shade/playground/particle_ecs/bonfire_world.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_world.js +303 -0
- package/src/shade/playground/particle_ecs/effects/embers.json +1634 -0
- package/src/shade/playground/particle_ecs/effects/flame.json +1882 -0
- package/src/shade/playground/particle_ecs/effects/smoke.json +1860 -0
- package/src/shade/playground/particle_ecs/effects/soot.json +1606 -0
- package/src/shade/playground/particle_ecs/index.html +330 -0
- package/src/shade/playground/particle_ecs/main.d.ts +2 -0
- package/src/shade/playground/particle_ecs/main.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/main.js +566 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.d.ts +16 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.js +144 -0
- package/src/shade/playground/particle_editor/README.md +5 -4
- package/src/shade/playground/particle_system/particle_prototype.d.ts +7 -9
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +7 -9
- package/src/shade/playground/profile_hotkey.d.ts +58 -0
- package/src/shade/playground/profile_hotkey.d.ts.map +1 -0
- package/src/shade/playground/profile_hotkey.js +325 -0
- package/src/shade/playground/ssr_motion/README.md +22 -0
- package/src/shade/playground/ssr_motion/index.html +18 -0
- package/src/shade/playground/ssr_motion/main.d.ts +2 -0
- package/src/shade/playground/ssr_motion/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_motion/main.js +149 -0
- package/src/shade/playground/ssr_variance/README.md +105 -0
- package/src/shade/playground/ssr_variance/capture.d.ts +16 -0
- package/src/shade/playground/ssr_variance/capture.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/capture.js +96 -0
- package/src/shade/playground/ssr_variance/index.html +23 -0
- package/src/shade/playground/ssr_variance/main.d.ts +2 -0
- package/src/shade/playground/ssr_variance/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/main.js +246 -0
- package/src/shade/playground/ssr_variance/reference.d.ts +18 -0
- package/src/shade/playground/ssr_variance/reference.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/reference.js +78 -0
- package/src/shade/playground/ssr_variance/scene.d.ts +11 -0
- package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/scene.js +61 -0
- package/src/shade/playground/ssr_variance/statistics.d.ts +44 -0
- package/src/shade/playground/ssr_variance/statistics.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/statistics.js +51 -0
- package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/Geometry.js +4 -7
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.js +9 -3
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +4 -4
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_decode_image.js +4 -4
- package/src/shade/renderer/material/StandardShadeMaterial.js +2 -2
- package/src/shade/renderer/particles/DESIGN.md +745 -702
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +3 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +1 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +9 -15
- package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_group_library.js +8 -3
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +0 -2
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +0 -9
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +0 -10
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +2 -8
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_ramp.js +2 -8
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +0 -6
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +13 -4
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +1 -12
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +1 -12
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +54 -60
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +9 -17
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +0 -1
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +2 -16
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +0 -14
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +3 -17
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +15 -36
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +1 -5
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -8
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +2 -11
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +2 -11
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +11 -4
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +431 -424
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +13 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +3 -6
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +49 -17
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +1 -5
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +0 -2
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +1 -3
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +4 -20
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +2 -5
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +0 -2
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +0 -2
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +2 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +20 -5
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +19 -5
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +137 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -8
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +18 -114
- package/src/shade/renderer/scene/Mesh.js +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +1 -1
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts +2 -2
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts.map +1 -1
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.js +3 -3
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +0 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +0 -30
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +0 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +0 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +0 -20
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts +0 -14
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +0 -50
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +0 -17
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +0 -1
- /package/src/{shade/descriptor/util → core/model/object}/optional_clone.js +0 -0
|
@@ -2,6 +2,8 @@ import { hash_mix3 } from "../../../math/hash/hash_mix3.js";
|
|
|
2
2
|
import { hash_mix2 } from "../../../math/hash/hash_mix2.js";
|
|
3
3
|
import { assert } from "../../../assert.js";
|
|
4
4
|
import { clamp } from "../../../math/clamp.js";
|
|
5
|
+
import { optional_equality } from "../../../model/object/optional_equality.js";
|
|
6
|
+
import { optional_hash } from "../../../model/object/optional_hash.js";
|
|
5
7
|
import { v3_length } from "../../vec3/v3_length.js";
|
|
6
8
|
import { Vector3 } from "../../Vector3.js";
|
|
7
9
|
import { AbstractShape3D } from "./AbstractShape3D.js";
|
|
@@ -442,20 +444,13 @@ export class HeightMapShape3D extends AbstractShape3D {
|
|
|
442
444
|
if (!this.size.equals(other.size)) return false;
|
|
443
445
|
if (this.tessellation !== other.tessellation) return false;
|
|
444
446
|
|
|
445
|
-
|
|
446
|
-
// fall through to value equality so two shapes built from independent
|
|
447
|
-
// but identical sampler instances still compare equal
|
|
448
|
-
if (this.sampler === other.sampler) return true;
|
|
449
|
-
|
|
450
|
-
if (this.sampler === null || other.sampler === null) return false;
|
|
451
|
-
|
|
452
|
-
return this.sampler.equals(other.sampler);
|
|
447
|
+
return optional_equality(this.sampler, other.sampler);
|
|
453
448
|
}
|
|
454
449
|
|
|
455
450
|
hash() {
|
|
456
451
|
const a = this.orientation.hash();
|
|
457
452
|
const b = this.size.hash();
|
|
458
|
-
const c = this.sampler
|
|
453
|
+
const c = optional_hash(this.sampler);
|
|
459
454
|
|
|
460
455
|
return hash_mix2(hash_mix3(a, b, c), this.tessellation);
|
|
461
456
|
}
|
|
@@ -347,11 +347,13 @@ function align(graph, layer_count, order, rank, layer_start, neighbours, marked,
|
|
|
347
347
|
* Push the blocks of one pass as far towards the top as the boxes below them allow, and read off a
|
|
348
348
|
* coordinate for every box.
|
|
349
349
|
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
350
|
+
* First place blocks relative to the sink of their class, then solve the separation constraints
|
|
351
|
+
* between classes. A class above another must carry that neighbour's final shift: treating a
|
|
352
|
+
* relative shift as absolute can move the lower class into the upper one. These constraints form
|
|
353
|
+
* a DAG, so a topological pass propagates every shift before the classes depending on it are placed.
|
|
354
|
+
* Both stages take linear time and preserve the port offsets within each block.
|
|
355
|
+
*
|
|
356
|
+
* @see https://arxiv.org/abs/2008.01252 — Brandes, Walter, Zink, correction to shift accumulation
|
|
355
357
|
*
|
|
356
358
|
* @param {LayoutBoxGraph} graph
|
|
357
359
|
* @param {Int32Array} order
|
|
@@ -428,13 +430,7 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
428
430
|
if (place[u] + need > place[v]) {
|
|
429
431
|
place[v] = place[u] + need;
|
|
430
432
|
}
|
|
431
|
-
}
|
|
432
|
-
const slack = place[v] - place[u] - need;
|
|
433
|
-
|
|
434
|
-
if (slack < shift[sink[u]]) {
|
|
435
|
-
shift[sink[u]] = slack;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
433
|
+
}
|
|
438
434
|
}
|
|
439
435
|
|
|
440
436
|
w = next[w];
|
|
@@ -450,15 +446,62 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
450
446
|
const y = new Float64Array(box_count);
|
|
451
447
|
|
|
452
448
|
for (let box = 0; box < box_count; box++) {
|
|
453
|
-
const r = root[box];
|
|
454
|
-
|
|
455
|
-
y[box] = place[r] + offset[box];
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
449
|
+
const r = root[box];
|
|
450
|
+
|
|
451
|
+
y[box] = place[r] + offset[box];
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// Record every boundary between classes, directed from the lower class to the upper one.
|
|
455
|
+
// Use the position of the lower box in `order` as the edge index; its predecessor is `at - 1`.
|
|
456
|
+
// Parallel boundaries matter: different box heights and ports can make either one tighter.
|
|
457
|
+
const first_boundary = new Int32Array(box_count).fill(-1);
|
|
458
|
+
const next_boundary = new Int32Array(box_count);
|
|
459
|
+
const pending = new Int32Array(box_count);
|
|
460
|
+
|
|
461
|
+
for (let layer = 0; layer + 1 < layer_start.length; layer++) {
|
|
462
|
+
for (let at = layer_start[layer] + 1; at < layer_start[layer + 1]; at++) {
|
|
463
|
+
const upper = sink[root[order[at - 1]]];
|
|
464
|
+
const lower = sink[root[order[at]]];
|
|
465
|
+
|
|
466
|
+
if (upper !== lower) {
|
|
467
|
+
next_boundary[at] = first_boundary[lower];
|
|
468
|
+
first_boundary[lower] = at;
|
|
469
|
+
pending[upper]++;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
const ready = new Int32Array(box_count);
|
|
475
|
+
let end = 0;
|
|
476
|
+
|
|
477
|
+
for (let box = 0; box < box_count; box++) {
|
|
478
|
+
if (root[box] === box && sink[box] === box && pending[box] === 0) {
|
|
479
|
+
shift[box] = 0;
|
|
480
|
+
ready[end++] = box;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
for (let cursor = 0; cursor < end; cursor++) {
|
|
485
|
+
const lower = ready[cursor];
|
|
486
|
+
|
|
487
|
+
for (let at = first_boundary[lower]; at !== -1; at = next_boundary[at]) {
|
|
488
|
+
const above = order[at - 1];
|
|
489
|
+
const below = order[at];
|
|
490
|
+
const upper = sink[root[above]];
|
|
491
|
+
|
|
492
|
+
// y[above] + shift[upper] + separation <= y[below] + shift[lower]
|
|
493
|
+
const limit = shift[lower] + y[below] - y[above] - separation(above, below);
|
|
494
|
+
|
|
495
|
+
shift[upper] = Math.min(shift[upper], limit);
|
|
496
|
+
|
|
497
|
+
if (--pending[upper] === 0) {
|
|
498
|
+
ready[end++] = upper;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
for (let box = 0; box < box_count; box++) {
|
|
504
|
+
y[box] += shift[sink[root[box]]];
|
|
462
505
|
}
|
|
463
506
|
|
|
464
507
|
return y;
|
|
@@ -471,7 +514,9 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
471
514
|
* top edge, the ones biased towards the bottom by their bottom edge — against whichever of them
|
|
472
515
|
* came out shortest. Only then can they be compared box by box, and each box takes the average of
|
|
473
516
|
* the middle two of its four candidates: an average of all four is pulled about by whichever single
|
|
474
|
-
* pass went furthest astray, and the middle two are the ones the passes agree on.
|
|
517
|
+
* pass went furthest astray, and the middle two are the ones the passes agree on.
|
|
518
|
+
* Each candidate must already satisfy every separation constraint. Taking the same order
|
|
519
|
+
* statistics for both ends of an inequality preserves it; balancing cannot repair an invalid pass.
|
|
475
520
|
*
|
|
476
521
|
* @param {LayoutBoxGraph} graph mutated: `box_y` is written
|
|
477
522
|
* @param {Float64Array[]} candidates
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional_clone.d.ts","sourceRoot":"","sources":["../../../../../src/core/model/object/optional_clone.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,6CAcC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @template {{equals(T):boolean}} T
|
|
3
|
+
* @param {undefined|null|T} a
|
|
4
|
+
* @param {undefined|null|T} b
|
|
5
|
+
* @return {boolean}
|
|
6
|
+
*/
|
|
7
|
+
export function optional_equality<T extends {
|
|
8
|
+
equals(T: any): boolean;
|
|
9
|
+
}>(a: T, b: T): boolean;
|
|
10
|
+
//# sourceMappingURL=optional_equality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional_equality.d.ts","sourceRoot":"","sources":["../../../../../src/core/model/object/optional_equality.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;oBALyB,OAAO;gBAGpB,OAAO,CAsBlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional_hash.d.ts","sourceRoot":"","sources":["../../../../../src/core/model/object/optional_hash.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH;YAJsB,MAAM;cAEhB,MAAM,CAYjB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { assert } from "
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @template {{hash():number}} T
|
|
5
|
-
* @param {T|undefined} thing
|
|
5
|
+
* @param {T|null|undefined} thing
|
|
6
6
|
* @return {number}
|
|
7
7
|
*/
|
|
8
8
|
export function optional_hash(thing) {
|
|
9
|
-
if (thing === undefined) {
|
|
9
|
+
if (thing === undefined || thing === null) {
|
|
10
10
|
return 0;
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../src/engine/asset/Asset.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../src/engine/asset/Asset.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IAcI;;;;;OAKG;IACH,4CAHW,MAAM,EAehB;IA/BD;;;;OAIG;IACH,cAFU,uBAAuB,CAEf;IAElB;;;OAGG;IACH,8BAAmB;IASf;;;OAGG;IACH,mBAAsB;IAEtB;;;OAGG;IACH,UAFU,MAAM,CAEQ;IAG5B;;;;OAIG;IACH,2BAFa,OAAO,CAgBnB;IAED,eAEC;IAED;;;OAGG;IACH,UAFa,CAAC,CAIb;CACJ"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { optional_hash } from "../../core/model/object/optional_hash.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* @template T
|
|
3
5
|
*
|
|
@@ -58,7 +60,7 @@ export class Asset {
|
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
hash() {
|
|
61
|
-
return this.description
|
|
63
|
+
return optional_hash(this.description);
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
/**
|
|
@@ -1,32 +1,17 @@
|
|
|
1
1
|
import { PNGReader } from "../../../../format/image/png/PNGReader.js";
|
|
2
2
|
|
|
3
|
-
async function decode_png(png_bytes) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const width = png.getWidth();
|
|
16
|
-
const height = png.getHeight();
|
|
17
|
-
|
|
18
|
-
// console.timeEnd('decode');
|
|
19
|
-
// console.profileEnd('decode');
|
|
20
|
-
|
|
21
|
-
resolve({
|
|
22
|
-
data: uint_channels.data.buffer,
|
|
23
|
-
width,
|
|
24
|
-
height,
|
|
25
|
-
itemSize: uint_channels.itemSize,
|
|
26
|
-
bitDepth: png.getBitDepth()
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
}
|
|
3
|
+
async function decode_png(png_bytes) {
|
|
4
|
+
const png = await new PNGReader(png_bytes).parse();
|
|
5
|
+
const uint_channels = png.getUint8Data();
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
data: uint_channels.data.buffer,
|
|
9
|
+
width: png.getWidth(),
|
|
10
|
+
height: png.getHeight(),
|
|
11
|
+
itemSize: uint_channels.itemSize,
|
|
12
|
+
bitDepth: png.getBitDepth()
|
|
13
|
+
};
|
|
14
|
+
}
|
|
30
15
|
|
|
31
16
|
/**
|
|
32
17
|
*
|
|
@@ -16,22 +16,23 @@ const array_loader = new ArrayBufferLoader();
|
|
|
16
16
|
// const path = 'data/textures/utility/vt/uv_map_reference/5-21-14.png';
|
|
17
17
|
const path = 'data/textures/utility/vt/uv_map_reference/6-39-33.png';
|
|
18
18
|
|
|
19
|
-
array_loader.load(new AssetRequestScope(), path, (asset) => {
|
|
19
|
+
array_loader.load(new AssetRequestScope(), path, (asset) => {
|
|
20
20
|
|
|
21
21
|
const array = asset.create();
|
|
22
22
|
|
|
23
23
|
const reader = new PNGReader(array);
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
reader.parse().then(png => {
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
console.log(png);
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
const uint8Data = png.getUint8Data();
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
const sampler = new Sampler2D(uint8Data.data, uint8Data.itemSize, png.getWidth(), png.getHeight());
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const canvas = sampler2D2Canvas(sampler, 1, 0);
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
document.body.appendChild(canvas);
|
|
36
|
+
}).catch(error => console.error('Failed to decode PNG', error));
|
|
36
37
|
|
|
37
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadsUpDisplaySystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js"],"names":[],"mappings":";AAsBA;;;;;GAKG;AACH;IASI;;;OAGG;IACH,4CAmBC;IA/BD,wCAAgC;IAGhC,2HAGE;IAaE,yBAA8B;IAM9B;;;;OAIG;IACH,+BAAiD;IAGrD,iCAGC;IAED,gCAIC;IAED;;;;;;;;;OASG;IACH,
|
|
1
|
+
{"version":3,"file":"HeadsUpDisplaySystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js"],"names":[],"mappings":";AAsBA;;;;;GAKG;AACH;IASI;;;OAGG;IACH,4CAmBC;IA/BD,wCAAgC;IAGhC,2HAGE;IAaE,yBAA8B;IAM9B;;;;OAIG;IACH,+BAAiD;IAGrD,iCAGC;IAED,gCAIC;IAED;;;;;;;;;OASG;IACH,sCAiJC;IAED,6BAsBC;CACJ;uBAvPsB,iBAAiB;2BAIb,qBAAqB;uBAFzB,kBAAkB;4CAJG,uDAAuD;6BAKtE,iCAAiC"}
|
|
@@ -95,9 +95,10 @@ class HeadsUpDisplaySystem extends System {
|
|
|
95
95
|
y *= transform.scale_y;
|
|
96
96
|
z *= transform.scale_z;
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
v3_quaternion_apply(
|
|
99
|
+
scratch_rotated_offset, 0, x, y, z,
|
|
100
|
+
transform.rotation_x, transform.rotation_y, transform.rotation_z, transform.rotation_w
|
|
101
|
+
);
|
|
101
102
|
|
|
102
103
|
x = scratch_rotated_offset[0];
|
|
103
104
|
y = scratch_rotated_offset[1];
|
|
@@ -105,11 +106,9 @@ class HeadsUpDisplaySystem extends System {
|
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
// add transform position to get final world position
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
y += position[1];
|
|
112
|
-
z += position[2];
|
|
109
|
+
x += transform.translation_x;
|
|
110
|
+
y += transform.translation_y;
|
|
111
|
+
z += transform.translation_z;
|
|
113
112
|
|
|
114
113
|
const worldPositionX = x;
|
|
115
114
|
const worldPositionY = y;
|
|
@@ -187,8 +186,8 @@ class HeadsUpDisplaySystem extends System {
|
|
|
187
186
|
ndcY = 0.5 + dy;
|
|
188
187
|
}
|
|
189
188
|
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
// Notify ViewportPositionSystem so it updates the label's placement and visibility.
|
|
190
|
+
vp.position.set(ndcX, ndcY);
|
|
192
191
|
|
|
193
192
|
const visible = (!trackedPositionOutOfBounds || vp.stickToScreenEdge) && this.__visibility_predicate.test(worldPositionX, worldPositionY, worldPositionZ);
|
|
194
193
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"AAsLA;;;;;;;;GAQG;AACH,iGA4GC"}
|
|
@@ -45,6 +45,9 @@ import {
|
|
|
45
45
|
} from "../../graphics3/VolumetricLightMapSerializationAdapter.js";
|
|
46
46
|
import { Transform } from "../transform/Transform.js";
|
|
47
47
|
import { Transform64SerializationAdapter } from "../transform/Transform64SerializationAdapter.js";
|
|
48
|
+
import {
|
|
49
|
+
ParticleEffectSerializationAdapter
|
|
50
|
+
} from "../../graphics/ecs/particles/ParticleEffectSerializationAdapter.js";
|
|
48
51
|
import { TransformSerializationAdapter } from "../transform/TransformSerializationAdapter.js";
|
|
49
52
|
import { TransformSerializationUpgrader_0_1 } from "../transform/TransformSerializationUpgrader_0_1.js";
|
|
50
53
|
import {
|
|
@@ -206,6 +209,7 @@ export function populateEngineSerializationRegistry(registry) {
|
|
|
206
209
|
new PathSerializationAdapter(),
|
|
207
210
|
new TagSerializationAdapter(),
|
|
208
211
|
new ParticleEmitterSerializationAdapter(),
|
|
212
|
+
new ParticleEffectSerializationAdapter(),
|
|
209
213
|
new SoundEmitterSerializationAdapter(),
|
|
210
214
|
new SoundControllerSerializationAdapter(),
|
|
211
215
|
new SoundListenerSerializationAdapter(),
|