summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacob1 <jfu614@gmail.com>2011-11-22 22:32:05 (GMT)
committer Jacob1 <jfu614@gmail.com>2012-03-14 22:49:57 (GMT)
commit5f51cb30429b20c99b008f3c00791678bce6475f (patch)
treeb94c839d61d2726de9dd442b77d7cb974d0ab902 /src
parent2f16a599981fb98da5e69357f1fd85e3a034b9b4 (diff)
downloadpowder-5f51cb30429b20c99b008f3c00791678bce6475f.zip
powder-5f51cb30429b20c99b008f3c00791678bce6475f.tar.gz
Way faster deleting
Diffstat (limited to 'src')
-rw-r--r--src/powder.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/powder.c b/src/powder.c
index fbb2637..45b9e6c 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -3083,10 +3083,23 @@ int create_parts(int x, int y, int rx, int ry, int c, int flags)
delete_part(x, y, 0);
}
else
- for (j=-ry; j<=ry; j++)
- for (i=-rx; i<=rx; i++)
- if (InCurrentBrush(i ,j ,rx ,ry))
- delete_part(x+i, y+j, 0);
+ {
+ int tempy = y, i, j, jmax;
+ if (CURRENT_BRUSH == TRI_BRUSH)
+ tempy = y + ry;
+ for (i = x - rx; i <= x; i++) {
+ while (InCurrentBrush(i-x,tempy-y,rx,ry))
+ tempy = tempy - 1;
+ tempy = tempy + 1;
+ jmax = 2*y - tempy;
+ if (CURRENT_BRUSH == TRI_BRUSH)
+ jmax = y + ry;
+ for (j = tempy; j <= jmax; j++) {
+ delete_part(i, j, 0);
+ delete_part(2*x-i, j, 0);
+ }
+ }
+ }
return 1;
}