diff options
| author | Jacob1 <jfu614@gmail.com> | 2011-11-22 22:32:05 (GMT) |
|---|---|---|
| committer | Jacob1 <jfu614@gmail.com> | 2012-03-14 22:49:57 (GMT) |
| commit | 5f51cb30429b20c99b008f3c00791678bce6475f (patch) | |
| tree | b94c839d61d2726de9dd442b77d7cb974d0ab902 /src | |
| parent | 2f16a599981fb98da5e69357f1fd85e3a034b9b4 (diff) | |
| download | powder-5f51cb30429b20c99b008f3c00791678bce6475f.zip powder-5f51cb30429b20c99b008f3c00791678bce6475f.tar.gz | |
Way faster deleting
Diffstat (limited to 'src')
| -rw-r--r-- | src/powder.c | 21 |
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; } |
