Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
305 commits
Select commit Hold shift + click to select a range
a2e19e9
feat(hash): implement cyrb53 algorithm
hun756 Jun 8, 2026
37fb370
feat(hash): add crc32 and crc32c algorithms
hun756 Jun 8, 2026
9628690
refactor(hash): define core type system and interfaces
hun756 Jun 8, 2026
85ac5be
feat(hash): implement algorithm factory and registry
hun756 Jun 8, 2026
8b0afc5
feat(hash): add domain separation support
hun756 Jun 8, 2026
fc8aac8
feat(hash): add structured data hashing capabilities
hun756 Jun 8, 2026
880d91f
feat(hash): add hex and base64 serialization utilities
hun756 Jun 8, 2026
e064784
refactor(hash): export algorithm implementations
hun756 Jun 8, 2026
c698c3e
feat(hash): add hash combination utilities
hun756 Jun 8, 2026
f3afb79
feat(hash): add fluent HashBuilder API
hun756 Jun 8, 2026
cd52b49
refactor(hash): expose package entry points
hun756 Jun 8, 2026
e30e6d9
build(memory): add @axrone/hash dependency
hun756 Jun 8, 2026
d80ec24
refactor(numeric): replace custom hashing with @axrone/hash
hun756 Jun 8, 2026
1075efb
fix(asset-core): use @axrone/hash for string fingerprinting
hun756 Jun 8, 2026
1b584f9
refactor(shapes-2d): integrate @axrone/hash for string hashing
hun756 Jun 8, 2026
eb02294
build(render-core): add @axrone/hash dependency
hun756 Jun 8, 2026
55c5794
refactor(utility): migrate hashing logic to @axrone/hash
hun756 Jun 8, 2026
ccca1af
refactor(render-webgl2): adopt @axrone/hash for shader and texture ut…
hun756 Jun 8, 2026
b458841
refactor(memory, physics): replace manual hashing with FNV-1a
hun756 Jun 8, 2026
a45ac4b
test(hash): add vitest configuration
hun756 Jun 8, 2026
494e58a
test(hash): implement algorithm output capture test
hun756 Jun 8, 2026
d46f704
chore(hash): remove algorithm output capture test
hun756 Jun 8, 2026
98b8897
test(hash): add unit tests for branded types and type guards
hun756 Jun 8, 2026
a928102
test(hash/bits): add unit tests for bitwise and floating-point utilities
hun756 Jun 8, 2026
5066dfc
test(hash): add unit tests for mixer functions
hun756 Jun 8, 2026
d963bd1
test(types): expand coverage for asHash32 edge cases
hun756 Jun 8, 2026
a3b7685
test(hash): fix asHash32 assertion style
hun756 Jun 8, 2026
aeb7562
refactor(hash): consolidate asHash32 truncation tests
hun756 Jun 8, 2026
fe57829
test(hash): improve precision and correctness of bitwise/mixer tests
hun756 Jun 8, 2026
f2c182e
test(types): add edge case coverage for asHash32 truncation
hun756 Jun 8, 2026
fc9b5d4
test(hash): add error hierarchy and subclass validation
hun756 Jun 8, 2026
603ce11
test(types): update asHash32 edge case for 32-bit boundary
hun756 Jun 8, 2026
ec085ac
test(hash): add unit tests for FNV-1a algorithms
hun756 Jun 8, 2026
63ad498
refactor(hash): remove unnecessary final mixing in FNV implementations
hun756 Jun 8, 2026
a499d18
test(hash): add unit tests for djb2 and sdbm algorithms
hun756 Jun 8, 2026
1f7b074
test(crc32): implement unit tests for CRC32 and CRC32C
hun756 Jun 8, 2026
9458b30
test(hash): add unit tests for Murmur3 algorithms
hun756 Jun 8, 2026
756f6b1
fix(hash): correct djb2 test assertions and behavior expectations
hun756 Jun 8, 2026
0c940c1
test(murmur3): update expected digest values for 32-bit algorithm
hun756 Jun 8, 2026
1b6b62c
test(hash): add unit tests for xxHash algorithms
hun756 Jun 8, 2026
bdce867
test(cyrb53): add unit tests for cyrb53 algorithm
hun756 Jun 8, 2026
3d06780
test(siphash): implement unit tests for SipHash-2-4
hun756 Jun 8, 2026
b8e801b
test(sha): add unit tests for SHA-1, SHA-256, SHA-384, and SHA-512.
hun756 Jun 8, 2026
cabc9bb
refactor: simplify SHA and Murmur3 test implementations
hun756 Jun 8, 2026
26a10da
test(hash): add unit tests for HashBuilder
hun756 Jun 8, 2026
5eb1221
test(combine): add unit tests for hash combination utilities
hun756 Jun 8, 2026
345e0c8
test(hash): implement unit tests for domain separation utilities
hun756 Jun 8, 2026
65d7d2e
test(hash): implement tests for hash factory module
hun756 Jun 8, 2026
f5806ce
test(hash): add integration tests for hashing algorithms and structHash
hun756 Jun 8, 2026
688b37f
test(hash): add unit tests for struct hashing and field utilities
hun756 Jun 8, 2026
0f28809
test(serialization): add unit tests for hash and byte encoding
hun756 Jun 8, 2026
a41f79e
test(hash): add statistical property tests for algorithms
hun756 Jun 8, 2026
a80aae4
refactor(hash): simplify xxhash buffer consumption logic
hun756 Jun 9, 2026
73c99de
test(hash): update struct hashing tests to use new API
hun756 Jun 9, 2026
90c84ff
refactor(hash): migrate builder tests to factory-based API
hun756 Jun 9, 2026
0671379
test(hash): update combine tests to use hash32 types
hun756 Jun 9, 2026
9ebcfa6
test(hash): migrate domain tests to factory-based API
hun756 Jun 9, 2026
b911354
test(hash): update factory tests for algorithm naming and API changes
hun756 Jun 9, 2026
c7ee1e8
refactor(hash): fix integration test import paths
hun756 Jun 9, 2026
e4c3104
test(hash): update property tests for distribution and collisions
hun756 Jun 9, 2026
ffdd309
test(serialization): update import paths and endianness assertions
hun756 Jun 9, 2026
e90d7c9
refactor(shader): modularize shader instance management and caching
hun756 Jun 9, 2026
e9a9422
feat(shapes-2d): implement polygon shape support
hun756 Jun 9, 2026
b0200d5
refactor(utility): move and expand Result monad
hun756 Jun 23, 2026
d74ed7f
style(utility): reformat Result monad implementation
hun756 Jun 23, 2026
d822387
refactor(utility): restructure utility package with new clone and com…
hun756 Jun 24, 2026
6c53607
refactor(utulity): remove legacy comparer exports
hun756 Jun 24, 2026
43fa0d0
feat(shader): implement source optimization and program caching
hun756 Jun 24, 2026
7eecef1
feat(scene-runtime): optimize shader compilation and add benchmarking…
hun756 Jun 24, 2026
7df2715
feat(profiler): initialize profiler package with project config, type…
hun756 Jun 29, 2026
dc49472
feat(profiler): implement core profiling modules - sampler, metrics, …
hun756 Jun 29, 2026
8004d37
feat(profiler): add profile orchestration layer, public API surface, …
hun756 Jun 29, 2026
95515ba
feat(profiler): introduce clock type system with branded nanosecond t…
hun756 Jun 29, 2026
56c235d
feat(profiler): implement monotonic, wall, and virtual clocks with fu…
hun756 Jun 29, 2026
4f46d0b
feat(profiler): add stopwatch with lap timing and clock barrel exports
hun756 Jun 29, 2026
7f01b64
feat(profiler): wire clock module into public API surface and package…
hun756 Jun 29, 2026
01b6806
fix(profiler): implement StackCaptureEngine cache and multi-runtime s…
hun756 Jun 29, 2026
51e7990
feat(profiler): implement real timer instrumentation with MonotonicCl…
hun756 Jun 29, 2026
36f06a1
refactor(profiler): replace Profiler inheritance with composition; ad…
hun756 Jun 29, 2026
6246019
chore(profiler): remove unused @axrone/utility imports from clock mod…
hun756 Jun 29, 2026
4162cb5
fix critical bugs: HistogramBucket type collision, V8 stack parser, a…
hun756 Jun 29, 2026
c72a757
add build infrastructure: rollup config with deep import entry points…
hun756 Jun 29, 2026
189ec90
clean dead code: remove unused fields, methods, and exports across pr…
hun756 Jun 29, 2026
abd76b5
fix profile: remove dead code, fix imports, remove always-zero getPro…
hun756 Jun 29, 2026
e78f3df
fix: error cause preservation, version consistency, clock API uniform…
hun756 Jun 29, 2026
d02b854
add vitest test infrastructure and initial test suite for critical paths
hun756 Jun 29, 2026
db3e510
feat(profiler): refactor stack capture tests
hun756 Jun 29, 2026
00e0beb
test(profiler): add unit tests for PROFILER_CAPABILITY_PACKAGES
hun756 Jun 29, 2026
4a0bdb4
feat(profiler): add test suite with ProfileTimerTree and Profiler cov…
hun756 Jun 29, 2026
d628d7d
feat(profiler): add tests for LogBoundedHistogram
hun756 Jun 29, 2026
bcb502c
fix: improve LogBoundedHistogram precision and fix edge case handling…
hun756 Jun 29, 2026
e5e6a9d
feat(profiler): add test suite for TimelineRecorder component
hun756 Jun 29, 2026
7cdb8df
feat(profiler): track disposed state before stopping timeline recorder
hun756 Jun 29, 2026
bb6317d
feat(profiler): add unit tests for FlameGraphNode and FlameGraphBuilder
hun756 Jun 29, 2026
06f582b
test:(profiler) add tests for MemoryTracker class in profiler package
hun756 Jun 29, 2026
fb5904d
test(profiler): add comprehensive tests for ContinuousSampler
hun756 Jun 29, 2026
215afe7
test(profiler): add stopwatch unit test suite
hun756 Jun 29, 2026
e56a0f5
test(profiler): add tests for VirtualClock class
hun756 Jun 29, 2026
5758479
test(profiler): add unit tests for WallClock implementation
hun756 Jun 29, 2026
2c6fb37
feat(profiler): add tests suite for PerfettoSerializer
hun756 Jun 29, 2026
5437278
feat: add eslint flat config and vitest per-package config
hun756 Jun 29, 2026
2ba8c4f
fix: remove unused imports and fix ESLint violations
hun756 Jun 29, 2026
99a7b5b
style: apply prettier formatting across all files
hun756 Jun 29, 2026
56c4c04
feat(asset-shader): add TypeScript authoring layer for shader effects
hun756 Jul 8, 2026
a53d728
feat(asset-shader): add ES module importer for shader effects
hun756 Jul 8, 2026
21b8070
feat(asset-shader): add nebula veil volumetric shader effect example
hun756 Jul 8, 2026
c2c00cd
feat(tests): add comprehensive tests for shader effect authoring and …
hun756 Jul 8, 2026
5fffb87
feat(asset-shader): add additional exports for shader effect authoring
hun756 Jul 8, 2026
1f710d9
feat(asset-shader): implement shader reflection API for effect intros…
hun756 Jul 8, 2026
d0b3a69
feat(asset-shader): implement global shader library and chunk registry
hun756 Jul 8, 2026
73ba155
feat(asset-shader): add shader keyword, technique, and pass declarati…
hun756 Jul 8, 2026
03c4372
feat(asset-shader): implement shader effect composition and merging u…
hun756 Jul 8, 2026
fffd4dd
feat(asset-shader): add structured diagnostics for shader toolkit
hun756 Jul 8, 2026
16ac162
feat(asset-shader): implement GLSL ES preprocessor for shader variant…
hun756 Jul 8, 2026
2330c4c
feat(asset-shader): enhance preprocessGLSL with support for 'ifdef' a…
hun756 Jul 8, 2026
b1932de
feat(asset-shader): implement shader variant system with keyword sele…
hun756 Jul 8, 2026
2804fea
fix(asset-shader): add optional scope property to ShaderEffectPropert…
hun756 Jul 8, 2026
f7b1ed2
refactor(preprocessor): remove 'ifdef' and 'ifndef' handling from pre…
hun756 Jul 8, 2026
a288c77
feat(asset-shader): expand exports to include shader library and vari…
hun756 Jul 8, 2026
eb08430
feat(asset-shader): refactor nebula effect to use reusable noise libr…
hun756 Jul 8, 2026
89718af
test(asset-shader): add unit tests for extendShaderEffect functionality
hun756 Jul 8, 2026
515c7e1
test(asset-shader): add unit tests for shader library functionality
hun756 Jul 8, 2026
40b6e0e
test(preprocessor): add comprehensive tests for shader preprocessor f…
hun756 Jul 8, 2026
3973104
test(reflectShaderEffect): add unit tests for reflection shader effec…
hun756 Jul 8, 2026
a9a53f7
test(shader-effect): enhance tests for nebula effect variants and imp…
hun756 Jul 8, 2026
f9e2fdd
test(shader-variant): add comprehensive tests for shader variant enum…
hun756 Jul 8, 2026
c8d6d35
fix(physics/raycast): repair raycast dispatch, remove shared mutable …
hun756 Jul 14, 2026
210ad1f
fix(physics/raycast): invoke batched raycast callbacks on flush
hun756 Jul 14, 2026
e8ebb5c
perf(physics/raycast): use integer cell hashing and Set-based queries
hun756 Jul 14, 2026
d023508
fix(physics/raycast): correct conservative-advancement TOI sweep
hun756 Jul 14, 2026
91c62e4
fix(physics/raycast): improve sphere cast accuracy with offset ray ring
hun756 Jul 14, 2026
f68f398
fix(physics-2d): implement capsule-polygon and box-capsule collisions
hun756 Jul 14, 2026
f067c0d
fix(physics-2d): drop redundant AABB recompute in broadphase leaf rem…
hun756 Jul 14, 2026
814ef46
test(physics/raycast): add unit tests for primitive intersectors
hun756 Jul 14, 2026
0f49737
test(physics/raycast): add raycast engine dispatch regression tests
hun756 Jul 14, 2026
0af6e15
test(physics/raycast): add raycast system cache and batching tests
hun756 Jul 14, 2026
594def6
test(physics/raycast): add spatial hash grid query tests
hun756 Jul 14, 2026
52ec1f8
test(physics/raycast): add continuous sweep and shape-cast tests
hun756 Jul 14, 2026
a29fc9c
test(physics-2d): add narrowphase collision-pair and rotation tests
hun756 Jul 14, 2026
92ac236
test(physics-2d): add broadphase move-integrity regression tests
hun756 Jul 14, 2026
f1a2fd6
feat(physics-2d): add methods to retrieve constraint data for distanc…
hun756 Jul 15, 2026
d91bd7a
feat(physics-2d): enhance constraint solver with additional parameter…
hun756 Jul 15, 2026
c3bc311
feat(physics-2d): add method to retrieve body IDs from contact metadata
hun756 Jul 15, 2026
331c94f
feat(physics-2d): refactor island solver to use Vec2 for constraint p…
hun756 Jul 15, 2026
f8dd8bd
feat(physics-2d): add distance calculation method for GJK2D with clos…
hun756 Jul 15, 2026
2f301fe
feat(physics-2d): integrate GJK2D for distance calculation and update…
hun756 Jul 15, 2026
17b07ee
fix(continuous-collision): correct time of impact calculation by usin…
hun756 Jul 15, 2026
383f6e2
refactor(island-solver): update VelocityConstraintPoint to use IVec2Like
hun756 Jul 15, 2026
e5a3577
chore(gitignore): add TypeScript compiled output and declaration file…
hun756 Jul 15, 2026
b1f2e68
refactor(narrowphase): replace manual manifold pool with ObjectPool f…
hun756 Jul 15, 2026
a60e1a8
refactor(constraint-solver): replace custom vector functions with Vec…
hun756 Jul 15, 2026
c299db5
refactor(continuous-collision): utilize Vec2 methods for vector opera…
hun756 Jul 15, 2026
e25118a
fix(continuous-collision): simplify direction calculation in separati…
hun756 Jul 15, 2026
830e4e7
feat(body-manager): add setSleepTime method to update sleep time for …
hun756 Jul 15, 2026
37a84d5
feat(island-solver): implement gravity integration and sleep system f…
hun756 Jul 15, 2026
e44afc6
refactor(contact-manager): enhance collision event handling and manif…
hun756 Jul 15, 2026
ecef2c3
feat(island-solver): add gravity parameter to solve method for enhanc…
hun756 Jul 15, 2026
a894f68
feat(physics-world): implement broadphase and narrowphase collision d…
hun756 Jul 15, 2026
6632eec
feat(broadphase-3d): implement DynamicAABBTree3D for efficient spatia…
hun756 Jul 15, 2026
ee22686
perf(physics-3d): integrate dynamic AABB tree broadphase for contacts
hun756 Jul 15, 2026
02e9624
feat(constraint-solver): enhance impulse calculation and position cor…
hun756 Jul 15, 2026
f057c7f
feat(continuous-collision): enhance time of impact calculation with a…
hun756 Jul 15, 2026
349b1d2
fix(island-solver): enforce maximum linear correction in position con…
hun756 Jul 15, 2026
cee6894
fix(constraint-solver): improve constraint handling and position corr…
hun756 Jul 15, 2026
502c0d3
fix(continuous-collision): optimize maximum radius calculation for an…
hun756 Jul 15, 2026
3bb53b4
fix(island-solver): remove unnecessary inverse mass calculation
hun756 Jul 15, 2026
c149347
fix(narrowphase): improve box-capsule collision detection and handling
hun756 Jul 15, 2026
6eba9cf
fix(narrowphase): refactor collision functions to improve normal calc…
hun756 Jul 15, 2026
7c50d89
fix(sat): optimize normal calculation in findMinSeparation
hun756 Jul 15, 2026
5641a9d
fix(narrowphase): enhance circle-circle collision handling and improv…
hun756 Jul 15, 2026
bf2d765
fix(physics-world): track previous shape centers for accurate broadph…
hun756 Jul 15, 2026
a8f515e
feat(gjk3d): implement GJK collision detection and EPA resolution for…
hun756 Jul 16, 2026
b19dd5b
feat(body-manager): add getInverseInertia method to retrieve inverse …
hun756 Jul 16, 2026
64f3346
test(gjk3d): add unit tests for GJK3D collision detection with sphere…
hun756 Jul 16, 2026
1397f57
feat(physics-world): enhance collision detection with support for con…
hun756 Jul 16, 2026
98b4f8e
fix(physics-world): update islandCount in profiler data to reflect cu…
hun756 Jul 16, 2026
ccb5eab
fix(gjk3d): improve robustness of GJK algorithm by perturbing directi…
hun756 Jul 16, 2026
99b63bf
feat(broadphase-3d): implement spatial hashing and octree broadphase …
hun756 Jul 16, 2026
07ba77e
feat(physics): add broadphase 3D exports for spatial hashing and octr…
hun756 Jul 16, 2026
63f863d
fix(octree-broadphase): optimize update and remove methods by elimina…
hun756 Jul 16, 2026
f80f5f5
feat(octree): implement remove method to delete items from the octree…
hun756 Jul 16, 2026
11c3304
fix(physics): improve shape movement handling and reset tangent impul…
hun756 Jul 16, 2026
e5aa8aa
fix(physics): ensure proper cleanup of shape proxies and previous cen…
hun756 Jul 16, 2026
9274055
fix(narrowphase): optimize contact point calculation for polygon coll…
hun756 Jul 16, 2026
fae6f90
fix(gjk3d): rename variable for clarity and optimize face index handl…
hun756 Jul 16, 2026
3d6b6bf
fix(physics): restore BodyFlags import for proper type usage in physi…
hun756 Jul 16, 2026
2529906
fix(body-manager): replace bitwise flags with BodyFlags constants for…
hun756 Jul 16, 2026
4357c3c
refactor(broadphase): enhance TreeNode interface and improve type saf…
hun756 Jul 16, 2026
f1b67fe
fix(constraint-manager): ensure numeric conversion for maxMotorTorque…
hun756 Jul 16, 2026
4db846b
refactor(contact-manager): improve contact data structure and enhance…
hun756 Jul 16, 2026
9ecfd61
refactor(narrowphase): enhance type safety and readability by refinin…
hun756 Jul 16, 2026
43a4084
refactor(physics-world-2d): add CollisionFilter import to enhance sha…
hun756 Jul 16, 2026
8daa8ef
refactor(physics-world-2d): improve type safety and readability in co…
hun756 Jul 16, 2026
4b852a6
refactor(physics-managers-3d): enhance readability and type safety by…
hun756 Jul 16, 2026
fb06bd0
refactor(collision-algorithms): enhance type safety and readability b…
hun756 Jul 16, 2026
3aaaacb
refactor(narrowphase): improve type safety and readability by replaci…
hun756 Jul 16, 2026
8a9226d
refactor(shape-manager): enhance type safety by specifying filter typ…
hun756 Jul 16, 2026
b135cdd
refactor(physics-world-2d): enhance type safety and readability by in…
hun756 Jul 16, 2026
bc77fef
refactor(body-manager): enhance type safety and readability by implem…
hun756 Jul 16, 2026
ed1e1c9
refactor(broadphase-3d): enhance type safety by parameterizing TreeNo…
hun756 Jul 16, 2026
31a0c7a
refactor(physics-world-3d): enhance type safety by introducing shape …
hun756 Jul 16, 2026
eb78c8e
refactor(physics-world-3d): enhance type safety by validating shape d…
hun756 Jul 16, 2026
0c49347
Implement code changes to enhance functionality and improve performance
hun756 Jul 16, 2026
abc4e3c
refactor(constraint-manager): replace custom error handling with Phys…
hun756 Jul 16, 2026
15e430b
refactor(contact-manager): replace custom error handling with Physics…
hun756 Jul 16, 2026
ec38342
refactor(foundation): streamline ErrorCode type and simplify IVec2Out…
hun756 Jul 16, 2026
109c2a2
feat(area-light): add AreaLight component with configurable propertie…
hun756 Jul 20, 2026
ba91ab5
feat(line-renderer): add LineRenderer component for procedural line d…
hun756 Jul 20, 2026
c88d268
feat(billboard-renderer): add BillboardRenderer component for renderi…
hun756 Jul 20, 2026
c20e3ae
feat(raycast3d): add RayCast3D component for physics raycasting with …
hun756 Jul 20, 2026
d9e1038
feat(lod-group): add LODGroup component for level-of-detail managemen…
hun756 Jul 20, 2026
591811b
feat(navmesh-agent): add NavMeshAgent component for AI-driven navigat…
hun756 Jul 20, 2026
d7fab58
feat(reflection-probe): add ReflectionProbe component for environment…
hun756 Jul 20, 2026
ef4bde1
feat(trail-renderer): add TrailRenderer component for creating dynami…
hun756 Jul 20, 2026
18c4e9a
fix(physics-managers): correct import alias for BodyTypeEnum and expo…
hun756 Jul 20, 2026
c8da808
feat(scene-3d-support): add new exports for AreaLight, TrailRenderer,…
hun756 Jul 20, 2026
5b64fc1
feat(audio-components): add script metadata for AudioListener and Aud…
hun756 Jul 20, 2026
9adb44b
fix(script-decorator): add warning for duplicate scriptName declarati…
hun756 Jul 20, 2026
434a3d3
refactor(audio-components): separate AudioListener and AudioSource co…
hun756 Jul 20, 2026
ae3d512
refactor(physics-3d): separate FixedJoint3D, HingeJoint3D, SliderJoin…
hun756 Jul 20, 2026
d1dcad9
refactor(physics-3d): reorganize joint components into index export
hun756 Jul 20, 2026
b3a0994
refactor(2d-physics-component): separate components from single file
hun756 Jul 20, 2026
5c4df10
feat(scene-runtime): add particle system component
hun756 Jul 21, 2026
4ed7933
feat(scene-3d-support): add particle system types and component export
hun756 Jul 21, 2026
74bfa16
refactor(line-renderer): enhance color gradient mapping with toVec4 c…
hun756 Jul 21, 2026
41e4000
refactor(navmesh-agent): replace Vec3 length methods with len and mul…
hun756 Jul 21, 2026
dc7a5d3
refactor(trail-renderer): improve color gradient mapping using toVec4…
hun756 Jul 21, 2026
69ca9a1
feat(scene-follow-cube): integrate PlayerController and CameraFollow …
hun756 Jul 21, 2026
61ab1da
refactor(tests): restructure component tests and import components
hun756 Jul 21, 2026
1a014af
refactor(property): add 'component' type to PropertyTypeId and update…
hun756 Jul 21, 2026
a0c62fb
feat(particle-shader): implement particle point-sprite shader with cu…
hun756 Jul 21, 2026
11fccc6
feat(particle-batch): implement SceneParticleBatchRuntime for GPU poi…
hun756 Jul 21, 2026
a658401
feat(scene-render-pipeline): add support for particle batch rendering…
hun756 Jul 21, 2026
e189a7f
feat(scene-render-runtime): integrate SceneParticleBatchRuntime into …
hun756 Jul 21, 2026
318d459
feat(scene-3d-support): add particle shader and batch runtime exports
hun756 Jul 21, 2026
5b25d7a
feat(animator): add Animator component and related types to scene run…
hun756 Jul 21, 2026
f11f3ae
feat(scene-prefab): add HydrationMarker and ComponentRefFollower comp…
hun756 Jul 21, 2026
7d0bb33
feat(husky): add pre-commit hook with lint-staged configuration
hun756 Jul 21, 2026
ff99e3c
feat(scene-prefab-runtime): refactor component hydration and instanti…
hun756 Jul 21, 2026
86504de
feat(engine-hardening): switch from npm to yarn for dependency manage…
hun756 Jul 21, 2026
ceade11
feat(engine-hardening): add check-integration job for engine and Edit…
hun756 Jul 22, 2026
76c628f
feat(render-frame-classifier): transform local bounds to world space …
hun756 Jul 22, 2026
94c5367
feat(particle-batch-runtime): add debug logging for particle systems …
hun756 Jul 22, 2026
51f93d2
fix(orbit-camera-controller): update ORBIT_PARALLEL_DOT_THRESHOLD com…
hun756 Jul 22, 2026
12ac0e3
feat(scene-render-runtime): integrate render state applier into parti…
hun756 Jul 22, 2026
fe3d82b
refactor: extract @script components into separate fixture files
hun756 Jul 22, 2026
1ece180
refactor(animator): remove redundant logging statements for cleaner code
hun756 Jul 23, 2026
a76f969
feat(scene-prefab-variant): implement prefab variant creation and unp…
hun756 Jul 23, 2026
01c78e9
refactor(prefab): reorganize exports to include scene-prefab-variant …
hun756 Jul 23, 2026
9fd810b
test(scene-prefab-variant): add comprehensive tests for scene prefab …
hun756 Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test(hash): update combine tests to use hash32 types
  • Loading branch information
