@adatechnology/game-vehicles-three 0.3.0 → 0.3.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.
@@ -41,6 +41,84 @@ var GameVehiclesThree = (() => {
41
41
  loadVehiclesTestModule: () => loadVehiclesTestModule
42
42
  });
43
43
 
44
+ // ../game-contracts/dist/index.js
45
+ var DEFAULT_IGNITION_RULES = {
46
+ fillCurve: [
47
+ [0, 0.6],
48
+ [0.1, 1],
49
+ [0.35, 0.6],
50
+ [0.65, 0.3],
51
+ [0.9, 0.15],
52
+ [1, 0.12]
53
+ ],
54
+ flameFillInfluence: 0.5,
55
+ flameDefaults: { incendiary: 0.7, tracer: 0.2 },
56
+ sparkTarget: { steel: 1, iron: 1, aluminium: 0.25 },
57
+ sparkMetalDefault: 0.5,
58
+ sparkFluid: { diesel: 0.15 },
59
+ fireNear: { radius: 1.5, chancePerSecond: 0.5 }
60
+ };
61
+ var resolveIgnitionRules = (rules) => ({
62
+ ...DEFAULT_IGNITION_RULES,
63
+ ...rules,
64
+ flameDefaults: { ...DEFAULT_IGNITION_RULES.flameDefaults, ...rules?.flameDefaults },
65
+ sparkTarget: { ...DEFAULT_IGNITION_RULES.sparkTarget, ...rules?.sparkTarget },
66
+ sparkFluid: { ...DEFAULT_IGNITION_RULES.sparkFluid, ...rules?.sparkFluid },
67
+ fireNear: { ...DEFAULT_IGNITION_RULES.fireNear, ...rules?.fireNear }
68
+ });
69
+ var fillFactor = (fill2, curve = DEFAULT_IGNITION_RULES.fillCurve) => {
70
+ if (curve.length === 0) return 1;
71
+ const f = Math.min(1, Math.max(0, fill2));
72
+ if (f <= curve[0][0]) return curve[0][1];
73
+ for (let i = 1; i < curve.length; i++) {
74
+ const [x1, y1] = curve[i];
75
+ const [x0, y0] = curve[i - 1];
76
+ if (f <= x1) return x1 === x0 ? y1 : y0 + (y1 - y0) * (f - x0) / (x1 - x0);
77
+ }
78
+ return curve[curve.length - 1][1];
79
+ };
80
+ var sparkTargetFactor = (materialId, metal, rules = DEFAULT_IGNITION_RULES) => !metal ? 0 : rules.sparkTarget[materialId] ?? rules.sparkMetalDefault;
81
+ var ignitionChance = (hit, target, rules = DEFAULT_IGNITION_RULES) => {
82
+ const k = fillFactor(target.fill, rules.fillCurve);
83
+ const spark = (hit.ignition?.spark ?? 0) * target.sparkTarget * (target.fluid === void 0 ? 1 : rules.sparkFluid[target.fluid] ?? 1) * k;
84
+ const flameBase = hit.ignition?.flame ?? Math.max(hit.incendiary ? rules.flameDefaults.incendiary : 0, hit.tracer ? rules.flameDefaults.tracer : 0);
85
+ const flame = flameBase * (1 - rules.flameFillInfluence * (1 - k));
86
+ return 1 - (1 - Math.min(1, Math.max(0, spark))) * (1 - Math.min(1, Math.max(0, flame)));
87
+ };
88
+ var UNSAFE_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
89
+ var isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
90
+ var deepMerge = (base, patch) => {
91
+ if (!patch) return base;
92
+ const result = { ...base };
93
+ for (const [key, value] of Object.entries(patch)) {
94
+ if (value === void 0 || UNSAFE_KEYS.has(key)) continue;
95
+ const current = result[key];
96
+ result[key] = isPlainObject(current) && isPlainObject(value) ? deepMerge(current, value) : value;
97
+ }
98
+ return result;
99
+ };
100
+ var mergeById = (shipped, extra) => {
101
+ const entries = /* @__PURE__ */ new Map();
102
+ for (const entry of [...shipped, ...extra ?? []]) entries.set(entry.id, entry);
103
+ return entries;
104
+ };
105
+ var applyPatches = (entries, patches) => {
106
+ for (const [id, patch] of Object.entries(patches ?? {})) {
107
+ const entry = entries.get(id);
108
+ if (entry) entries.set(id, deepMerge(entry, patch));
109
+ }
110
+ };
111
+ var removeIds = (entries, ids) => {
112
+ for (const id of ids ?? []) entries.delete(id);
113
+ };
114
+ var KIT_ORIGIN_KEY = "kitOrigin";
115
+ function markKitOrigin(object2, origin) {
116
+ const node = object2;
117
+ node.userData = node.userData ?? {};
118
+ node.userData[KIT_ORIGIN_KEY] = { ...origin };
119
+ return object2;
120
+ }
121
+
44
122
  // ../game-vehicles-fleet/dist/index.js
