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);
|
return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local);
|
||||||
}
|
}
|
||||||
|
|
||||||
function IsFencePair(ShapeA, ShapeB) {
|
// 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。
|
||||||
return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) ||
|
// 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。
|
||||||
(IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA));
|
function IsLocalStaticPair(ShapeA, ShapeB) {
|
||||||
|
return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) ||
|
||||||
|
(IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 诊断:识别「正在和什么物体重叠」=====
|
// ===== 诊断:识别「正在和什么物体重叠」=====
|
||||||
@@ -6904,9 +6906,9 @@
|
|||||||
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
||||||
if (Stat.running && Stat.ignoreFence) {
|
if (Stat.running && Stat.ignoreFence) {
|
||||||
try {
|
try {
|
||||||
if (IsFencePair(ShapeA, ShapeB)) {
|
if (IsLocalStaticPair(ShapeA, ShapeB)) {
|
||||||
Stat.skippedOverlap++;
|
Stat.skippedOverlap++;
|
||||||
return false; // 查询结果:不相交
|
return false; // 查询结果:不相交(穿栅栏走这条路径)
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -6720,9 +6720,11 @@
|
|||||||
return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local);
|
return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local);
|
||||||
}
|
}
|
||||||
|
|
||||||
function IsFencePair(ShapeA, ShapeB) {
|
// 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。
|
||||||
return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) ||
|
// 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。
|
||||||
(IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA));
|
function IsLocalStaticPair(ShapeA, ShapeB) {
|
||||||
|
return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) ||
|
||||||
|
(IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 诊断:识别「正在和什么物体重叠」=====
|
// ===== 诊断:识别「正在和什么物体重叠」=====
|
||||||
@@ -6904,9 +6906,9 @@
|
|||||||
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
||||||
if (Stat.running && Stat.ignoreFence) {
|
if (Stat.running && Stat.ignoreFence) {
|
||||||
try {
|
try {
|
||||||
if (IsFencePair(ShapeA, ShapeB)) {
|
if (IsLocalStaticPair(ShapeA, ShapeB)) {
|
||||||
Stat.skippedOverlap++;
|
Stat.skippedOverlap++;
|
||||||
return false; // 查询结果:不相交
|
return false; // 查询结果:不相交(穿栅栏走这条路径)
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,9 +195,11 @@
|
|||||||
return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local);
|
return !!(Local && IsTankShape(Shape) && OwnerOf(Shape) === Local);
|
||||||
}
|
}
|
||||||
|
|
||||||
function IsFencePair(ShapeA, ShapeB) {
|
// 「本车 ↔ 任意静态形状」:用于形状相交查询(x9o)这条路径。
|
||||||
return (IsLocalTankShape(ShapeA) && IsFenceLike(ShapeB)) ||
|
// 扫掠/查询被挡时返回 false 即可穿过;地面支撑走的是射线(l9m),不经过 x9o。
|
||||||
(IsLocalTankShape(ShapeB) && IsFenceLike(ShapeA));
|
function IsLocalStaticPair(ShapeA, ShapeB) {
|
||||||
|
return (IsLocalTankShape(ShapeA) && IsStaticShape(ShapeB)) ||
|
||||||
|
(IsLocalTankShape(ShapeB) && IsStaticShape(ShapeA));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 诊断:识别「正在和什么物体重叠」=====
|
// ===== 诊断:识别「正在和什么物体重叠」=====
|
||||||
@@ -379,9 +381,9 @@
|
|||||||
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
Proto[MOverlap] = function (ShapeA, ShapeB) {
|
||||||
if (Stat.running && Stat.ignoreFence) {
|
if (Stat.running && Stat.ignoreFence) {
|
||||||
try {
|
try {
|
||||||
if (IsFencePair(ShapeA, ShapeB)) {
|
if (IsLocalStaticPair(ShapeA, ShapeB)) {
|
||||||
Stat.skippedOverlap++;
|
Stat.skippedOverlap++;
|
||||||
return false; // 查询结果:不相交
|
return false; // 查询结果:不相交(穿栅栏走这条路径)
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user