hun756 committed Jun 9, 2026
commit 0671379ff2a0eff7f3caebbcd564f059172c839c
81 changes: 47 additions & 34 deletions web/packages/hash/src/__tests__/combine.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,78 +5,91 @@ import {
hashCombineStrings,
hashCombineBooleans,
hashCombineNumbers,
} from '../../hash/combine';
} from '../hash/combine';
import { asHash32 } from '../hash/types';

describe('hashCombine', () => {
it('produces 32-bit unsigned output', () => {
const v = hashCombine([1, 2, 3]);
it('combines two values', () => {
const a = asHash32(1);
const b = asHash32(2);
const v = hashCombine(a, b) as unknown as number;
expect(v).toBeGreaterThanOrEqual(0);
expect(v).toBeLessThan(0x100000000);
});

it('order matters', () => {
const a = hashCombine([1, 2, 3]);
const b = hashCombine([3, 2, 1]);
expect(a).not.toBe(b);
});

it('different values produce different output', () => {
const a = hashCombine([1, 2, 3]);
const b = hashCombine([1, 2, 4]);
expect(a).not.toBe(b);
it('combines two hash32 (small values)', () => {
const v = hashCombine(asHash32(0x100), asHash32(0x200)) as unknown as number;
expect(typeof v).toBe('number');
});

it('empty input returns deterministic value', () => {
const v = hashCombine([]);
expect(v).toBeDefined();
it('different inputs give different output', () => {
const v1 = hashCombine(asHash32(1), asHash32(2)) as unknown as number;
const v2 = hashCombine(asHash32(1), asHash32(3)) as unknown as number;
expect(v1).not.toBe(v2);
});
});

describe('hashCombineOrdered', () => {
it('different from unordered for permutations', () => {
const a = hashCombineOrdered([1, 2, 3]);
const b = hashCombineOrdered([1, 2, 3]);
expect(a).toBe(b);
it('combines values in order', () => {
const v1 = hashCombineOrdered([asHash32(1), asHash32(2), asHash32(3)]) as unknown as number;
const v2 = hashCombineOrdered([asHash32(1), asHash32(2), asHash32(3)]) as unknown as number;
expect(v1).toBe(v2);
});

it('order independence vs hashCombine', () => {
const ordered = hashCombineOrdered([1, 2, 3]);
const combined = hashCombine([1, 2, 3]);
expect(ordered).not.toBe(combined);
it('order matters', () => {
const v1 = hashCombineOrdered([asHash32(1), asHash32(2), asHash32(3)]) as unknown as number;
const v2 = hashCombineOrdered([asHash32(3), asHash32(2), asHash32(1)]) as unknown as number;
expect(v1).not.toBe(v2);
});

it('handles 64-bit values', () => {
const v = hashCombineOrdered([1n, 2n, 3n]) as unknown as number;
expect(typeof v).toBe('number');
});

it('empty input returns fmix32(0x811c9dc5)', () => {
const v = hashCombineOrdered([]) as unknown as number;
expect(v).toBeGreaterThanOrEqual(0);
});
});

describe('hashCombineStrings', () => {
it('matches inline string concat via FNV', () => {
const v = hashCombineStrings(['hello', 'world']);
it('combines strings', () => {
const v = hashCombineStrings(0, 'hello', 'world') as unknown as number;
expect(v).toBeGreaterThanOrEqual(0);
});

it('order matters', () => {
const a = hashCombineStrings(['a', 'b']);
const b = hashCombineStrings(['b', 'a']);
const a = hashCombineStrings(0, 'a', 'b') as unknown as number;
const b = hashCombineStrings(0, 'b', 'a') as unknown as number;
expect(a).not.toBe(b);
});

it('different seeds produce different output', () => {
const a = hashCombineStrings(0, 'hello') as unknown as number;
const b = hashCombineStrings(12345, 'hello') as unknown as number;
expect(a).not.toBe(b);
});
});

describe('hashCombineBooleans', () => {
it('combines boolean values', () => {
const a = hashCombineBooleans([true, false, true]);
const b = hashCombineBooleans([true, false, false]);
const a = hashCombineBooleans(0, true, false, true) as unknown as number;
const b = hashCombineBooleans(0, true, false, false) as unknown as number;
expect(a).not.toBe(b);
});
});

describe('hashCombineNumbers', () => {
it('combines numeric values', () => {
const a = hashCombineNumbers([1.5, 2.5, 3.5]);
const b = hashCombineNumbers([1.5, 2.5, 3.5]);
const a = hashCombineNumbers(0, 1.5, 2.5, 3.5) as unknown as number;
const b = hashCombineNumbers(0, 1.5, 2.5, 3.5) as unknown as number;
expect(a).toBe(b);
});

it('different values give different output', () => {
const a = hashCombineNumbers([1.5, 2.5]);
const b = hashCombineNumbers([1.5, 2.6]);
const a = hashCombineNumbers(0, 1.5, 2.5) as unknown as number;
const b = hashCombineNumbers(0, 1.5, 2.6) as unknown as number;
expect(a).not.toBe(b);
});
});