@woosh/meep-engine 2.119.48 → 2.119.49
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/package.json +1 -1
- package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts +10 -0
- package/src/core/geom/3d/sphere/spherical_from_cartesian.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/spherical_from_cartesian.js +29 -0
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +2 -1
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +6 -2
package/package.json
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert cartesian coordinates to spherical
|
|
3
|
+
* @param {number[]} out
|
|
4
|
+
* @param {number} out_offset
|
|
5
|
+
* @param {number} x
|
|
6
|
+
* @param {number} y
|
|
7
|
+
* @param {number} z
|
|
8
|
+
*/
|
|
9
|
+
export function spherical_from_cartesian(out: number[], out_offset: number, x: number, y: number, z: number): void;
|
|
10
|
+
//# sourceMappingURL=spherical_from_cartesian.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spherical_from_cartesian.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/sphere/spherical_from_cartesian.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,8CANW,MAAM,EAAE,cACR,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QAmBhB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { clamp } from "../../../math/clamp.js";
|
|
2
|
+
import { v3_length } from "../../vec3/v3_length.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Convert cartesian coordinates to spherical
|
|
6
|
+
* @param {number[]} out
|
|
7
|
+
* @param {number} out_offset
|
|
8
|
+
* @param {number} x
|
|
9
|
+
* @param {number} y
|
|
10
|
+
* @param {number} z
|
|
11
|
+
*/
|
|
12
|
+
export function spherical_from_cartesian(out, out_offset, x, y, z) {
|
|
13
|
+
|
|
14
|
+
const radius = v3_length(x, y, z);
|
|
15
|
+
|
|
16
|
+
let theta = 0;
|
|
17
|
+
let phi = 0;
|
|
18
|
+
|
|
19
|
+
if (radius !== 0) {
|
|
20
|
+
|
|
21
|
+
theta = Math.atan2(x, z);
|
|
22
|
+
phi = Math.acos(clamp(y / radius, -1, 1));
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
out[out_offset + 0] = phi;
|
|
27
|
+
out[out_offset + 1] = theta;
|
|
28
|
+
out[out_offset + 2] = radius;
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
|
package/src/core/geom/Vector3.js
CHANGED
|
@@ -12,6 +12,7 @@ import { v3_length_sqr } from "./vec3/v3_length_sqr.js";
|
|
|
12
12
|
import { v3_lerp } from "./vec3/v3_lerp.js";
|
|
13
13
|
import { v3_slerp } from "./vec3/v3_slerp.js";
|
|
14
14
|
|
|
15
|
+
|
|
15
16
|
/**
|
|
16
17
|
* @author Alex Goldring
|
|
17
18
|
* @copyright Alex Goldring 2015-2024
|
|
@@ -63,7 +64,7 @@ class Vector3 {
|
|
|
63
64
|
* @param {number[]|Float32Array} array
|
|
64
65
|
* @param {number} offset
|
|
65
66
|
*/
|
|
66
|
-
writeToArray(array=[], offset = 0) {
|
|
67
|
+
writeToArray(array = [], offset = 0) {
|
|
67
68
|
array[offset] = this.x;
|
|
68
69
|
array[offset + 1] = this.y;
|
|
69
70
|
array[offset + 2] = this.z;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeOrbitalCameraController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/camera/makeOrbitalCameraController.js"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,8FANW,MAAM,GAIL,MAAM,
|
|
1
|
+
{"version":3,"file":"makeOrbitalCameraController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/camera/makeOrbitalCameraController.js"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,8FANW,MAAM,GAIL,MAAM,CAgGjB;mBA5GkB,qBAAqB"}
|
|
@@ -39,7 +39,9 @@ export function makeOrbitalCameraController({
|
|
|
39
39
|
|
|
40
40
|
const cameraController = getCameraController();
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
const scale = sensitivity * 2 * Math.PI / dom_element.clientHeight;
|
|
43
|
+
|
|
44
|
+
rotate_from_view(delta.x * scale, delta.y * scale, cameraController, cameraController);
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopDownCameraController.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TopDownCameraController.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,iDALW,MAAM,kBACN,MAAM,SACN,uBAAuB,UACvB,uBAAuB,QAiBjC;;AAiED;IAmJI,iDAMC;IAxJD,0BAeC;IAdG,gBAA2B;IAE3B,cAAc;IACd,YAAY;IACZ,aAAa;IAEb,iBAAiB;IACjB,oBAAoB;IACpB,oBAAsB;IAQ1B;;;;;OAKG;IACH,yBAJW,OAAO,UACP,OAAO,OACP,OAAO,QAsBjB;IAED;;;;OAIG;IACH,cAHW,uBAAuB,GACrB,OAAO,CAWnB;IAED;;;OAGG;IACH,YAFW,uBAAuB,QAYjC;IAED;;;OAGG;IACH,SAFa,uBAAuB,CAQnC;IAED;;;;;OAKG;IACH,QAJW,uBAAuB,KACvB,uBAAuB,KACvB,MAAM,QAahB;IAED;;;;;;;;MAYC;IAED;;;;;;;;aAsBC;CASJ;;;;;;oBA5PmB,qCAAqC;AA0EzD;;;;;;;;;GASG;AACH,gEANW,OAAO,kBACP,MAAM,OACN,MAAM,UACN,OAAO,eACP,OAAO,QAajB"}
|
|
@@ -2,9 +2,11 @@ import { Matrix4 } from "three";
|
|
|
2
2
|
import { assert } from "../../../../../core/assert.js";
|
|
3
3
|
import { eulerAnglesFromMatrix } from "../../../../../core/geom/3d/eulerAnglesFromMatrix.js";
|
|
4
4
|
import { normalize_angle_rad } from "../../../../../core/geom/normalize_angle_rad.js";
|
|
5
|
+
import Quaternion from "../../../../../core/geom/Quaternion.js";
|
|
5
6
|
import Vector3 from '../../../../../core/geom/Vector3.js';
|
|
6
7
|
import { lerp } from "../../../../../core/math/lerp.js";
|
|
7
8
|
import { max2 } from "../../../../../core/math/max2.js";
|
|
9
|
+
import { sign_not_zero } from "../../../../../core/math/sign_not_zero.js";
|
|
8
10
|
|
|
9
11
|
const m4 = new Matrix4();
|
|
10
12
|
const angles = [];
|
|
@@ -25,10 +27,12 @@ export function rotate_from_view(displacement_x, displacement_y, input, output)
|
|
|
25
27
|
const i_yaw = normalize_angle_rad(input.yaw);
|
|
26
28
|
const i_roll = normalize_angle_rad(input.roll);
|
|
27
29
|
|
|
28
|
-
const
|
|
30
|
+
const quaternion = Quaternion.fromEulerAngles(i_pitch, i_yaw, i_roll);
|
|
31
|
+
const forward = Vector3.up.clone();
|
|
32
|
+
forward.applyQuaternion(quaternion);
|
|
29
33
|
|
|
30
34
|
// flip rotation axis when pitch is over 90deg in either direction, that is UP vector is pointing down
|
|
31
|
-
const d_yaw =
|
|
35
|
+
const d_yaw = sign_not_zero(forward.y) * displacement_x;
|
|
32
36
|
|
|
33
37
|
output.yaw = i_yaw + d_yaw;
|
|
34
38
|
output.pitch = i_pitch - displacement_y;
|