@adatechnology/game-destruction-three 0.8.2 → 0.9.0
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 +21 -4
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.global.js
CHANGED
|
@@ -8620,6 +8620,9 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
8620
8620
|
}
|
|
8621
8621
|
|
|
8622
8622
|
// src/fragments.ts
|
|
8623
|
+
var SHEET_MAX = 4e-3;
|
|
8624
|
+
var SHEET_AIR = 2.5;
|
|
8625
|
+
var SHEET_SWAY = 3;
|
|
8623
8626
|
var FragmentSystem = class {
|
|
8624
8627
|
constructor(THREE, o) {
|
|
8625
8628
|
__publicField(this, "THREE", THREE);
|
|
@@ -8725,7 +8728,8 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
8725
8728
|
asleep: false,
|
|
8726
8729
|
rest: 0,
|
|
8727
8730
|
fade: 1,
|
|
8728
|
-
dying: false
|
|
8731
|
+
dying: false,
|
|
8732
|
+
air: f.shape === "scrap" && sz[2] <= SHEET_MAX ? SHEET_AIR : 0
|
|
8729
8733
|
};
|
|
8730
8734
|
this.list.push(live);
|
|
8731
8735
|
let alive = this.list.reduce((n, l) => n + (l.dying ? 0 : 1), 0);
|
|
@@ -8809,6 +8813,7 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
8809
8813
|
}
|
|
8810
8814
|
} else {
|
|
8811
8815
|
f.ang.multiplyScalar(Math.exp(-0.15 * dt));
|
|
8816
|
+
if (f.air > 0) this.flutter(f, dt);
|
|
8812
8817
|
}
|
|
8813
8818
|
if (contact && f.vel.lengthSq() < 4) this.settle(f, dt);
|
|
8814
8819
|
const slow = f.vel.lengthSq() < 0.012 && f.ang.lengthSq() < 0.2;
|
|
@@ -8823,6 +8828,14 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
8823
8828
|
f.still = 0;
|
|
8824
8829
|
}
|
|
8825
8830
|
}
|
|
8831
|
+
/** A sheet in the air: drag slows it to a slow fall, and it sways and turns over as it goes. */
|
|
8832
|
+
flutter(f, dt) {
|
|
8833
|
+
f.vel.multiplyScalar(Math.exp(-f.air * dt));
|
|
8834
|
+
f.vel.x += (this.rng() - 0.5) * SHEET_SWAY * dt;
|
|
8835
|
+
f.vel.z += (this.rng() - 0.5) * SHEET_SWAY * dt;
|
|
8836
|
+
f.ang.x += (this.rng() - 0.5) * SHEET_SWAY * 4 * dt;
|
|
8837
|
+
f.ang.z += (this.rng() - 0.5) * SHEET_SWAY * 4 * dt;
|
|
8838
|
+
}
|
|
8826
8839
|
/** Tip the fragment towards lying on its flattest face. */
|
|
8827
8840
|
settle(f, dt) {
|
|
8828
8841
|
const mesh2 = f.mesh;
|
|
@@ -10147,6 +10160,7 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
10147
10160
|
0.03,
|
|
10148
10161
|
0.15
|
|
10149
10162
|
],
|
|
10163
|
+
sheet: 1e-3,
|
|
10150
10164
|
damageScale: {
|
|
10151
10165
|
slash: 3
|
|
10152
10166
|
},
|
|
@@ -10162,7 +10176,8 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
10162
10176
|
smoke: "grey"
|
|
10163
10177
|
},
|
|
10164
10178
|
visual: {
|
|
10165
|
-
charColor: 1709072
|
|
10179
|
+
charColor: 1709072,
|
|
10180
|
+
innerColor: 15524048
|
|
10166
10181
|
},
|
|
10167
10182
|
tags: [
|
|
10168
10183
|
"fabric",
|
|
@@ -12273,6 +12288,7 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
12273
12288
|
const def = pv ? this.world.materials.get(pv.material) : void 0;
|
|
12274
12289
|
if (kind === "smoke") return { color: SMOKE_TONES[def?.thermal.smoke ?? "grey"] };
|
|
12275
12290
|
if (kind === "fibers" || kind === "leaves") {
|
|
12291
|
+
if (def?.visual?.innerColor !== void 0) return { color: def.visual.innerColor };
|
|
12276
12292
|
const c = pv ? this.visuals.baseColorHex(pv.meshes[0] ?? {}) : -1;
|
|
12277
12293
|
return c >= 0 ? { color: c } : void 0;
|
|
12278
12294
|
}
|
|
@@ -12421,7 +12437,8 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
12421
12437
|
for (let i = 0; i < ev.fragments.length; i += step) {
|
|
12422
12438
|
const fr = ev.fragments[i];
|
|
12423
12439
|
const fdef = this.world.materials.get(fr.material);
|
|
12424
|
-
const
|
|
12440
|
+
const tone = fr.inner && fdef?.visual?.innerColor !== void 0 ? fdef.visual.innerColor : fdef === def || !fdef ? color : fallbackColor(fr.material, fdef);
|
|
12441
|
+
const mat = this.fragments.materialFor(fr.material, tone, transparent || fdef?.visual?.transparent === true, opacity);
|
|
12425
12442
|
this.fragments.spawn(fr, mat, ev.object, maxAlive);
|
|
12426
12443
|
}
|
|
12427
12444
|
const up = [0, 1, 0];
|
|
@@ -12439,7 +12456,7 @@ void main(){vec2 d=gl_PointCoord-.5;float r=length(d)*2.;if(r>1.)discard;float a
|
|
|
12439
12456
|
this.vfx.burst("dust", ev.point, up, 5, 0.8, { color: 11901556 });
|
|
12440
12457
|
break;
|
|
12441
12458
|
case "tear":
|
|
12442
|
-
this.vfx.burst("fibers", ev.point, up, 12 * sizeK, 1.6, { color });
|
|
12459
|
+
this.vfx.burst("fibers", ev.point, up, 12 * sizeK, 1.6, { color: def?.visual?.innerColor ?? color });
|
|
12443
12460
|
break;
|
|
12444
12461
|
case "snap":
|
|
12445
12462
|
this.vfx.burst("chips", ev.point, up, 8 * sizeK, 3);
|