@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
@@ -1 +1 @@
1
- {"version":3,"file":"usd_compose_transform.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_compose_transform.js"],"names":[],"mappings":"AAmCA;;;;;;;;;;;;GAYG;AACH,kFAHW,MAAM,GACJ,YAAY,CA0BxB"}
1
+ {"version":3,"file":"usd_compose_transform.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/loader/usd/usd_compose_transform.js"],"names":[],"mappings":"AAgEA;;;;;;;;;;;;GAYG;AACH,kFAHW,MAAM,GACJ,YAAY,CA0BxB"}
@@ -17,8 +17,18 @@
17
17
  * @module usd_compose_transform
18
18
  */
19
19
 
20
+ import { array_copy } from "../../../../core/collection/array/array_copy.js";
21
+ import { M4_IDENTITY } from "../../../../core/geom/3d/mat4/M4_IDENTITY.js";
22
+ import { m4_allocate } from "../../../../core/geom/3d/mat4/m4_allocate.js";
23
+ import { m4_from_rotation_translation_scale } from "../../../../core/geom/3d/mat4/m4_from_rotation_translation_scale.js";
24
+ import { m4_make_rotation_x } from "../../../../core/geom/3d/mat4/m4_make_rotation_x.js";
25
+ import { m4_make_rotation_y } from "../../../../core/geom/3d/mat4/m4_make_rotation_y.js";
26
+ import { m4_make_rotation_z } from "../../../../core/geom/3d/mat4/m4_make_rotation_z.js";
27
+ import { m4_make_scale } from "../../../../core/geom/3d/mat4/m4_make_scale.js";
28
+ import { m4_make_translation } from "../../../../core/geom/3d/mat4/m4_make_translation.js";
29
+ import { m4_multiply } from "../../../../core/geom/3d/mat4/m4_multiply.js";
30
+ import { m4_transpose } from "../../../../core/geom/3d/mat4/m4_transpose.js";
20
31
  import { DEG_TO_RAD } from "../../../../core/math/DEG_TO_RAD.js";
21
- import { mat4, quat } from "gl-matrix";
22
32
 
23
33
  /**
24
34
  * Reusable temporary matrix to avoid per-call allocations.
@@ -26,12 +36,31 @@ import { mat4, quat } from "gl-matrix";
26
36
  */
27
37
  const _temp_mat = new Float32Array(16);
28
38
 
39
+ /**
40
+ * Reusable temporary matrix holding a single axis of an euler rotation, which is multiplied into
41
+ * the accumulating rotation rather than replacing it.
42
+ * @type {Float32Array}
43
+ */
44
+ const _temp_axis_mat = new Float32Array(16);
45
+
29
46
  /**
30
47
  * Reusable temporary quaternion.
31
48
  * @type {Float32Array}
32
49
  */
33
50
  const _temp_quat = new Float32Array(4);
34
51
 
52
+ /**
53
+ * An `xformOp:orient` carries rotation alone — translation and scale are separate ops with their
54
+ * own place in `xformOpOrder` — so the matrix it composes from a quaternion has neither.
55
+ * @type {number[]}
56
+ */
57
+ const NO_TRANSLATION = [0, 0, 0];
58
+
59
+ /**
60
+ * @see NO_TRANSLATION
61
+ * @type {number[]}
62
+ */
63
+ const UNIT_SCALE = [1, 1, 1];
35
64
 
36
65
  /**
37
66
  * Compose a USD transform from its `xformOpOrder` and associated properties.
@@ -51,10 +80,10 @@ export function usd_compose_transform(fields, specs_by_path, prim_path) {
51
80
  const xform_op_order = fields.xformOpOrder;
52
81
 
53
82
  if (!xform_op_order || xform_op_order.length === 0) {
54
- return mat4.create();
83
+ return m4_allocate();
55
84
  }
56
85
 
57
- const result = mat4.create();
86
+ const result = m4_allocate();
58
87
 
59
88
  for (let i = 0; i < xform_op_order.length; i++) {
60
89
  const op_name = xform_op_order[i];
@@ -126,7 +155,7 @@ function resolve_xform_op_value(op_name, fields, specs_by_path, prim_path) {
126
155
  * - `xformOp:orient` — quaternion rotation (USD format: w,x,y,z)
127
156
  * - `xformOp:transform` — full 4×4 matrix
128
157
  *
129
- * @param {mat4} result - Matrix to multiply into (modified in place)
158
+ * @param {Float32Array} result - Matrix to multiply into (modified in place)
130
159
  * @param {string} op_name - Operation name
131
160
  * @param {number[]|Float32Array|Float64Array} value - Operation value
132
161
  */
