From f455fe5c35655b2d040fcf2a8d5969c647e7bc25 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 21 Oct 2026 00:42:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(ignore):=20x9o=20=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BF=BD=E7=95=A5=E6=9C=AC=E8=BD=A6=E4=B8=8E?= =?UTF-8?q?=E4=BB=BB=E6=84=8F=E9=9D=99=E6=80=81=E5=BD=A2=E7=8A=B6=E7=9A=84?= =?UTF-8?q?=E7=9B=B8=E4=BA=A4=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 接触路径(q9q)仍只忽略立面三角形以防掉地;形状相交查询(x9o)对本车与任意静态形状返回 false,覆盖扫掠/查询式阻挡;新增 skippedOverlap 计数。 --- 3dtank.com/play/static/js/unpacked/hornet_bundle.js | 12 +++++++----- 3dtank_bundle.js | 12 +++++++----- tools/hornet_noclip.js | 12 +++++++----- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/3dtank.com/play/static/js/unpacked/hornet_bundle.js b/3dtank.com/play/static/js/unpacked/hornet_bundle.js index ce8f284..58154fc 100644 --- a/3dtank.com/play/static/js/unpacked/hornet_bundle.js +++ b/3dtank.com/play/static/js/unpacked/hornet_bundle.js @@ -6720,9 +6720,11 @@ return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local); } - function IsFencePair(ShapeA, ShapeB) { - return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) || - (IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA)); + // 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。 + // 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。 + function IsLocalStaticPair(ShapeA, ShapeB) { + return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) || + (IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA)); } // ===== 诊断:识别「正在和什么物体重叠」===== @@ -6904,9 +6906,9 @@ Proto[MOverlap] = function (ShapeA, ShapeB) { if (Stat.running && Stat.ignoreFence) { try { - if (IsFencePair(ShapeA, ShapeB)) { + if (IsLocalStaticPair(ShapeA, ShapeB)) { Stat.skippedOverlap++; - return false; // 查询结果:不相交 + return false; // 查询结果:不相交(穿栅栏走这条路径) } } catch (e) {} } diff --git a/3dtank_bundle.js b/3dtank_bundle.js index ce8f284..58154fc 100644 --- a/3dtank_bundle.js +++ b/3dtank_bundle.js @@ -6720,9 +6720,11 @@ return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local); } - function IsFencePair(ShapeA, ShapeB) { - return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) || - (IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA)); + // 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。 + // 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。 + function IsLocalStaticPair(ShapeA, ShapeB) { + return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) || + (IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA)); } // ===== 诊断:识别「正在和什么物体重叠」===== @@ -6904,9 +6906,9 @@ Proto[MOverlap] = function (ShapeA, ShapeB) { if (Stat.running && Stat.ignoreFence) { try { - if (IsFencePair(ShapeA, ShapeB)) { + if (IsLocalStaticPair(ShapeA, ShapeB)) { Stat.skippedOverlap++; - return false; // 查询结果:不相交 + return false; // 查询结果:不相交(穿栅栏走这条路径) } } catch (e) {} } diff --git a/tools/hornet_noclip.js b/tools/hornet_noclip.js index 6a0a428..4c3de0c 100644 --- a/tools/hornet_noclip.js +++ b/tools/hornet_noclip.js @@ -195,9 +195,11 @@ return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local); } - function IsFencePair(ShapeA, ShapeB) { - return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) || - (IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA)); + // 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。 + // 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。 + function IsLocalStaticPair(ShapeA, ShapeB) { + return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) || + (IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA)); } // ===== 诊断:识别「正在和什么物体重叠」===== @@ -379,9 +381,9 @@ Proto[MOverlap] = function (ShapeA, ShapeB) { if (Stat.running && Stat.ignoreFence) { try { - if (IsFencePair(ShapeA, ShapeB)) { + if (IsLocalStaticPair(ShapeA, ShapeB)) { Stat.skippedOverlap++; - return false; // 查询结果:不相交 + return false; // 查询结果:不相交(穿栅栏走这条路径) } } catch (e) {} }