simple stripe paint
to do: configurable tightness, phase, and angle (would require difficult code rework and weird math shit i don't know); hsl support to recolor after-the-fact, you have to set oldColor instead of the paint tool (doable through mouse with prop.js, but you have to triple-check because it will not handle rgb() errors)
This commit is contained in:
parent
5c5923f57d
commit
d92a65d7db
|
|
@ -0,0 +1,120 @@
|
|||
function averageColors(color1,color2,outputType="rgb",weight1=0.5) {
|
||||
color1 = convertColorFormats(color1,"json");
|
||||
color2 = convertColorFormats(color2,"json");
|
||||
theColor = averageColorObjects(color1,color2,weight1);
|
||||
return convertColorFormats(theColor,outputType);
|
||||
};
|
||||
|
||||
function stripeFunction(pixel,sineParamFunction) {
|
||||
if(pixel.oldColor == undefined || pixel.oldColor == null) {
|
||||
pixel.oldColor = pixel.color;
|
||||
};
|
||||
|
||||
//oldColor self staining
|
||||
for (var i = 0; i < adjacentCoords.length; i++) {
|
||||
var x = pixel.x+adjacentCoords[i][0];
|
||||
var y = pixel.y+adjacentCoords[i][1];
|
||||
if(isEmpty(x,y,true)) {
|
||||
continue;
|
||||
};
|
||||
var otherPixel = pixelMap[x][y];
|
||||
if(otherPixel.element == pixel.element && pixel.oldColor && otherPixel.oldColor) {
|
||||
otherPixel.oldColor = averageColors(pixel.oldColor,otherPixel.oldColor);
|
||||
};
|
||||
};
|
||||
|
||||
var sineWeight = (1+Math.sin(sineParamFunction(pixel)))/2;
|
||||
var preColor = averageColors(pixel.oldColor,"rgb(0,0,0)","json",sineWeight);
|
||||
for(colorlet in preColor) {
|
||||
preColor[colorlet] = Math.round(preColor[colorlet]);
|
||||
};
|
||||
pixel.color = convertColorFormats(preColor,"rgb");
|
||||
};
|
||||
|
||||
function horizontalSpf(pixel) {
|
||||
return pixel.y;
|
||||
};
|
||||
|
||||
function verticalSpf(pixel) {
|
||||
return pixel.x;
|
||||
};
|
||||
|
||||
function diagonalSpf(pixel) {
|
||||
return pixel.x+pixel.y;
|
||||
};
|
||||
|
||||
function diagonalAltSpf(pixel) {
|
||||
return pixel.x-pixel.y;
|
||||
};
|
||||
|
||||
elements.horizontal_stripe_paint = {
|
||||
behavior: behaviors.LIQUID,
|
||||
state: "liquid",
|
||||
density: 998,
|
||||
tempHigh: 100,
|
||||
stateHigh: "smoke",
|
||||
color: elements.paint.color,
|
||||
customColor: true,
|
||||
category: "stripe paint",
|
||||
properties: {
|
||||
oldColor: null
|
||||
},
|
||||
stain: elements.dye.stain,
|
||||
tick: function(pixel) {
|
||||
stripeFunction(pixel,horizontalSpf);
|
||||
},
|
||||
};
|
||||
|
||||
elements.vertical_stripe_paint = {
|
||||
behavior: behaviors.LIQUID,
|
||||
state: "liquid",
|
||||
density: 998,
|
||||
tempHigh: 100,
|
||||
stateHigh: "smoke",
|
||||
color: elements.paint.color,
|
||||
customColor: true,
|
||||
category: "stripe paint",
|
||||
properties: {
|
||||
oldColor: null
|
||||
},
|
||||
stain: elements.dye.stain,
|
||||
tick: function(pixel) {
|
||||
stripeFunction(pixel,verticalSpf);
|
||||
},
|
||||
};
|
||||
|
||||
elements.diagonal_stripe_paint = {
|
||||
behavior: behaviors.LIQUID,
|
||||
state: "liquid",
|
||||
density: 998,
|
||||
tempHigh: 100,
|
||||
stateHigh: "smoke",
|
||||
color: elements.paint.color,
|
||||
customColor: true,
|
||||
category: "stripe paint",
|
||||
properties: {
|
||||
oldColor: null
|
||||
},
|
||||
stain: elements.dye.stain,
|
||||
tick: function(pixel) {
|
||||
stripeFunction(pixel,diagonalSpf);
|
||||
},
|
||||
};
|
||||
|
||||
elements.diagonal_2_stripe_paint = {
|
||||
behavior: behaviors.LIQUID,
|
||||
state: "liquid",
|
||||
density: 998,
|
||||
tempHigh: 100,
|
||||
stateHigh: "smoke",
|
||||
color: elements.paint.color,
|
||||
customColor: true,
|
||||
category: "stripe paint",
|
||||
properties: {
|
||||
oldColor: null
|
||||
},
|
||||
stain: elements.dye.stain,
|
||||
tick: function(pixel) {
|
||||
stripeFunction(pixel,diagonalAltSpf);
|
||||
},
|
||||
};
|
||||
Loading…
Reference in New Issue