@woosh/meep-engine 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/editor/particles/rebuildParticleEmitter.js +8 -26
  2. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  3. package/editor/tools/SelectionTool.js +1 -2
  4. package/editor/tools/TransformToolV2.js +2 -3
  5. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
  6. package/editor/tools/v2/TransformControls.js +1 -1
  7. package/package.json +95 -96
  8. package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
  9. package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
  10. package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
  11. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
  12. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
  13. package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
  14. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
  15. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
  16. package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
  17. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
  18. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
  19. package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
  20. package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
  21. package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
  22. package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
  23. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  24. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
  25. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
  26. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  27. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
  28. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
  29. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
  30. package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
  31. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  32. package/src/engine/graphics/ecs/camera/Camera.js +165 -303
  33. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
  34. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
  35. package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
  36. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
  37. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
  38. package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
  39. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
  40. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
  41. package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
  42. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
  43. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
  44. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  45. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
  46. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
  47. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
  48. package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
  49. package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
  50. package/src/engine/graphics/geometry/AttributeData.js +84 -0
  51. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
  52. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
  53. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
  54. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
  55. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  56. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
  57. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
  58. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
  59. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
  60. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
  61. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
  62. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
  63. package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
  64. package/src/engine/graphics3/CameraSystem3.js +10 -1
  65. package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
  66. package/src/engine/graphics3/GraphicsEngine3.js +3 -3
  67. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
  68. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
  69. package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
  70. package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
  71. package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
  72. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  73. package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
  74. package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
  75. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  76. package/src/shade/renderer/camera/Camera.d.ts +3 -5
  77. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  78. package/src/shade/renderer/camera/Camera.js +281 -280
  79. package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
  80. package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
  81. package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
  82. package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
  83. package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
  84. package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
  85. package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
  86. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  87. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
  88. package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
  89. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  90. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
  91. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
  92. package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
  93. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
  94. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
  95. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
  96. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
  97. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
  98. package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
  99. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
  100. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
  101. package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
  102. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
  103. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
  104. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
  105. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
  106. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
  107. package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
  108. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
  109. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
  110. package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
  111. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
  112. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
  113. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
  114. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
  115. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
  116. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
  117. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
  118. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
  119. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
  120. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
  121. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
  122. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +0 -40
@@ -86,7 +86,7 @@ const _tempTransform = new Transform();
86
86
  *
87
87
  * The three version answered the first two questions by building meshes and raycasting them: an
88
88
  * invisible cone per arm, an invisible 100000-unit `PlaneGeometry` per drag. That is why it needed
89
- * `Camera.object`, which is three's camera and is `null` under Shade. It needs no camera object now:
89
+ * a three camera object on the component. It needs none now:
90
90
  * the ray through the middle of the viewport starts at the eye and points where the camera looks,
91
91
  * and the ray through the top edge gives the field of view the gizmo is sized against.
92
92
  *
