feat(ignore): x9o 路径改为忽略本车与任意静态形状的相交查询
接触路径(q9q)仍只忽略立面三角形以防掉地;形状相交查询(x9o)对本车与任意静态形状返回 false,覆盖扫掠/查询式阻挡;新增 skippedOverlap 计数。
This commit is contained in:
1 parent
0e8af39bfe
commit
f455fe5c35
3 files changed
+21
-15
No files matched your search
@@ -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) {}
|
||||
}
|
||||
|
||||
+7
-5
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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) {}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user