45
123
  var military = [
46
124
  "light_4x4",
@@ -27826,6 +27904,7 @@ var GameVehiclesThree = (() => {
27826
27904
  const pivotMatrix = new THREE.Matrix4().makeTranslation(-cx, -bounds.min.y, -cz).multiply(rotation);
27827
27905
  const group = new THREE.Group();
27828
27906
  group.name = `vehicle:${key}`;
27907
+ markKitOrigin(group, { owner: "game-vehicles-three", kind: "vehicle", id: key });
27829
27908
  const damageables = kit.damageables(c, pivotMatrix);
27830
27909
  let pruned = 0;
27831
27910
  if (quality === "high") {
@@ -29413,77 +29492,6 @@ var GameVehiclesThree = (() => {
29413
29492
  return result;
29414
29493
  }
29415
29494
 
29416
- // ../game-contracts/dist/index.js
29417
- var DEFAULT_IGNITION_RULES = {
29418
- fillCurve: [
29419
- [0, 0.6],
29420
- [0.1, 1],
29421
- [0.35, 0.6],
29422
- [0.65, 0.3],
29423
- [0.9, 0.15],
29424
- [1, 0.12]
29425
- ],
29426
- flameFillInfluence: 0.5,
29427
- flameDefaults: { incendiary: 0.7, tracer: 0.2 },
29428
- sparkTarget: { steel: 1, iron: 1, aluminium: 0.25 },
29429
- sparkMetalDefault: 0.5,
29430
- sparkFluid: { diesel: 0.15 },
29431
- fireNear: { radius: 1.5, chancePerSecond: 0.5 }
29432
- };
29433
- var resolveIgnitionRules = (rules) => ({
29434
- ...DEFAULT_IGNITION_RULES,
29435
- ...rules,
29436
- flameDefaults: { ...DEFAULT_IGNITION_RULES.flameDefaults, ...rules?.flameDefaults },
29437
- sparkTarget: { ...DEFAULT_IGNITION_RULES.sparkTarget, ...rules?.sparkTarget },
29438
- sparkFluid: { ...DEFAULT_IGNITION_RULES.sparkFluid, ...rules?.sparkFluid },
29439
- fireNear: { ...DEFAULT_IGNITION_RULES.fireNear, ...rules?.fireNear }
29440
- });
29441
- var fillFactor = (fill2, curve = DEFAULT_IGNITION_RULES.fillCurve) => {
29442
- if (curve.length === 0) return 1;
29443
- const f = Math.min(1, Math.max(0, fill2));
29444
- if (f <= curve[0][0]) return curve[0][1];
29445
- for (let i = 1; i < curve.length; i++) {
29446
- const [x1, y1] = curve[i];
29447
- const [x0, y0] = curve[i - 1];
29448
- if (f <= x1) return x1 === x0 ? y1 : y0 + (y1 - y0) * (f - x0) / (x1 - x0);
29449
- }
29450
- return curve[curve.length - 1][1];
29451
- };
29452
- var sparkTargetFactor = (materialId, metal, rules = DEFAULT_IGNITION_RULES) => !metal ? 0 : rules.sparkTarget[materialId] ?? rules.sparkMetalDefault;
29453
- var ignitionChance = (hit, target, rules = DEFAULT_IGNITION_RULES) => {
29454
- const k = fillFactor(target.fill, rules.fillCurve);
29455
- const spark = (hit.ignition?.spark ?? 0) * target.sparkTarget * (target.fluid === void 0 ? 1 : rules.sparkFluid[target.fluid] ?? 1) * k;
29456
- const flameBase = hit.ignition?.flame ?? Math.max(hit.incendiary ? rules.flameDefaults.incendiary : 0, hit.tracer ? rules.flameDefaults.tracer : 0);
29457
- const flame = flameBase * (1 - rules.flameFillInfluence * (1 - k));
29458
- return 1 - (1 - Math.min(1, Math.max(0, spark))) * (1 - Math.min(1, Math.max(0, flame)));
29459
- };
29460
- var UNSAFE_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
29461
- var isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
29462
- var deepMerge = (base, patch) => {
29463
- if (!patch) return base;
29464
- const result = { ...base };
29465
- for (const [key, value] of Object.entries(patch)) {
29466
- if (value === void 0 || UNSAFE_KEYS.has(key)) continue;
29467
- const current = result[key];
29468
- result[key] = isPlainObject(current) && isPlainObject(value) ? deepMerge(current, value) : value;
29469
- }
29470
- return result;
29471
- };
29472
- var mergeById = (shipped, extra) => {
29473
- const entries = /* @__PURE__ */ new Map();
29474
- for (const entry of [...shipped, ...extra ?? []]) entries.set(entry.id, entry);
29475
- return entries;
29476
- };
29477
- var applyPatches = (entries, patches) => {
29478
- for (const [id, patch] of Object.entries(patches ?? {})) {
29479
- const entry = entries.get(id);
29480
- if (entry) entries.set(id, deepMerge(entry, patch));
29481
- }
29482
- };
29483
- var removeIds = (entries, ids) => {
29484
- for (const id of ids ?? []) entries.delete(id);
29485
- };
29486
-
29487
29495
  // ../game-vehicles/dist/index.js
29488
29496
  var __defProp2 = Object.defineProperty;
29489
29497
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -30879,6 +30887,7 @@ var GameVehiclesThree = (() => {
30879
30887
  this.effects = new THREE.Group();
30880
30888
  this.root.add(this.vehicle);
30881
30889
  this.root.add(this.effects);
30890
+ markKitOrigin(this.root, { owner: "game-vehicles", kind: "vehicle" });
30882
30891
  this.state = state;
30883
30892
  this.glass = [];
30884
30893
  this.quads = [];