@adatechnology/game-vehicles 0.4.0 → 0.4.1

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.
@@ -2957,6 +2957,58 @@ var GameVehicles = (() => {
2957
2957
  Object.assign(I, { roundedBoxGeometry, taper, subdivide, crease, pathShape, tumble, loftGeometry, hullGeometry, cutGeometry, mergeGeometries, uvProject });
2958
2958
  }
2959
2959
 
2960
+ // ../game-contracts/dist/index.js
2961
+ var DEFAULT_IGNITION_RULES = {
2962
+ fillCurve: [
2963
+ [0, 0.6],
2964
+ [0.1, 1],
2965
+ [0.35, 0.6],
2966
+ [0.65, 0.3],
2967
+ [0.9, 0.15],
2968
+ [1, 0.12]
2969
+ ],
2970
+ flameFillInfluence: 0.5,
2971
+ flameDefaults: { incendiary: 0.7, tracer: 0.2 },
2972
+ sparkTarget: { steel: 1, iron: 1, aluminium: 0.25 },
2973
+ sparkMetalDefault: 0.5,
2974
+ sparkFluid: { diesel: 0.15 },
2975
+ fireNear: { radius: 1.5, chancePerSecond: 0.5 }
2976
+ };
2977
+ var resolveIgnitionRules = (rules) => ({
2978
+ ...DEFAULT_IGNITION_RULES,
2979
+ ...rules,
2980
+ flameDefaults: { ...DEFAULT_IGNITION_RULES.flameDefaults, ...rules?.flameDefaults },
2981
+ sparkTarget: { ...DEFAULT_IGNITION_RULES.sparkTarget, ...rules?.sparkTarget },
2982
+ sparkFluid: { ...DEFAULT_IGNITION_RULES.sparkFluid, ...rules?.sparkFluid },
2983
+ fireNear: { ...DEFAULT_IGNITION_RULES.fireNear, ...rules?.fireNear }
2984
+ });
2985
+ var fillFactor = (fill, curve = DEFAULT_IGNITION_RULES.fillCurve) => {
2986
+ if (curve.length === 0) return 1;
2987
+ const f = Math.min(1, Math.max(0, fill));
2988
+ if (f <= curve[0][0]) return curve[0][1];
2989
+ for (let i = 1; i < curve.length; i++) {
2990
+ const [x1, y1] = curve[i];
2991
+ const [x0, y0] = curve[i - 1];
2992
+ if (f <= x1) return x1 === x0 ? y1 : y0 + (y1 - y0) * (f - x0) / (x1 - x0);
2993
+ }
2994
+ return curve[curve.length - 1][1];
2995
+ };
2996
+ var sparkTargetFactor = (materialId, metal, rules = DEFAULT_IGNITION_RULES) => !metal ? 0 : rules.sparkTarget[materialId] ?? rules.sparkMetalDefault;
2997
+ var ignitionChance = (hit, target, rules = DEFAULT_IGNITION_RULES) => {
2998
+ const k = fillFactor(target.fill, rules.fillCurve);
2999
+ const spark = (hit.ignition?.spark ?? 0) * target.sparkTarget * (target.fluid === void 0 ? 1 : rules.sparkFluid[target.fluid] ?? 1) * k;
3000
+ const flameBase = hit.ignition?.flame ?? Math.max(hit.incendiary ? rules.flameDefaults.incendiary : 0, hit.tracer ? rules.flameDefaults.tracer : 0);
3001
+ const flame = flameBase * (1 - rules.flameFillInfluence * (1 - k));
3002
+ return 1 - (1 - Math.min(1, Math.max(0, spark))) * (1 - Math.min(1, Math.max(0, flame)));
3003
+ };
3004
+ var KIT_ORIGIN_KEY = "kitOrigin";
3005
+ function markKitOrigin(object2, origin) {
3006
+ const node = object2;
3007
+ node.userData = node.userData ?? {};
3008
+ node.userData[KIT_ORIGIN_KEY] = { ...origin };
3009
+ return object2;
3010
+ }
3011
+
2960
3012
  // src/context.ts
2961
3013
  function installContext(kit) {
2962
3014
  const THREE = kit.THREE;
@@ -2977,6 +3029,7 @@ var GameVehicles = (() => {
2977
3029
  this.effects = new THREE.Group();
2978
3030
  this.root.add(this.vehicle);
2979
3031
  this.root.add(this.effects);
3032
+ markKitOrigin(this.root, { owner: "game-vehicles", kind: "vehicle" });
2980
3033
  this.state = state;
2981
3034
  this.glass = [];
2982
3035
  this.quads = [];
@@ -11965,51 +12018,6 @@ var GameVehicles = (() => {
11965
12018
  return kit;
11966
12019
  }
11967
12020
 
11968
- // ../game-contracts/dist/index.js
11969
- var DEFAULT_IGNITION_RULES = {
11970
- fillCurve: [
11971
- [0, 0.6],
11972
- [0.1, 1],
11973
- [0.35, 0.6],
11974
- [0.65, 0.3],
11975
- [0.9, 0.15],
11976
- [1, 0.12]
11977
- ],
11978
- flameFillInfluence: 0.5,
11979
- flameDefaults: { incendiary: 0.7, tracer: 0.2 },
11980
- sparkTarget: { steel: 1, iron: 1, aluminium: 0.25 },
11981
- sparkMetalDefault: 0.5,
11982
- sparkFluid: { diesel: 0.15 },
11983
- fireNear: { radius: 1.5, chancePerSecond: 0.5 }
11984
- };
11985
- var resolveIgnitionRules = (rules) => ({
11986
- ...DEFAULT_IGNITION_RULES,
11987
- ...rules,
11988
- flameDefaults: { ...DEFAULT_IGNITION_RULES.flameDefaults, ...rules?.flameDefaults },
11989
- sparkTarget: { ...DEFAULT_IGNITION_RULES.sparkTarget, ...rules?.sparkTarget },
11990
- sparkFluid: { ...DEFAULT_IGNITION_RULES.sparkFluid, ...rules?.sparkFluid },
11991
- fireNear: { ...DEFAULT_IGNITION_RULES.fireNear, ...rules?.fireNear }
11992
- });
11993
- var fillFactor = (fill, curve = DEFAULT_IGNITION_RULES.fillCurve) => {
11994
- if (curve.length === 0) return 1;
11995
- const f = Math.min(1, Math.max(0, fill));
11996
- if (f <= curve[0][0]) return curve[0][1];
11997
- for (let i = 1; i < curve.length; i++) {
11998
- const [x1, y1] = curve[i];
11999
- const [x0, y0] = curve[i - 1];
12000
- if (f <= x1) return x1 === x0 ? y1 : y0 + (y1 - y0) * (f - x0) / (x1 - x0);
12001
- }
12002
- return curve[curve.length - 1][1];
12003
- };
12004
- var sparkTargetFactor = (materialId, metal, rules = DEFAULT_IGNITION_RULES) => !metal ? 0 : rules.sparkTarget[materialId] ?? rules.sparkMetalDefault;
12005
- var ignitionChance = (hit, target, rules = DEFAULT_IGNITION_RULES) => {
12006
- const k = fillFactor(target.fill, rules.fillCurve);
12007
- const spark = (hit.ignition?.spark ?? 0) * target.sparkTarget * (target.fluid === void 0 ? 1 : rules.sparkFluid[target.fluid] ?? 1) * k;
12008
- const flameBase = hit.ignition?.flame ?? Math.max(hit.incendiary ? rules.flameDefaults.incendiary : 0, hit.tracer ? rules.flameDefaults.tracer : 0);
12009
- const flame = flameBase * (1 - rules.flameFillInfluence * (1 - k));
12010
- return 1 - (1 - Math.min(1, Math.max(0, spark))) * (1 - Math.min(1, Math.max(0, flame)));
12011
- };
12012
-
12013
12021
  // src/destructible/model.ts
12014
12022
  var JOINT_RULES = {
12015
12023
  hinge: { strength: 5e3, tools: ["wrench", "screwdriver"], seconds: 3 },