@woosh/meep-engine 2.119.89 → 2.119.90
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
CHANGED
|
@@ -7,4 +7,6 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
7
7
|
static from_translation_scale(subject: AbstractShape3D, translation: ArrayLike<number>, scale: ArrayLike<number>): TransformedShape3D
|
|
8
8
|
|
|
9
9
|
static from_scale(subject: AbstractShape3D, scale: ArrayLike<number>): TransformedShape3D
|
|
10
|
+
|
|
11
|
+
static from_translation(subject: AbstractShape3D, translation: ArrayLike<number>): TransformedShape3D
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformedShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/TransformedShape3D.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TransformedShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/TransformedShape3D.js"],"names":[],"mappings":"AAkBA;IAkCI;;;;;OAKG;IACH,wBAHW,eAAe,MADf,MAAM,EAAE,GAAC,YAAY,OAAK,GAExB,kBAAkB,CAS9B;IAED;;;;;OAKG;IACH,uCAJW,eAAe,eACf,MAAM,EAAE,SACR,MAAM,EAAE,sBAclB;IAED;;;;OAIG;IACH,iCAHW,eAAe,eACf,MAAM,EAAE,sBAIlB;IAED;;;;;OAKG;IACH,2BAHW,eAAe,SACf,MAAM,EAAE,GAAC,YAAY,OAAK,GAFxB,kBAAkB,CAW9B;IAvFG;;;;OAIG;IACH,iBAAoC;IAEpC;;;;OAIG;IACH,yBAA4C;IAE5C;;;;OAIG;IACH,kBAAqB;IAGzB;;;OAGG;IACH,+BAEC;IA6DD;;;OAGG;IACH,4CAIC;IAED,yCAEC;IAED,qBAMC;IAED,wCAKC;IAED,mEAgDC;IAED,6CAEC;IAED,gCAKC;IAED,kFAIC;IAED,qGAMC;IAED;;;;OAIG;IACH,cAHW,kBAAkB,GAChB,OAAO,CAOnB;IAED,eAGC;CACJ;;8BAIS,OAAO;;gCAjOe,sBAAsB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Transform } from "../../../../engine/ecs/transform/Transform.js";
|
|
2
2
|
import { assert } from "../../../assert.js";
|
|
3
3
|
import { isArrayEqualStrict } from "../../../collection/array/isArrayEqualStrict.js";
|
|
4
4
|
import { computeHashFloatArray } from "../../../math/hash/computeHashFloatArray.js";
|
|
@@ -6,6 +6,8 @@ import { sign } from "../../../math/sign.js";
|
|
|
6
6
|
import { v3_length } from "../../vec3/v3_length.js";
|
|
7
7
|
import { v3_matrix4_multiply } from "../../vec3/v3_matrix4_multiply.js";
|
|
8
8
|
import { aabb3_matrix4_project } from "../aabb/aabb3_matrix4_project.js";
|
|
9
|
+
import { m4_extract_scale } from "../m4_extract_scale.js";
|
|
10
|
+
import { m4_invert } from "../mat4/m4_invert.js";
|
|
9
11
|
import { AbstractShape3D } from "./AbstractShape3D.js";
|
|
10
12
|
|
|
11
13
|
/**
|
|
@@ -71,15 +73,16 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
71
73
|
*/
|
|
72
74
|
static from_translation_scale(subject, translation, scale) {
|
|
73
75
|
|
|
74
|
-
assert.isArrayLike(translation,'translation');
|
|
75
|
-
assert.greaterThanOrEqual(translation.length,3,'translation length must be >= 3');
|
|
76
|
-
assert.isArrayLike(scale,'scale');
|
|
77
|
-
assert.greaterThanOrEqual(scale.length,3,'scale length must be >= 3');
|
|
76
|
+
assert.isArrayLike(translation, 'translation');
|
|
77
|
+
assert.greaterThanOrEqual(translation.length, 3, 'translation length must be >= 3');
|
|
78
|
+
assert.isArrayLike(scale, 'scale');
|
|
79
|
+
assert.greaterThanOrEqual(scale.length, 3, 'scale length must be >= 3');
|
|
78
80
|
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
+
const t = new Transform();
|
|
82
|
+
t.scale.fromArray(scale);
|
|
83
|
+
t.position.fromArray(translation);
|
|
81
84
|
|
|
82
|
-
return TransformedShape3D.from_m4(subject,
|
|
85
|
+
return TransformedShape3D.from_m4(subject, t.matrix);
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
/**
|
|
@@ -98,10 +101,12 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
98
101
|
* @param {number[]|Float32Array|vec3} scale
|
|
99
102
|
*/
|
|
100
103
|
static from_scale(subject, scale) {
|
|
101
|
-
const mat = mat4.create();
|
|
102
|
-
mat4.fromScaling(mat, scale);
|
|
103
104
|
|
|
104
|
-
|
|
105
|
+
const t = new Transform();
|
|
106
|
+
t.scale.fromArray(scale);
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
return TransformedShape3D.from_m4(subject, t.matrix);
|
|
105
110
|
}
|
|
106
111
|
|
|
107
112
|
/**
|
|
@@ -111,7 +116,7 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
111
116
|
set transform(m) {
|
|
112
117
|
this.__matrix.set(m);
|
|
113
118
|
|
|
114
|
-
|
|
119
|
+
m4_invert(this.__inverse_matrix, this.__matrix);
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
get transform() {
|
|
@@ -119,7 +124,7 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
119
124
|
}
|
|
120
125
|
|
|
121
126
|
get volume() {
|
|
122
|
-
|
|
127
|
+
m4_extract_scale(scratch_v3_0, 0, this.__matrix);
|
|
123
128
|
|
|
124
129
|
const scale_modifier = scratch_v3_0[0] * scratch_v3_0[1] * scratch_v3_0[2];
|
|
125
130
|
|
|
@@ -189,7 +194,7 @@ export class TransformedShape3D extends AbstractShape3D {
|
|
|
189
194
|
|
|
190
195
|
contains_point(point) {
|
|
191
196
|
// transform point to subject's local space
|
|
192
|
-
|
|
197
|
+
v3_matrix4_multiply(scratch_v3_0, 0, point, 0, this.__inverse_matrix);
|
|
193
198
|
|
|
194
199
|
return this.__subject.contains_point(scratch_v3_0);
|
|
195
200
|
}
|