summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-07-13 11:48:00 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-07-24 12:07:14 (GMT)
commitc35a8e45ee8c9085dabcc8b530a043940be3b017 (patch)
treeacb5c9948db948a9ff2b701a059e7967ad1eb717 /src
parent38c920714c169f614505bd042a6adcf983eb99c8 (diff)
downloadpowder-c35a8e45ee8c9085dabcc8b530a043940be3b017.zip
powder-c35a8e45ee8c9085dabcc8b530a043940be3b017.tar.gz
Fix liquids in vertical gravity when Newtonian gravity is turned on
Diffstat (limited to 'src')
-rw-r--r--src/powder.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/powder.c b/src/powder.c
index ba10f70..db65303 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -2249,7 +2249,7 @@ killed:
}
else if (ptypes[t].falldown>1 && fabsf(pGravX*parts[i].vx+pGravY*parts[i].vy)>fabsf(pGravY*parts[i].vx-pGravX*parts[i].vy))
{
- float nxf, nyf, ptGrav = ptypes[t].gravity;
+ float nxf, nyf, prev_pGravX, prev_pGravY, ptGrav = ptypes[t].gravity;
s = 0;
// stagnant is true if FLAG_STAGNANT was set for this particle in previous frame
if (!stagnant || nt) //nt is if there is an something else besides the current particle type, around the particle
@@ -2284,8 +2284,18 @@ killed:
if (mv<0.0001f) break;
pGravX /= mv;
pGravY /= mv;
- nxf += r*pGravY + 0.1f*pGravX;
- nyf += -r*pGravX + 0.1f*pGravY;
+ if (j)
+ {
+ nxf += r*(pGravY*2.0f-prev_pGravY);
+ nyf += -r*(pGravX*2.0f-prev_pGravX);
+ }
+ else
+ {
+ nxf += r*pGravY;
+ nyf += -r*pGravX;
+ }
+ prev_pGravX = pGravX;
+ prev_pGravY = pGravY;
nx = (int)(nxf+0.5f);
ny = (int)(nyf+0.5f);
if (nx<0 || ny<0 || nx>=XRES || ny >=YRES)