@@ -135,28 +164,26 @@ function apply_xform_op(result, op_name, value) {
135
164
  // Strip the "xformOp:" prefix and any namespace suffix (e.g. ":pivot")
136
165
  const op = op_name.replace(/^xformOp:/, "");
137
166
 
138
- mat4.identity(_temp_mat);
139
-
140
167
  if (op === "translate") {
141
168
 
142
169
  // NOTE: float64 → float32 precision loss for large coordinates
143
- mat4.translate(_temp_mat, _temp_mat, [value[0], value[1], value[2]]);
170
+ m4_make_translation(_temp_mat, value);
144
171
 
145
172
  } else if (op === "scale") {
146
173
 
147
- mat4.scale(_temp_mat, _temp_mat, [value[0], value[1], value[2]]);
174
+ m4_make_scale(_temp_mat, value);
148
175
 
149
176
  } else if (op === "rotateX") {
150
177
 
151
- mat4.rotateX(_temp_mat, _temp_mat, value * DEG_TO_RAD);
178
+ m4_make_rotation_x(_temp_mat, value * DEG_TO_RAD);
152
179
 
153
180
  } else if (op === "rotateY") {
154
181
 
155
- mat4.rotateY(_temp_mat, _temp_mat, value * DEG_TO_RAD);
182
+ m4_make_rotation_y(_temp_mat, value * DEG_TO_RAD);
156
183
 
157
184
  } else if (op === "rotateZ") {
158
185
 
159
- mat4.rotateZ(_temp_mat, _temp_mat, value * DEG_TO_RAD);
186
+ m4_make_rotation_z(_temp_mat, value * DEG_TO_RAD);
160
187
 
161
188
  } else if (op === "rotateXYZ" || op === "rotateXZY" || op === "rotateYXZ" ||
162
189
  op === "rotateYZX" || op === "rotateZXY" || op === "rotateZYX") {
@@ -166,30 +193,34 @@ function apply_xform_op(result, op_name, value) {
166
193
  } else if (op === "orient") {
167
194
 
168
195
  // USD quaternion order: (w, x, y, z)
169
- // gl-matrix quaternion order: (x, y, z, w)
196
+ // engine quaternion order: (x, y, z, w)
170
197
  // @see https://openusd.org/release/api/class_gf_quatf.html — GfQuatf real-part-first layout
171
- quat.set(_temp_quat, value[1], value[2], value[3], value[0]);
172
- mat4.fromQuat(_temp_mat, _temp_quat);
198
+ _temp_quat[0] = value[1];
199
+ _temp_quat[1] = value[2];
200
+ _temp_quat[2] = value[3];
201
+ _temp_quat[3] = value[0];
202
+
203
+ m4_from_rotation_translation_scale(_temp_mat, _temp_quat, NO_TRANSLATION, UNIT_SCALE);
173
204
 
174
205
  } else if (op === "transform") {
175
206
 
176
207
  // Full 4×4 matrix — USD stores row-major, engine uses column-major
177
208
  // NOTE: float64 → float32 precision loss for all 16 matrix elements
178
- mat4.transpose(_temp_mat, value);
209
+ m4_transpose(_temp_mat, value);
179
210
 
180
211
  } else {
181
212
  console.warn(`[USD] Unknown xformOp: "${op_name}", skipping`);
182
213
  return;
183
214
  }
184
215
 
185
- mat4.multiply(result, result, _temp_mat);
216
+ m4_multiply(result, result, _temp_mat);
186
217
  }
187
218
 
188
219
 
189
220
  /**
190
221
  * Apply euler rotation in the specified axis order.
191
222
  *
192
- * @param {mat4} out - Output matrix
223
+ * @param {Float32Array} out - Output matrix
193
224
  * @param {string} order - e.g. "rotateXYZ"
194
225
  * @param {number[]} angles - [x, y, z] in degrees
195
226
  */
@@ -203,21 +234,25 @@ function apply_euler_rotation(out, order, angles) {
203
234
  const axis_order = order.replace("rotate", "");
204
235
 
205
236
  const ops = {
206
- "X": (m) => mat4.rotateX(m, m, rx),
207
- "Y": (m) => mat4.rotateY(m, m, ry),
208
- "Z": (m) => mat4.rotateZ(m, m, rz),
237
+ "X": (m) => m4_make_rotation_x(m, rx),
238
+ "Y": (m) => m4_make_rotation_y(m, ry),
239
+ "Z": (m) => m4_make_rotation_z(m, rz),
209
240
  };
210
241
 
242
+ array_copy(M4_IDENTITY, 0, out, 0, 16);
243
+
211
244
  // OpenUSD applies the named axes to the point first-to-last (rotateXYZ ⇒ X
212
- // first). gl-matrix post-multiplies, so build the matrix in reverse:
213
- // out = R_last · … · R_first.
245
+ // first). A column-major matrix applies its rightmost factor first, so build
246
+ // the product in reverse: out = R_last · … · R_first.
214
247
  // @see https://openusd.org/release/api/class_usd_geom_xform_op.html — TypeRotateXYZ
215
248
  for (let i = axis_order.length - 1; i >= 0; i--) {
216
249
  const axis = axis_order[i];
217
250
  const fn = ops[axis];
218
251
 
219
252
  if (fn) {
220
- fn(out);
253
+ fn(_temp_axis_mat);
254
+
255
+ m4_multiply(out, out, _temp_axis_mat);
221
256
  }
222
257
  }
223
258
  }