@adatechnology/game-floorplan-structure 1.2.0 → 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.
@@ -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;