diff options
| author | jacksonmj <mj-pt@jacksonmj.co.uk> | 2011-06-18 15:47:47 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-06-25 14:51:38 (GMT) |
| commit | 4043dba74c77d68457c90bb9be32e2f2c39a2758 (patch) | |
| tree | bc80aab5dbd1d3f8348fe7eb3e15ba86ddb9f844 /src | |
| parent | 636b1db4d231e0d9f1815ddb74abd97b64b1d3ba (diff) | |
| download | powder-4043dba74c77d68457c90bb9be32e2f2c39a2758.zip powder-4043dba74c77d68457c90bb9be32e2f2c39a2758.tar.gz | |
Small fixes for liquids in radial/Newtonian gravity
Diffstat (limited to 'src')
| -rw-r--r-- | src/powder.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/powder.c b/src/powder.c index 917f9bf..e6e9e76 100644 --- a/src/powder.c +++ b/src/powder.c @@ -2154,7 +2154,7 @@ killed: parts[i].vx *= ptypes[t].collision; parts[i].vy *= ptypes[t].collision; } - else if (ptypes[t].falldown>1 && fabsf(pGravX*parts[i].vx+pGravY*parts[i].vy)>fabsf(pGravY*parts[i].vx+pGravX*parts[i].vy)) + 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; s = 0; @@ -2191,8 +2191,8 @@ killed: if (mv<0.0001f) break; pGravX /= mv; pGravY /= mv; - nxf += r*pGravY; - nyf -= r*pGravX; + nxf += r*pGravY + 0.1f*pGravX; + nyf += -r*pGravX + 0.1f*pGravY; nx = (int)(nxf+0.5f); ny = (int)(nyf+0.5f); if (nx<0 || ny<0 || nx>=XRES || ny >=YRES) @@ -2200,7 +2200,13 @@ killed: if ((pmap[ny][nx]&0xFF)!=t || bmap[ny/CELL][nx/CELL]) { s = do_move(i, x, y, nxf, nyf); - if (s || bmap[ny/CELL][nx/CELL]!=WL_STREAM) + if (s) + { + nx = (int)(parts[i].x+0.5f); + ny = (int)(parts[i].y+0.5f); + break; + } + if (bmap[ny/CELL][nx/CELL]!=WL_STREAM) break; } } |