package/package.json CHANGED
@@ -1,96 +1,95 @@
1
- {
2
- "name": "@woosh/meep-engine",
3
- "license": "SEE LICENSE IN LICENSE",
4
- "productName": "Meep",
5
- "homepage": "https://meep.company-named.com/",
6
- "description": "Pure JavaScript game engine. Fully featured and production ready.",
7
- "type": "module",
8
- "author": "Alexander Goldring",
9
- "version": "3.0.0",
10
- "exports": {
11
- "./build/*": "./build/*",
12
- "./src/*": "./src/*",
13
- "./editor/*": "./editor/*",
14
- "./*.md": "./*.md"
15
- },
16
- "sideEffects": [
17
- "**/*.css",
18
- "**/*.scss"
19
- ],
20
- "scripts": {
21
- "test:ci": "vitest run --coverage --reporter=default --reporter=junit --outputFile=junit.xml",
22
- "build-module": "rollup -c rollup.config.js",
23
- "publish-npm": "npm publish",
24
- "generate-types": "npx -p typescript tsc --project tsconfig.types.json || exit 0;",
25
- "test": "vitest run"
26
- },
27
- "browserslist": [
28
- "last 2 chrome version",
29
- "last 2 firefox version",
30
- "last 2 safari version"
31
- ],
32
- "files": [
33
- "build",
34
- "src",
35
- "editor",
36
- "samples",
37
- "package.json",
38
- "README.md",
39
- "!src/**/*.spec.js",
40
- "!editor/**/*.spec.js"
41
- ],
42
- "dependencies": {
43
- "gl-matrix": "3.4.3",
44
- "opentype.js": "1.3.3",
45
- "pako": "2.0.3",
46
- "robust-predicates": "3.0.2"
47
- },
48
- "peerDependencies": {
49
- "dat.gui": ">=0.7.0",
50
- "three": ">=0.135.0"
51
- },
52
- "peerDependenciesMeta": {
53
- "three": {
54
- "optional": true
55
- }
56
- },
57
- "devDependencies": {
58
- "@rollup/plugin-commonjs": "25.0.2",
59
- "@rollup/plugin-node-resolve": "15.1.0",
60
- "@rollup/plugin-strip": "3.0.2",
61
- "@rollup/plugin-terser": "0.4.3",
62
- "@types/three": "^0.135.0",
63
- "@vitest/coverage-v8": "^4.1.10",
64
- "jsdom": "^30.0.1",
65
- "rollup": "3.26.2",
66
- "typescript": "5.2.2",
67
- "vitest": "^4.1.10",
68
- "web-tree-sitter": "^0.26.12"
69
- },
70
- "keywords": [
71
- "game-engine",
72
- "gamedev",
73
- "ecs",
74
- "entity-component-system",
75
- "data-oriented",
76
- "zero-allocation",
77
- "modular",
78
- "tree-shaking",
79
- "3d",
80
- "webgl",
81
- "webgl2",
82
- "webgpu",
83
- "webaudio",
84
- "particles",
85
- "bvh",
86
- "behavior-tree",
87
- "inverse-kinematics",
88
- "fabrik",
89
- "clustered-lighting",
90
- "color-management",
91
- "typescript"
92
- ],
93
- "engines": {
94
- "node": ">=24"
95
- }
96
- }
1
+ {
2
+ "name": "@woosh/meep-engine",
3
+ "license": "SEE LICENSE IN LICENSE",
4
+ "productName": "Meep",
5
+ "homepage": "https://meep.company-named.com/",
6
+ "description": "Pure JavaScript game engine. Fully featured and production ready.",
7
+ "type": "module",
8
+ "author": "Alexander Goldring",
9
+ "version": "3.0.1",
10
+ "exports": {
11
+ "./build/*": "./build/*",
12
+ "./src/*": "./src/*",
13
+ "./editor/*": "./editor/*",
14
+ "./*.md": "./*.md"
15
+ },
16
+ "sideEffects": [
17
+ "**/*.css",
18
+ "**/*.scss"
19
+ ],
20
+ "scripts": {
21
+ "test:ci": "vitest run --coverage --reporter=default --reporter=junit --outputFile=junit.xml",
22
+ "build-module": "rollup -c rollup.config.js",
23
+ "publish-npm": "npm publish",
24
+ "generate-types": "npx -p typescript tsc --project tsconfig.types.json || exit 0;",
25
+ "test": "vitest run"
26
+ },
27
+ "browserslist": [
28
+ "last 2 chrome version",
29
+ "last 2 firefox version",
30
+ "last 2 safari version"
31
+ ],
32
+ "files": [
33
+ "build",
34
+ "src",
35
+ "editor",
36
+ "samples",
37
+ "package.json",
38
+ "README.md",
39
+ "!src/**/*.spec.js",
40
+ "!editor/**/*.spec.js"
41
+ ],
42
+ "dependencies": {
43
+ "opentype.js": "1.3.3",
44
+ "pako": "2.0.3",
45
+ "robust-predicates": "3.0.2"
46
+ },
47
+ "peerDependencies": {
48
+ "dat.gui": ">=0.7.0",
49
+ "three": ">=0.135.0"
50
+ },
51
+ "peerDependenciesMeta": {
52
+ "three": {
53
+ "optional": true
54
+ }
55
+ },
56
+ "devDependencies": {
57
+ "@rollup/plugin-commonjs": "25.0.2",
58
+ "@rollup/plugin-node-resolve": "15.1.0",
59
+ "@rollup/plugin-strip": "3.0.2",
60
+ "@rollup/plugin-terser": "0.4.3",
61
+ "@types/three": "^0.135.0",
62
+ "@vitest/coverage-v8": "^4.1.10",
63
+ "jsdom": "^30.0.1",
64
+ "rollup": "3.26.2",
65
+ "typescript": "5.2.2",
66
+ "vitest": "^4.1.10",
67
+ "web-tree-sitter": "^0.26.12"
68
+ },
69
+ "keywords": [
70
+ "game-engine",
71
+ "gamedev",
72
+ "ecs",
73
+ "entity-component-system",
74
+ "data-oriented",
75
+ "zero-allocation",
76
+ "modular",
77
+ "tree-shaking",
78
+ "3d",
79
+ "webgl",
80
+ "webgl2",
81
+ "webgpu",
82
+ "webaudio",
83
+ "particles",
84
+ "bvh",
85
+ "behavior-tree",
86
+ "inverse-kinematics",
87
+ "fabrik",
88
+ "clustered-lighting",
89
+ "color-management",
90
+ "typescript"
91
+ ],
92
+ "engines": {
93
+ "node": ">=24"
94
+ }
95
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Build a view matrix that places the eye at `eye` and points it at `center`, with `up` naming
3
+ * which way is up.
4
+ *
5
+ * Right-handed, matching the camera basis the rest of the renderer uses: the eye looks down its own
6
+ * −Z, so `center` sits at a negative view-space z. The result is the inverse of the camera's world
7
+ * transform — it carries world space into view space, not the other way around.
8
+ *
9
+ * `up` only has to be non-parallel to the view direction; it is re-orthogonalized against it. When
10
+ * it *is* parallel the cross product collapses and the basis is degenerate — that is a caller error,
11
+ * and the assert below is what says so.
12
+ *
13
+ * Allocation-free.
14
+ *
15
+ * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
16
+ * @param {ArrayLike<number>} eye position of the viewer, `[x, y, z]`
17
+ * @param {ArrayLike<number>} center point the viewer is looking at, `[x, y, z]`
18
+ * @param {ArrayLike<number>} up up direction, `[x, y, z]`, not parallel to `center - eye`
19
+ * @returns {number[]|Float32Array|Float64Array} `out`, for convenience
20
+ *
21
+ * @author Alex Goldring
22
+ * @copyright Company Named Limited (c) 2026
23
+ */
24
+ export function m4_look_at(out: number[] | Float32Array | Float64Array, eye: ArrayLike<number>, center: ArrayLike<number>, up: ArrayLike<number>): number[] | Float32Array | Float64Array;
25
+ //# sourceMappingURL=m4_look_at.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_look_at.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_look_at.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,gCATW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,OAClC,UAAU,MAAM,CAAC,UACjB,UAAU,MAAM,CAAC,MACjB,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CA2E9C"}
@@ -0,0 +1,96 @@
1
+ import { assert } from "../../../assert.js";
2
+
3
+ /**
4
+ * Build a view matrix that places the eye at `eye` and points it at `center`, with `up` naming
5
+ * which way is up.
6
+ *
7
+ * Right-handed, matching the camera basis the rest of the renderer uses: the eye looks down its own
8
+ * −Z, so `center` sits at a negative view-space z. The result is the inverse of the camera's world
9
+ * transform — it carries world space into view space, not the other way around.
10
+ *
11
+ * `up` only has to be non-parallel to the view direction; it is re-orthogonalized against it. When
12
+ * it *is* parallel the cross product collapses and the basis is degenerate — that is a caller error,
13
+ * and the assert below is what says so.
14
+ *
15
+ * Allocation-free.
16
+ *
17
+ * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
18
+ * @param {ArrayLike<number>} eye position of the viewer, `[x, y, z]`
19
+ * @param {ArrayLike<number>} center point the viewer is looking at, `[x, y, z]`
20
+ * @param {ArrayLike<number>} up up direction, `[x, y, z]`, not parallel to `center - eye`
21
+ * @returns {number[]|Float32Array|Float64Array} `out`, for convenience
22
+ *
23
+ * @author Alex Goldring
24
+ * @copyright Company Named Limited (c) 2026
25
+ */
26
+ export function m4_look_at(out, eye, center, up) {
27
+ assert.isArrayLike(eye, 'eye');
28
+ assert.isArrayLike(center, 'center');
29
+ assert.isArrayLike(up, 'up');
30
+
31
+ const eye_x = eye[0];
32
+ const eye_y = eye[1];
33
+ const eye_z = eye[2];
34
+
35
+ // backward = normalize(eye - center); the view direction is its negation
36
+ let z0 = eye_x - center[0];
37
+ let z1 = eye_y - center[1];
38
+ let z2 = eye_z - center[2];
39
+
40
+ const z_length = Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);
41
+
42
+ assert.greaterThan(z_length, 0, 'distance between eye and center');
43
+
44
+ const z_scale = 1 / z_length;
45
+
46
+ z0 *= z_scale;
47
+ z1 *= z_scale;
48
+ z2 *= z_scale;
49
+
50
+ const up_x = up[0];
51
+ const up_y = up[1];
52
+ const up_z = up[2];
53
+
54
+ // right = normalize(cross(up, backward))
55
+ let x0 = up_y * z2 - up_z * z1;
56
+ let x1 = up_z * z0 - up_x * z2;
57
+ let x2 = up_x * z1 - up_y * z0;
58
+
59
+ const x_length = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);
60
+
61
+ assert.greaterThan(x_length, 0, 'length of cross(up, eye - center), up must not be parallel to the view direction');
62
+
63
+ const x_scale = 1 / x_length;
64
+
65
+ x0 *= x_scale;
66
+ x1 *= x_scale;
67
+ x2 *= x_scale;
68
+
69
+ // up = cross(backward, right); both operands are unit and orthogonal, so this one already is
70
+ const y0 = z1 * x2 - z2 * x1;
71
+ const y1 = z2 * x0 - z0 * x2;
72
+ const y2 = z0 * x1 - z1 * x0;
73
+
74
+ // rotation is the transpose of the basis, translation is the eye in that rotated frame
75
+ out[0] = x0;
76
+ out[1] = y0;
77
+ out[2] = z0;
78
+ out[3] = 0;
79
+
80
+ out[4] = x1;
81
+ out[5] = y1;
82
+ out[6] = z1;
83
+ out[7] = 0;
84
+
85
+ out[8] = x2;
86
+ out[9] = y2;
87
+ out[10] = z2;
88
+ out[11] = 0;
89
+
90
+ out[12] = -(x0 * eye_x + x1 * eye_y + x2 * eye_z);
91
+ out[13] = -(y0 * eye_x + y1 * eye_y + y2 * eye_z);
92
+ out[14] = -(z0 * eye_x + z1 * eye_y + z2 * eye_z);
93
+ out[15] = 1;
94
+
95
+ return out;
96
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Create a 4x4 matrix that corresponds to a rotation around the X axis.
3
+ *
4
+ * Right-handed: a positive angle carries +Y towards +Z. The rotation-around-Y and
5
+ * rotation-around-Z companions are {@link m4_make_rotation_y} and {@link m4_make_rotation_z}; to
6
+ * compose several, build each one and chain them with {@link m4_multiply}.
7
+ *
8
+ * Allocation-free.
9
+ *
10
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
11
+ * @param {number} angle rotation, in radians
12
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
13
+ *
14
+ * @author Alex Goldring
15
+ * @copyright Company Named Limited (c) 2026
16
+ */
17
+ export function m4_make_rotation_x(output: number[] | Float32Array | Float64Array, angle: number): number[] | Float32Array | Float64Array;
18
+ //# sourceMappingURL=m4_make_rotation_x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_make_rotation_x.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_make_rotation_x.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,SAClC,MAAM,GACJ,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CAiC9C"}
@@ -0,0 +1,47 @@
1
+ import { assert } from "../../../assert.js";
2
+
3
+ /**
4
+ * Create a 4x4 matrix that corresponds to a rotation around the X axis.
5
+ *
6
+ * Right-handed: a positive angle carries +Y towards +Z. The rotation-around-Y and
7
+ * rotation-around-Z companions are {@link m4_make_rotation_y} and {@link m4_make_rotation_z}; to
8
+ * compose several, build each one and chain them with {@link m4_multiply}.
9
+ *
10
+ * Allocation-free.
11
+ *
12
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
13
+ * @param {number} angle rotation, in radians
14
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export function m4_make_rotation_x(output, angle) {
20
+ assert.isNumber(angle, 'angle');
21
+ assert.notNaN(angle, 'angle');
22
+
23
+ const s = Math.sin(angle);
24
+ const c = Math.cos(angle);
25
+
26
+ output[0] = 1;
27
+ output[1] = 0;
28
+ output[2] = 0;
29
+ output[3] = 0;
30
+
31
+ output[4] = 0;
32
+ output[5] = c;
33
+ output[6] = s;
34
+ output[7] = 0;
35
+
36
+ output[8] = 0;
37
+ output[9] = -s;
38
+ output[10] = c;
39
+ output[11] = 0;
40
+
41
+ output[12] = 0;
42
+ output[13] = 0;
43
+ output[14] = 0;
44
+ output[15] = 1;
45
+
46
+ return output;
47
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Create a 4x4 matrix that corresponds to a rotation around the Y axis.
3
+ *
4
+ * Right-handed: a positive angle carries +Z towards +X. The rotation-around-X and
5
+ * rotation-around-Z companions are {@link m4_make_rotation_x} and {@link m4_make_rotation_z}; to
6
+ * compose several, build each one and chain them with {@link m4_multiply}.
7
+ *
8
+ * Allocation-free.
9
+ *
10
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
11
+ * @param {number} angle rotation, in radians
12
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
13
+ *
14
+ * @author Alex Goldring
15
+ * @copyright Company Named Limited (c) 2026
16
+ */
17
+ export function m4_make_rotation_y(output: number[] | Float32Array | Float64Array, angle: number): number[] | Float32Array | Float64Array;
18
+ //# sourceMappingURL=m4_make_rotation_y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_make_rotation_y.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_make_rotation_y.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,SAClC,MAAM,GACJ,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CAiC9C"}
@@ -0,0 +1,47 @@
1
+ import { assert } from "../../../assert.js";
2
+
3
+ /**
4
+ * Create a 4x4 matrix that corresponds to a rotation around the Y axis.
5
+ *
6
+ * Right-handed: a positive angle carries +Z towards +X. The rotation-around-X and
7
+ * rotation-around-Z companions are {@link m4_make_rotation_x} and {@link m4_make_rotation_z}; to
8
+ * compose several, build each one and chain them with {@link m4_multiply}.
9
+ *
10
+ * Allocation-free.
11
+ *
12
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
13
+ * @param {number} angle rotation, in radians
14
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export function m4_make_rotation_y(output, angle) {
20
+ assert.isNumber(angle, 'angle');
21
+ assert.notNaN(angle, 'angle');
22
+
23
+ const s = Math.sin(angle);
24
+ const c = Math.cos(angle);
25
+
26
+ output[0] = c;
27
+ output[1] = 0;
28
+ output[2] = -s;
29
+ output[3] = 0;
30
+
31
+ output[4] = 0;
32
+ output[5] = 1;
33
+ output[6] = 0;
34
+ output[7] = 0;
35
+
36
+ output[8] = s;
37
+ output[9] = 0;
38
+ output[10] = c;
39
+ output[11] = 0;
40
+
41
+ output[12] = 0;
42
+ output[13] = 0;
43
+ output[14] = 0;
44
+ output[15] = 1;
45
+
46
+ return output;
47
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Create a 4x4 matrix that corresponds to a rotation around the Z axis.
3
+ *
4
+ * Right-handed: a positive angle carries +X towards +Y. The rotation-around-X and
5
+ * rotation-around-Y companions are {@link m4_make_rotation_x} and {@link m4_make_rotation_y}; to
6
+ * compose several, build each one and chain them with {@link m4_multiply}.
7
+ *
8
+ * Allocation-free.
9
+ *
10
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
11
+ * @param {number} angle rotation, in radians
12
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
13
+ *
14
+ * @author Alex Goldring
15
+ * @copyright Company Named Limited (c) 2026
16
+ */
17
+ export function m4_make_rotation_z(output: number[] | Float32Array | Float64Array, angle: number): number[] | Float32Array | Float64Array;
18
+ //# sourceMappingURL=m4_make_rotation_z.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_make_rotation_z.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_make_rotation_z.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,2CAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,SAClC,MAAM,GACJ,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CAiC9C"}
@@ -0,0 +1,47 @@
1
+ import { assert } from "../../../assert.js";
2
+
3
+ /**
4
+ * Create a 4x4 matrix that corresponds to a rotation around the Z axis.
5
+ *
6
+ * Right-handed: a positive angle carries +X towards +Y. The rotation-around-X and
7
+ * rotation-around-Y companions are {@link m4_make_rotation_x} and {@link m4_make_rotation_y}; to
8
+ * compose several, build each one and chain them with {@link m4_multiply}.
9
+ *
10
+ * Allocation-free.
11
+ *
12
+ * @param {number[]|Float32Array|Float64Array} output 4x4 matrix output will be written here
13
+ * @param {number} angle rotation, in radians
14
+ * @returns {number[]|Float32Array|Float64Array} `output` parameter, returned for convenience
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export function m4_make_rotation_z(output, angle) {
20
+ assert.isNumber(angle, 'angle');
21
+ assert.notNaN(angle, 'angle');
22
+
23
+ const s = Math.sin(angle);
24
+ const c = Math.cos(angle);
25
+
26
+ output[0] = c;
27
+ output[1] = s;
28
+ output[2] = 0;
29
+ output[3] = 0;
30
+
31
+ output[4] = -s;
32
+ output[5] = c;
33
+ output[6] = 0;
34
+ output[7] = 0;
35
+
36
+ output[8] = 0;
37
+ output[9] = 0;
38
+ output[10] = 1;
39
+ output[11] = 0;
40
+
41
+ output[12] = 0;
42
+ output[13] = 0;
43
+ output[14] = 0;
44
+ output[15] = 1;
45
+
46
+ return output;
47
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Build a conventional perspective projection matrix: right-handed, with clip depth spanning the
3
+ * full −1…1 that OpenGL and three.js use.
4
+ *
5
+ * This is *not* the projection the renderer draws with — Shade's cameras use an infinite reverse-Z
6
+ * with a 0…1 depth range, which is what WebGPU wants. This one exists for the arithmetic that has to
7
+ * hold under either shape, and for reading geometry produced against the OpenGL convention.
8
+ *
9
+ * `far` is finite here on purpose: an infinite far plane is a different matrix, not a special value
10
+ * of this one.
11
+ *
12
+ * Allocation-free.
13
+ *
14
+ * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
15
+ * @param {number} fov_y vertical field of view, in radians
16
+ * @param {number} aspect viewport width divided by its height
17
+ * @param {number} near distance to the near clipping plane, greater than 0
18
+ * @param {number} far distance to the far clipping plane, greater than `near`
19
+ * @returns {number[]|Float32Array|Float64Array} `out`, for convenience
20
+ *
21
+ * @author Alex Goldring
22
+ * @copyright Company Named Limited (c) 2026
23
+ */
24
+ export function m4_perspective(out: number[] | Float32Array | Float64Array, fov_y: number, aspect: number, near: number, far: number): number[] | Float32Array | Float64Array;
25
+ //# sourceMappingURL=m4_perspective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m4_perspective.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/mat4/m4_perspective.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,oCAVW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,SAClC,MAAM,UACN,MAAM,QACN,MAAM,OACN,MAAM,GACJ,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,CA6C9C"}
@@ -0,0 +1,66 @@
1
+ import { assert } from "../../../assert.js";
2
+
3
+ /**
4
+ * Build a conventional perspective projection matrix: right-handed, with clip depth spanning the
5
+ * full −1…1 that OpenGL and three.js use.
6
+ *
7
+ * This is *not* the projection the renderer draws with — Shade's cameras use an infinite reverse-Z
8
+ * with a 0…1 depth range, which is what WebGPU wants. This one exists for the arithmetic that has to
9
+ * hold under either shape, and for reading geometry produced against the OpenGL convention.
10
+ *
11
+ * `far` is finite here on purpose: an infinite far plane is a different matrix, not a special value
12
+ * of this one.
13
+ *
14
+ * Allocation-free.
15
+ *
16
+ * @param {number[]|Float32Array|Float64Array} out destination 4x4 matrix
17
+ * @param {number} fov_y vertical field of view, in radians
18
+ * @param {number} aspect viewport width divided by its height
19
+ * @param {number} near distance to the near clipping plane, greater than 0
20
+ * @param {number} far distance to the far clipping plane, greater than `near`
21
+ * @returns {number[]|Float32Array|Float64Array} `out`, for convenience
22
+ *
23
+ * @author Alex Goldring
24
+ * @copyright Company Named Limited (c) 2026
25
+ */
26
+ export function m4_perspective(out, fov_y, aspect, near, far) {
27
+ assert.isNumber(fov_y, 'fov_y');
28
+ assert.greaterThan(fov_y, 0, 'fov_y');
29
+ assert.lessThan(fov_y, Math.PI, 'fov_y');
30
+
31
+ assert.isNumber(aspect, 'aspect');
32
+ assert.greaterThan(aspect, 0, 'aspect');
33
+
34
+ assert.isNumber(near, 'near');
35
+ assert.greaterThan(near, 0, 'near');
36
+
37
+ assert.isFinite(far, 'far');
38
+ assert.greaterThan(far, near, 'far');
39
+
40
+ const f = 1 / Math.tan(fov_y * 0.5);
41
+
42
+ // 1 / (near - far), negative, and the shared factor of both depth terms
43
+ const nf = 1 / (near - far);
44
+
45
+ out[0] = f / aspect;
46
+ out[1] = 0;
47
+ out[2] = 0;
48
+ out[3] = 0;
49
+
50
+ out[4] = 0;
51
+ out[5] = f;
52
+ out[6] = 0;
53
+ out[7] = 0;
54
+
55
+ out[8] = 0;
56
+ out[9] = 0;
57
+ out[10] = (far + near) * nf;
58
+ out[11] = -1;
59
+
60
+ out[12] = 0;
61
+ out[13] = 0;
62
+ out[14] = 2 * far * near * nf;
63
+ out[15] = 0;
64
+
65
+ return out;
66
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"FirstPersonPlayerControllerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerControllerSystem.js"],"names":[],"mappings":"AAsXA;;;;;;;;;;;;;;;;;GAiBG;AACH;;IAOI,wEAAwD;IAExD,gKAIE;IAEF;;;OAGG;IACH,SAFU,IAAI,MAAM,EAAE,gBAAgB,CAAC,CAEnB;IAEpB;;;;OAIG;IACH,sBAFU,OAAO,CAEW;IAE5B;;;;OAIG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;;;;;;;;;;;;;;OAgBG;IACH,oBAFc,MAAM,KAAI,MAAM,KAAI,MAAM,KAAK,MAAM,GAAC,IAAI,CAElC;IAEtB;;;;;;;OAOG;IACH,eAFU,aAAa,GAAC,IAAI,CAEP;IAErB;;;;;;;;OAQG;IACH,eAAc;IAEd,+DAA+D;IAC/D,uBAA+B;IAE/B,yDAAyD;IACzD,oBAAyB;IAEzB,2CAA2C;IAC3C,oBAAwC;IAExC,2CAMC;IAED;;;;OAIG;IACH,iBAJW,2BAA2B,iBAC3B,SAAS,UACT,MAAM,QAqIhB;IAED;;;;OAIG;IACH,mBAJW,2BAA2B,iBAC3B,SAAS,UACT,MAAM,QAWhB;IAED;;;;;;;;OAQG;IACH,mBAHW,MAAM,GACJ,gBAAgB,GAAC,SAAS,CAItC;IAUG,mBAAoB;IAYpB,yBAA0B;IAI9B;;;;OAIG;IACH,oBAsUC;IAED;;;;;OAKG;IACH;;;;;;;;;;;;;;OAcG;IACH,2BAaC;IAED,2EA0CC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,2BASC;IAED;;;;;;;;;;;OAWG;IACH,wBA+EC;IAED;;;;;;;;;;;;;OAaG;IACH,2CAIC;IAED;;;;;;;;;;;OAWG;IACH,uBAMC;IAED;;;;;OAKG;IACH,sBAWC;IAED;;;;;OAKG;IACH,sBAgDC;IAED;;;;;;;;OAQG;IACH,wBA4CC;IAED;;;;;;OAMG;IACH,gBAsBC;IAED;;;;OAIG;IACH,uBAIC;IAED;;;OAGG;IACH,wBASC;IAED;;;;;;;;;;;;;;OAcG;IACH,2BA4IC;IAED;;;;;;;;;;;;;;;OAeG;IACH,kCAsDC;IAED;;;;;;;;;;OAUG;IACH,qBAiDC;IAED;;;;;;;;OAQG;IACH,4BAUC;IAED;;;;;;;;;OASG;IACH,8BAkBC;IAED;;;;;;;;;;;;;;;OAeG;IACH,qBA0BC;IAED;;;;;OAKG;IACH,oBAsLC;CACJ;uBAh9DsB,qBAAqB;0BAClB,kCAAkC;4CAShB,kCAAkC;4CAblC,oDAAoD;0BAStE,gCAAgC;uBAJnC,qCAAqC;AA8E5D;;;;;GAKG;AACH;IACI;;;;;;;OAOG;IACH,WAFU,SAAS,GAAC,IAAI,CAEP;IAEjB;;;;;OAKG;IACH,UAFU,QAAQ,GAAC,IAAI,CAEP;IAEhB;;;;;;;;;;;OAWG;IACH,2BAA0B;IAE1B,+CAA+C;IAC/C,4BAA2B;IAE3B,+CAA+C;IAC/C,2BAA0B;IAE1B,eAAe;IACf,oBAAiB;IAEjB,2DAA2D;IAC3D,iBAAa;IAEb,6CAA6C;IAC7C,gBAAY;IAEZ,sEAAsE;IACtE,yBAAqB;IAWrB;;wBAEoB;IACpB,qBAAiB;IAEjB,uBAA8B;IAC9B,sBAA6B;IAE7B;;gDAE4C;IAC5C,oBAAmB;IAEnB;sDACkD;IAClD,kBAAc;IAEd,kBAAc;IACd,kBAAc;IAEd,qEAAqE;IACrE,sBAAqB;IAErB,oEAAoE;IACpE,wBAAuB;IAEvB,yEAAyE;IACzE,uBAAsB;IAEtB,wEAAwE;IACxE,8BAA0B;IAE1B,mEAAmE;IACnE,gBAAe;IAEf;;;;;OAKG;IACH,kBAAc;IAEd,mEAAmE;IACnE,sBAAoB;IAEpB;;;;OAIG;IACH,gBAAkB;IAElB,kEAAkE;IAClE,mBAA0B;IAE1B,0CAA0C;IAC1C,kBAA2B;IAE3B,iDAAiD;IACjD,wBAAmC;IAEnC,wEAAwE;IACxE,mBAA0B;IAE1B;;;;;;;OAOG;IACH,sBAAkB;IAElB,sEAAsE;IACtE,sBAAkB;IAElB,sBAAkB;IAElB,iDAAiD;IACjD,sBAAoB;IAEpB,uDAAuD;IACvD,kBAAc;IAEd,0EAA0E;IAC1E,qBAAiB;IAEjB,+DAA+D;IAC/D,iBAAgB;IAEhB,oDAAoD;IACpD,mBAAkB;IAElB,2EAA2E;IAC3E,wBAAoB;IAEpB,gFAAgF;IAChF,wBAAoB;IAEpB,+DAA+D;IAC/D,qBAAmB;IAEnB;;;;;;;;;;OAUG;IACH,qBAAmB;IAEnB;;;;;;OAMG;IACH,qBAAiB;IAEjB;;;;OAIG;IACH,2BAAkC;IAElC;;;;OAIG;IACH,6BAAoC;IAEpC;;;;;OAKG;IACH,4BAAmC;IAEnC;;;;OAIG;IACH,wBAA+B;IAE/B;;;;OAIG;IACH,mBAAe;IAEf;;;;;OAKG;IACH,eAAW;IAEX,eAAW;IAEX,8EAA8E;IAC9E,mBAAe;IAEf,4FAA4F;IAC5F,qBAAiB;IAEjB;;;;;OAKG;IACH,+BAAsC;IAEtC;;;;;OAKG;IACH,4BAAmC;IAEnC,sDAAsD;IACtD,kBAAe;IAEf;;;;;OAKG;IACH,4BAA2B;IAE3B;;;;;;OAMG;IACH,4BAAwB;CAC3B;8BAlW6B,oCAAoC;yBADzC,+BAA+B;oBAZpC,+BAA+B;uBAwB5B,kBAAkB;+BAPV,8BAA8B;mCAW1B,iCAAiC"}
1
+ {"version":3,"file":"FirstPersonPlayerControllerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerControllerSystem.js"],"names":[],"mappings":"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"}