quake2ts 0.0.174 → 0.0.176
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/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +3 -3
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/browser/index.global.js +8 -8
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +64 -3
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +64 -3
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/assets/bsp.d.ts +18 -0
- package/packages/engine/dist/types/assets/bsp.d.ts.map +1 -1
- package/packages/engine/dist/types/render/bsp/geometry.d.ts +4 -1
- package/packages/engine/dist/types/render/bsp/geometry.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +2 -2
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +120 -70
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +120 -70
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/combat/damage.d.ts +2 -2
- package/packages/game/dist/types/combat/damage.d.ts.map +1 -1
- package/packages/game/dist/types/combat/specialDamage.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/firing.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/attack.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/berserk.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/mutant.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/parasite.d.ts.map +1 -1
- package/packages/game/dist/types/entities/projectiles/rocket.d.ts.map +1 -1
- package/packages/game/dist/types/entities/projectiles.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts +2 -0
- package/packages/game/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/playerInventory.d.ts +3 -1
- package/packages/game/dist/types/inventory/playerInventory.d.ts.map +1 -1
- package/packages/server/dist/index.cjs +38 -24
- package/packages/server/dist/index.d.cts +5 -6
- package/packages/server/dist/index.d.ts +5 -6
- package/packages/server/dist/index.js +38 -24
|
@@ -1855,7 +1855,7 @@ function parseBsp(buffer) {
|
|
|
1855
1855
|
const brushSides = parseBrushSides(buffer, lumps.get(15 /* BrushSides */));
|
|
1856
1856
|
const leafLists = parseLeafLists(buffer, lumps.get(9 /* LeafFaces */), lumps.get(10 /* LeafBrushes */), leafs);
|
|
1857
1857
|
const visibility = parseVisibility(buffer, lumps.get(3 /* Visibility */));
|
|
1858
|
-
|
|
1858
|
+
const map = {
|
|
1859
1859
|
header,
|
|
1860
1860
|
entities,
|
|
1861
1861
|
planes,
|
|
@@ -1872,14 +1872,75 @@ function parseBsp(buffer) {
|
|
|
1872
1872
|
models,
|
|
1873
1873
|
brushes,
|
|
1874
1874
|
brushSides,
|
|
1875
|
-
visibility
|
|
1875
|
+
visibility,
|
|
1876
|
+
pickEntity(ray) {
|
|
1877
|
+
let closest = null;
|
|
1878
|
+
let minDistance = Infinity;
|
|
1879
|
+
for (const entity of entities.entities) {
|
|
1880
|
+
const modelKey = entity.properties["model"];
|
|
1881
|
+
if (!modelKey || !modelKey.startsWith("*")) {
|
|
1882
|
+
continue;
|
|
1883
|
+
}
|
|
1884
|
+
const modelIndex = parseInt(modelKey.substring(1), 10);
|
|
1885
|
+
if (isNaN(modelIndex) || modelIndex < 0 || modelIndex >= models.length) {
|
|
1886
|
+
continue;
|
|
1887
|
+
}
|
|
1888
|
+
const model = models[modelIndex];
|
|
1889
|
+
const dist = intersectRayAabb(ray.origin, ray.direction, model.mins, model.maxs);
|
|
1890
|
+
if (dist !== null && dist < minDistance) {
|
|
1891
|
+
minDistance = dist;
|
|
1892
|
+
closest = { entity, model, distance: dist };
|
|
1893
|
+
}
|
|
1894
|
+
}
|
|
1895
|
+
return closest;
|
|
1896
|
+
}
|
|
1876
1897
|
};
|
|
1898
|
+
return map;
|
|
1899
|
+
}
|
|
1900
|
+
function intersectRayAabb(origin, direction, mins, maxs) {
|
|
1901
|
+
let tmin = 0;
|
|
1902
|
+
let tmax = Infinity;
|
|
1903
|
+
for (let i = 0; i < 3; i++) {
|
|
1904
|
+
if (Math.abs(direction[i]) < 1e-8) {
|
|
1905
|
+
if (origin[i] < mins[i] || origin[i] > maxs[i]) {
|
|
1906
|
+
return null;
|
|
1907
|
+
}
|
|
1908
|
+
} else {
|
|
1909
|
+
const invD = 1 / direction[i];
|
|
1910
|
+
let t0 = (mins[i] - origin[i]) * invD;
|
|
1911
|
+
let t1 = (maxs[i] - origin[i]) * invD;
|
|
1912
|
+
if (t0 > t1) {
|
|
1913
|
+
const temp = t0;
|
|
1914
|
+
t0 = t1;
|
|
1915
|
+
t1 = temp;
|
|
1916
|
+
}
|
|
1917
|
+
tmin = Math.max(tmin, t0);
|
|
1918
|
+
tmax = Math.min(tmax, t1);
|
|
1919
|
+
if (tmin > tmax) {
|
|
1920
|
+
return null;
|
|
1921
|
+
}
|
|
1922
|
+
}
|
|
1923
|
+
}
|
|
1924
|
+
return tmin;
|
|
1877
1925
|
}
|
|
1878
1926
|
function parseEntities(buffer, info) {
|
|
1879
1927
|
const raw = new TextDecoder().decode(new Uint8Array(buffer, info.offset, info.length));
|
|
1880
1928
|
const entities = parseEntityString(raw);
|
|
1881
1929
|
const worldspawn = entities.find((ent) => ent.classname === "worldspawn");
|
|
1882
|
-
return {
|
|
1930
|
+
return {
|
|
1931
|
+
raw,
|
|
1932
|
+
entities,
|
|
1933
|
+
worldspawn,
|
|
1934
|
+
getUniqueClassnames() {
|
|
1935
|
+
const classnames = /* @__PURE__ */ new Set();
|
|
1936
|
+
for (const entity of entities) {
|
|
1937
|
+
if (entity.classname) {
|
|
1938
|
+
classnames.add(entity.classname);
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
return Array.from(classnames).sort();
|
|
1942
|
+
}
|
|
1943
|
+
};
|
|
1883
1944
|
}
|
|
1884
1945
|
function parseEntityString(text) {
|
|
1885
1946
|
const entities = [];
|