a fix for 1 pixel brush and flood fill crashing in certain builds.
This commit is contained in:
parent
321c570581
commit
ff1255afd2
27
src/powder.c
27
src/powder.c
@ -5591,6 +5591,8 @@ int flood_parts(int x, int y, int c, int cm, int bm)
|
||||
{
|
||||
int x1, x2, dy = (c<PT_NUM)?1:CELL;
|
||||
int co = c;
|
||||
if(y>YRES||y<0)
|
||||
return 0;
|
||||
if(cm==PT_INST&&co==PT_SPRK)
|
||||
if((pmap[y][x]&0xFF)==PT_SPRK)
|
||||
return 0;
|
||||
@ -5775,6 +5777,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
|
||||
if(((sdl_mod & (KMOD_LALT) && sdl_mod & (KMOD_SHIFT))|| sdl_mod & (KMOD_CAPS) )&& !REPLACE_MODE)
|
||||
{
|
||||
if(rx==0&&ry==0)
|
||||
{
|
||||
delete_part(x, y);
|
||||
}
|
||||
else
|
||||
for(j=-ry; j<=ry; j++)
|
||||
for(i=-rx; i<=rx; i++)
|
||||
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
|
||||
@ -5784,6 +5791,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
|
||||
if(c == SPC_AIR || c == SPC_HEAT || c == SPC_COOL || c == SPC_VACUUM)
|
||||
{
|
||||
if(rx==0&&ry==0)
|
||||
{
|
||||
create_part(-2, x, y, c);
|
||||
}
|
||||
else
|
||||
for(j=-ry; j<=ry; j++)
|
||||
for(i=-rx; i<=rx; i++)
|
||||
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
|
||||
@ -5798,6 +5810,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
{
|
||||
stemp = SLALT;
|
||||
SLALT = 0;
|
||||
if(rx==0&&ry==0)
|
||||
{
|
||||
delete_part(x, y);
|
||||
}
|
||||
else
|
||||
for(j=-ry; j<=ry; j++)
|
||||
for(i=-rx; i<=rx; i++)
|
||||
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
|
||||
@ -5807,6 +5824,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
}
|
||||
if(REPLACE_MODE)
|
||||
{
|
||||
if(rx==0&&ry==0)
|
||||
{
|
||||
create_part(-2, x, y, c);
|
||||
}
|
||||
else
|
||||
for(j=-ry; j<=ry; j++)
|
||||
for(i=-rx; i<=rx; i++)
|
||||
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
|
||||
@ -5823,6 +5845,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
return 1;
|
||||
|
||||
}
|
||||
if(rx==0&&ry==0)//workaround for 1pixel brush/floodfill crashing. todo: find a better fix later.
|
||||
{
|
||||
create_part(-2, x, y, c);
|
||||
}
|
||||
else
|
||||
for(j=-ry; j<=ry; j++)
|
||||
for(i=-rx; i<=rx; i++)
|
||||
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
|
||||
|
Reference in New Issue
Block a user