sandboxels/mods/borders.js

61 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-11-25 22:02:54 -05:00
window.addEventListener("load", () => {
let oldPreRenderer = viewInfo[1].pre;
let oldPixelRenderer = viewInfo[1].pixel;
viewInfo[1].pre = function(ctx) {
if (oldPreRenderer) oldPreRenderer(ctx);
currentPixels.forEach(pixel => {
if (elements[pixel.element].movable !== true || elements[pixel.element].isGas === true) return;
let edge = false;
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
if (isEmpty(x,y)) {
// if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
edge = true;
break;
}
}
if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x-0.5,pixel.y-0.5,2);
})
}
viewInfo[1].pixel = function(pixel, ctx) {
if (elements[pixel.element].movable) return oldPixelRenderer(pixel, ctx);
2025-11-25 21:57:38 -05:00
let edge = false;
for (var i = 0; i < adjacentCoords.length; i++) {
var coords = adjacentCoords[i];
var x = pixel.x + coords[0];
var y = pixel.y + coords[1];
2025-11-25 22:02:54 -05:00
if (isEmpty(x,y) || (!outOfBounds(x,y) &&
elements[pixelMap[x][y].element].movable
)) {
2025-11-25 21:57:38 -05:00
// if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
edge = true;
break;
}
}
2025-11-25 22:02:54 -05:00
if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x,pixel.y);
else oldPixelRenderer(pixel, ctx);
2025-11-25 21:57:38 -05:00
}
2025-11-25 22:02:54 -05:00
// viewInfo[1].post = function(ctx) {
// currentPixels.forEach(pixel => {
// let edge = false;
// for (var i = 0; i < adjacentCoords.length; i++) {
// var coords = adjacentCoords[i];
// var x = pixel.x + coords[0];
// var y = pixel.y + coords[1];
// if (!isEmpty(x,y,true) && elements[pixelMap[x][y].element].movable !== elements[pixel.element].movable) {
// // if (elements[pixelMap[x][y].element].id !== elements[pixel.element].id || elements[pixelMap[x][y].element].state !== elements[pixel.element].id) continue
// edge = true;
// break;
// }
// }
// if (edge) drawSquare(ctx,"rgb(0,0,0)",pixel.x-0.5,pixel.y-0.5,2);
// })
// }
2025-11-25 21:57:38 -05:00
2025-11-25 22:02:54 -05:00
})
2025-11-25 21:57:38 -05:00