diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2011-12-19 21:35:40 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-12-19 21:35:40 (GMT) |
| commit | 810adc81fe672cab81a6d5f412961e9c4c682bbd (patch) | |
| tree | 425e5a83791150427296f1ed053674f0abb77bb3 /src/powder.c | |
| parent | a523dcab798722f569f801ee7190bbff1d104770 (diff) | |
| download | powder-810adc81fe672cab81a6d5f412961e9c4c682bbd.zip powder-810adc81fe672cab81a6d5f412961e9c4c682bbd.tar.gz | |
Use reduced resolution gravity maps for improved performance
Diffstat (limited to 'src/powder.c')
| -rw-r--r-- | src/powder.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/powder.c b/src/powder.c index b0646b0..9e6c067 100644 --- a/src/powder.c +++ b/src/powder.c @@ -760,13 +760,13 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a } if (t==SPC_PGRV) { - gravmap[y/CELL][x/CELL] = 5; - return -1; + gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 5; + return -1; } if (t==SPC_NGRV) { - gravmap[y/CELL][x/CELL] = -5; - return -1; + gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = -5; + return -1; } @@ -1801,13 +1801,13 @@ void update_particles_i(pixel *vid, int start, int inc) if (t==PT_ANAR) { // perhaps we should have a ptypes variable for this - pGravX -= gravxf[(y*XRES)+x]; - pGravY -= gravyf[(y*XRES)+x]; + pGravX -= gravx[(y/CELL)*(XRES/CELL)+(x/CELL)]; + pGravY -= gravy[(y/CELL)*(XRES/CELL)+(x/CELL)]; } else if(t!=PT_STKM && t!=PT_STKM2 && t!=PT_FIGH && !(ptypes[t].properties & TYPE_SOLID)) { - pGravX += gravxf[(y*XRES)+x]; - pGravY += gravyf[(y*XRES)+x]; + pGravX += gravx[(y/CELL)*(XRES/CELL)+(x/CELL)]; + pGravY += gravy[(y/CELL)*(XRES/CELL)+(x/CELL)]; } //velocity updates for the particle parts[i].vx *= ptypes[t].loss; @@ -2063,7 +2063,7 @@ void update_particles_i(pixel *vid, int start, int inc) s = 1; - gravtot = fabs(gravyf[(y*XRES)+x])+fabs(gravxf[(y*XRES)+x]); + gravtot = fabs(gravy[(y/CELL)*(XRES/CELL)+(x/CELL)])+fabs(gravx[(y/CELL)*(XRES/CELL)+(x/CELL)]); if (pv[y/CELL][x/CELL]>ptransitions[t].phv&&ptransitions[t].pht>-1) { // particle type change due to high pressure if (ptransitions[t].pht!=PT_NUM) @@ -2449,8 +2449,8 @@ killed: pGravX = ptGrav * ((float)(nx - XCNTR) / pGravD); pGravY = ptGrav * ((float)(ny - YCNTR) / pGravD); } - pGravX += gravxf[(ny*XRES)+nx]; - pGravY += gravyf[(ny*XRES)+nx]; + pGravX += gravx[(ny/CELL)*(XRES/CELL)+(nx/CELL)]; + pGravY += gravy[(ny/CELL)*(XRES/CELL)+(nx/CELL)]; if (fabsf(pGravY)>fabsf(pGravX)) mv = fabsf(pGravY); else @@ -2508,8 +2508,8 @@ killed: pGravX = ptGrav * ((float)(nx - XCNTR) / pGravD); pGravY = ptGrav * ((float)(ny - YCNTR) / pGravD); } - pGravX += gravxf[(ny*XRES)+nx]; - pGravY += gravyf[(ny*XRES)+nx]; + pGravX += gravx[(ny/CELL)*(XRES/CELL)+(nx/CELL)]; + pGravY += gravy[(ny/CELL)*(XRES/CELL)+(nx/CELL)]; if (fabsf(pGravY)>fabsf(pGravX)) mv = fabsf(pGravY); else |
