@adatechnology/game-floorplan-structure 1.2.1 → 1.2.2
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/dist/index.global.js +26 -3
- package/dist/index.global.js.map +1 -1
- package/package.json +5 -5
package/dist/index.global.js
CHANGED
|
@@ -2755,6 +2755,23 @@ var GameFloorplanStructure = (() => {
|
|
|
2755
2755
|
return angle === 0 ? q : quat.mul(q, quat.fromAxisAngle([0, 0, 1], angle));
|
|
2756
2756
|
};
|
|
2757
2757
|
var clamp3 = (v, a, b) => Math.max(a, Math.min(b, v));
|
|
2758
|
+
var tearStack = (inp, root, t, u, v, n, sheet) => {
|
|
2759
|
+
const { dims, rnd, maxFragments } = inp;
|
|
2760
|
+
const layers = clamp3(Math.ceil(dims[t] / STACK_LAYER), 2, 4);
|
|
2761
|
+
const per = clamp3(n, 3, Math.max(3, Math.floor(maxFragments / layers)));
|
|
2762
|
+
const out = [];
|
|
2763
|
+
for (let k = 0; k < layers; k++) {
|
|
2764
|
+
const off = -dims[t] / 2 + (k + 0.5) * dims[t] / layers;
|
|
2765
|
+
for (const b of bsp(root, per, [u, v], rnd)) {
|
|
2766
|
+
if (out.length >= maxFragments) return out;
|
|
2767
|
+
const c = [b.c[0], b.c[1], b.c[2]];
|
|
2768
|
+
c[t] = off;
|
|
2769
|
+
out.push({ center: c, size: [b.s[u], b.s[v], sheet], q: frame(u, v, t, (rnd() - 0.5) * 0.8), shape: "scrap", weight: b.s[u] * b.s[v], inner: out.length % 4 !== 0 });
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
return out;
|
|
2773
|
+
};
|
|
2774
|
+
var STACK_LAYER = 0.012;
|
|
2758
2775
|
var planFragments = (inp) => {
|
|
2759
2776
|
const { style, dims, rnd, maxFragments } = inp;
|
|
2760
2777
|
const [fmin, fmax] = inp.fragmentSize;
|
|
@@ -2797,6 +2814,8 @@ var GameFloorplanStructure = (() => {
|
|
|
2797
2814
|
}
|
|
2798
2815
|
if (style === "tear") {
|
|
2799
2816
|
const n2 = clamp3(Math.round(dims[u] * dims[v] / (mean * mean)), 3, maxFragments);
|
|
2817
|
+
const sheet = inp.sheet ?? 0;
|
|
2818
|
+
if (sheet > 0 && dims[t] > sheet * 4) return tearStack(inp, root, t, u, v, n2, sheet);
|
|
2800
2819
|
const th2 = Math.min(inp.thickness, dims[t]);
|
|
2801
2820
|
for (const b of bsp(root, n2, [u, v], rnd)) {
|
|
2802
2821
|
out.push({ center: [b.c[0], b.c[1], b.c[2]], size: [b.s[u], b.s[v], th2], q: frame(u, v, t), shape: "scrap", weight: b.s[u] * b.s[v] });
|
|
@@ -4379,6 +4398,7 @@ var GameFloorplanStructure = (() => {
|
|
|
4379
4398
|
0.03,
|
|
4380
4399
|
0.15
|
|
4381
4400
|
],
|
|
4401
|
+
sheet: 1e-3,
|
|
4382
4402
|
damageScale: {
|
|
4383
4403
|
slash: 3
|
|
4384
4404
|
},
|
|
@@ -4394,7 +4414,8 @@ var GameFloorplanStructure = (() => {
|
|
|
4394
4414
|
smoke: "grey"
|
|
4395
4415
|
},
|
|
4396
4416
|
visual: {
|
|
4397
|
-
charColor: 1709072
|
|
4417
|
+
charColor: 1709072,
|
|
4418
|
+
innerColor: 15524048
|
|
4398
4419
|
},
|
|
4399
4420
|
tags: [
|
|
4400
4421
|
"fabric",
|
|
@@ -6107,7 +6128,8 @@ var GameFloorplanStructure = (() => {
|
|
|
6107
6128
|
hit: hitLocal,
|
|
6108
6129
|
fragmentSize: p.mat.fragmentSize ?? [0.04, 0.2],
|
|
6109
6130
|
maxFragments,
|
|
6110
|
-
rnd
|
|
6131
|
+
rnd,
|
|
6132
|
+
sheet: p.mat.sheet
|
|
6111
6133
|
});
|
|
6112
6134
|
const holes = p.st.holes.length > 0 ? localHolesOf(p) : [];
|
|
6113
6135
|
const mass = p.st.mass;
|
|
@@ -6131,7 +6153,8 @@ var GameFloorplanStructure = (() => {
|
|
|
6131
6153
|
velocity: [dv[0] * k, dv[1] * k + 0.5 * rnd(), dv[2] * k],
|
|
6132
6154
|
angularVelocity: [(rnd() - 0.5) * 12, (rnd() - 0.5) * 12, (rnd() - 0.5) * 12],
|
|
6133
6155
|
mass: mass * f.weight / totW,
|
|
6134
|
-
...marks.length > 0 ? { marks } : {}
|
|
6156
|
+
...marks.length > 0 ? { marks } : {},
|
|
6157
|
+
...f.inner ? { inner: true } : {}
|
|
6135
6158
|
};
|
|
6136
6159
|
});
|
|
6137
6160
|
const reinforcement = p.spec.reinforcement;
|