From d1ca1af8257378a0ef073d30385eeff3b964adf9 Mon Sep 17 00:00:00 2001 From: Cracker64 Date: Thu, 16 Dec 2010 13:40:01 -0500 Subject: [PATCH] improved rotate, no longer deletes particles, and works with walls. --- src/powder.c | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/powder.c b/src/powder.c index be6735ad4..7cb414238 100644 --- a/src/powder.c +++ b/src/powder.c @@ -4922,48 +4922,57 @@ void rotate_area(int area_x, int area_y, int area_w, int area_h) { int cx = 0; int cy = 0; - char tpmap[area_h][area_w]; - char rtpmap[area_w][area_h]; - unsigned char tbmap[area_h][area_w]; - unsigned char rtbmap[area_h][area_w]; + unsigned tpmap[area_h][area_w]; + unsigned rtpmap[area_w][area_h]; + unsigned char tbmap[area_h/CELL][area_w/CELL]; + unsigned char rtbmap[area_w/CELL][area_h/CELL]; for(cy=0; cy0&&rtpmap[cy][cx]>8)<=NPART&&rtpmap[cy][cx]) + { + parts[rtpmap[(int)(cy+0.5f)][(int)(cx+0.5f)]>>8].x = area_x +cx; + parts[rtpmap[(int)(cy+0.5f)][(int)(cx+0.5f)]>>8].y = area_y +cy; + } + else + bmap[(area_y+cy)/CELL][(area_x+cx)/CELL] = rtbmap[cy/CELL][cx/CELL]; + } } } }