From daae0af570916bdda411a3e0c509609a65b107ab Mon Sep 17 00:00:00 2001 From: "Laetitia (O-01-67)" <68935009+O-01-67@users.noreply.github.com> Date: Thu, 9 Mar 2023 15:01:10 -0500 Subject: [PATCH] new function --- mods/code_library.js | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/mods/code_library.js b/mods/code_library.js index 131d8358..7dc50c12 100644 --- a/mods/code_library.js +++ b/mods/code_library.js @@ -1455,6 +1455,86 @@ return r.elem1!==undefined || r.elem2!==undefined; }; + function spreadingProperty(pixel,propertyName,whitelist=null) { + if(isNaN(pixel[propertyName])) { + pixel[propertyName] = 0; + }; + var randomNeighborOffset = adjacentCoords[Math.floor(Math.random() * adjacentCoords.length)]; + var rX = randomNeighborOffset[0]; + var rY = randomNeighborOffset[1]; + var rfX = pixel.x+rX; + var rfY = pixel.y+rY; + if(!isEmpty(rfX,rfY,true)) { + if(!pixelMap[rfX]) { + return false; + }; + var rOtherPixel = pixelMap[rfX][rfY]; + var rOtherElement = rOtherPixel.element; + if(whitelist === null || (whitelist !== null && whitelist.includes(rOtherElement))) { + if(typeof(rOtherPixel) === "undefined" || isEmpty(rfX,rfY,true)) { + return false; + }; + if(isNaN(pixel[propertyName])) { //should include undefined + pixel[propertyName] = 0; + }; + var averageValue = (pixel[propertyName] + rOtherPixel[propertyName]) / 2; + pixel[propertyName] = averageValue; + rOtherPixel[propertyName] = averageValue; + }; + }; + return true; + }; + + function spreadingPropertyReturn(pixel,propertyName,whitelist=null) { + if(isNaN(pixel[propertyName])) { + pixel[propertyName] = 0; + }; + var recipients = []; //will never be more than one but done with [] for forEach + var randomNeighborOffset = adjacentCoords[Math.floor(Math.random() * adjacentCoords.length)]; + var rX = randomNeighborOffset[0]; + var rY = randomNeighborOffset[1]; + var rfX = pixel.x+rX; + var rfY = pixel.y+rY; + if(!isEmpty(rfX,rfY,true)) { + if(!pixelMap[rfX]) { + return []; + }; + var rOtherPixel = pixelMap[rfX][rfY]; + var rOtherElement = rOtherPixel.element; + if(whitelist === null || (whitelist !== null && whitelist.includes(rOtherElement))) { + if(typeof(rOtherPixel) === "undefined" || isEmpty(rfX,rfY,true)) { + return []; + }; + if(isNaN(pixel[propertyName])) { //should include undefined + pixel[propertyName] = 0; + }; + var averageValue = (pixel[propertyName] + rOtherPixel[propertyName]) / 2; + pixel[propertyName] = averageValue; + rOtherPixel[propertyName] = averageValue; + recipients.push(rOtherPixel); + }; + }; + return recipients; + }; + + function swapNumericPropertyValues(pixel1,pixel2,propertyName,whitelist=null) { + if(!pixel1 || !pixel2) { + return false; + }; + if(isNaN(pixel1[propertyName])) { + pixel1[propertyName] = 0; + }; + if(isNaN(pixel2[propertyName])) { + pixel2[propertyName] = 0; + }; + if(whitelist === null || (whitelist !== null && whitelist.includes(pixel1.element) && whitelist.includes(pixel2.element))) { + var temp1 = pixel1[propertyName]; + pixel1[propertyName] = pixel2[propertyName]; + pixel2[propertyName] = temp1; + }; + return true; + }; + //World function breakCircle(x,y,radius,respectHardness=false,changeTemp=false,defaultBreakIntoDust=false) {