summaryrefslogtreecommitdiff
path: root/src/powder.c
diff options
context:
space:
mode:
authorSimon 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)
commit810adc81fe672cab81a6d5f412961e9c4c682bbd (patch)
tree425e5a83791150427296f1ed053674f0abb77bb3 /src/powder.c
parenta523dcab798722f569f801ee7190bbff1d104770 (diff)
downloadpowder-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.c26
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