This commit is contained in:
33333-33333 2026-07-09 16:08:11 +09:00
commit f1c3af2b89
49 changed files with 989 additions and 310 deletions

View file

@ -119,17 +119,23 @@
worldRef.limitBallChasers();
worldRef.resolveBallInteractions(dt);
if (endBallInteractions) endBallInteractions();
const hasFastTarinai = (worldRef.tarinai || []).some(t => {
if (!t || t.dead || worldRef.isTarinaiHiddenInNestBox?.(t)) return false;
return Math.hypot(t.vx || 0, t.vy || 0) >= 150;
});
const collisionInterval = hasFastTarinai ? 0 : 0.55;
if (hasFastTarinai || now >= (worldRef.nextTarinaiCollisionCheckAt || 0)) {
worldRef.nextTarinaiCollisionCheckAt = now + collisionInterval;
let fastTarinai = null;
const collisionSpeedThreshold = global.TarinaiCollisionResponseSystem?.highSpeedThreshold?.() || 165;
for (const t of worldRef.tarinai || []) {
if (!t || t.dead || worldRef.isTarinaiHiddenInNestBox?.(t)) continue;
if (Math.hypot(t.vx || 0, t.vy || 0) < collisionSpeedThreshold) continue;
if (!fastTarinai) fastTarinai = [];
fastTarinai.push(t);
}
if (fastTarinai?.length) {
worldRef.nextTarinaiCollisionCheckAt = now;
worldRef.workStats && (worldRef.workStats.collisionRuns = (worldRef.workStats.collisionRuns || 0) + 1);
const endCollision = global.TarinaiPerf.begin("update.tarinai.collisions") || null;
try { worldRef.resolveTarinaiHighSpeedCollisions(dt); }
try { worldRef.resolveTarinaiHighSpeedCollisions(dt, { fastSources: fastTarinai, threshold: collisionSpeedThreshold }); }
finally { if (endCollision) endCollision(); }
} else if (now >= (worldRef.nextTarinaiCollisionCheckAt || 0)) {
worldRef.nextTarinaiCollisionCheckAt = now + 0.55;
worldRef.workStats && (worldRef.workStats.collisionSkips = (worldRef.workStats.collisionSkips || 0) + 1);
} else {
worldRef.workStats && (worldRef.workStats.collisionSkips = (worldRef.workStats.collisionSkips || 0) + 1);
}