Corner placements of screw conveyors stay separate ends (t62 follow-up)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-27 12:32:23 -04:00
co-authored by Claude Opus 5.5
parent ff9fd7b1b8
commit 787721ad35
11 changed files with 115 additions and 102 deletions
+1 -8
View File
@@ -90,13 +90,6 @@ function entScrewTick(e, p) {
if ((tick & 1) || netSat(ci) <= 0 || rnd() > netSat(ci)) return;
const dx = SCREW_DX[p], dy = SCREW_DY[p];
if (dx && dy) { entDiagonalScrewTick(e, p); return; }
const edge = entScrewEdge(e, dx, dy, 0), behind = edge - dx - dy * W;
const corner = edge >= 0 ? straightScrewNext(behind, p) : -1;
if (corner >= 0 && corner !== edge) {
const x = (corner % W) & ~3, y = entScrewLane((corner / W) | 0, e.iy);
if (entScrewMove(e, x, y, true)) stats.moved++;
return;
}
let x = e.ix + dx, y = e.iy + dy, next = 0, ax = 0, ay = 0;
for (let k = 0; k < (dx ? BAR_H : BAR_W); k++) {
const i = entScrewEdge(e, dx, dy, k);
@@ -124,7 +117,7 @@ function entDiagonalScrewTick(e, p) {
const dx = SCREW_DX[p], dy = SCREW_DY[p], bx = e.ix & ~3, by = e.iy & ~3, lane = e.iy & 3;
for (const [ox, oy] of [[dx, dy], [dx, 0], [0, dy]]) {
const x = bx + ox * BS, y = by + oy * BS + lane, q = entScrewAt(x, y);
if (!q) continue;
if (!q || (ox && oy && (q < P_SCREW_UR || q > P_SCREW_UL || SCREW_DX[q] !== dx || SCREW_DY[q] !== dy))) continue;
if (SCREW_DX[q] * dx + SCREW_DY[q] * dy < 0) return;
if (entScrewMove(e, x, y, true)) stats.moved++;
return;