diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-19 16:01:17 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-19 16:01:17 (GMT) |
| commit | 456fca22c692cd5199e17e9b6d4279a04ce7da25 (patch) | |
| tree | 88e8a16909a44c6e4af2d21ace552f17154a7d67 /src/elements/pipe.cpp | |
| parent | ceb25440cbbb1c6b712985770a0379c4da57cdd4 (diff) | |
| download | powder-456fca22c692cd5199e17e9b6d4279a04ce7da25.zip powder-456fca22c692cd5199e17e9b6d4279a04ce7da25.tar.gz | |
TPT: Change STOR, PIPE, DUST to make correct use of .flags field.
Diffstat (limited to 'src/elements/pipe.cpp')
| -rw-r--r-- | src/elements/pipe.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/elements/pipe.cpp b/src/elements/pipe.cpp index 78f384b..05972b6 100644 --- a/src/elements/pipe.cpp +++ b/src/elements/pipe.cpp @@ -1,5 +1,7 @@ #include "simulation/Element.h" +#define PFLAG_NORMALSPEED 0x00010000 + signed char pos_1_rx[] = {-1,-1,-1, 0, 0, 1, 1, 1}; signed char pos_1_ry[] = {-1, 0, 1,-1, 1,-1, 0, 1}; @@ -31,11 +33,11 @@ void pushParticle(Simulation * sim, int i, int count, int original) { sim->parts[r>>8].tmp = (sim->parts[r>>8].tmp&~0xFF) | (sim->parts[i].tmp&0xFF); sim->parts[r>>8].temp = sim->parts[i].temp; - sim->parts[r>>8].flags = sim->parts[i].flags; + sim->parts[r>>8].tmp2 = sim->parts[i].tmp2; sim->parts[r>>8].pavg[0] = sim->parts[i].pavg[0]; sim->parts[r>>8].pavg[1] = sim->parts[i].pavg[1]; if (r>>8 > original) - sim->parts[r>>8].tmp2 = 1;//skip particle push, normalizes speed + sim->parts[r>>8].flags |= PFLAG_NORMALSPEED;//skip particle push, normalizes speed sim->parts[i].tmp &= ~0xFF; count++; pushParticle(sim, r>>8,count,original); @@ -54,11 +56,11 @@ void pushParticle(Simulation * sim, int i, int count, int original) { sim->parts[r>>8].tmp = (sim->parts[r>>8].tmp&~0xFF) | (sim->parts[i].tmp&0xFF); sim->parts[r>>8].temp = sim->parts[i].temp; - sim->parts[r>>8].flags = sim->parts[i].flags; + sim->parts[r>>8].tmp2 = sim->parts[i].tmp2; sim->parts[r>>8].pavg[0] = sim->parts[i].pavg[0]; sim->parts[r>>8].pavg[1] = sim->parts[i].pavg[1]; if (r>>8 > original) - sim->parts[r>>8].tmp2 = 1;//skip particle push, normalizes speed + sim->parts[r>>8].flags |= PFLAG_NORMALSPEED;//skip particle push, normalizes speed sim->parts[i].tmp &= ~0xFF; count++; pushParticle(sim, r>>8,count,original); @@ -111,9 +113,9 @@ int update_PIPE(UPDATE_FUNC_ARGS) { } else { - if (parts[i].tmp2 == 1)//skip particle push to prevent particle number being higher causeing speed up + if (parts[i].flags&PFLAG_NORMALSPEED)//skip particle push to prevent particle number being higher causeing speed up { - parts[i].tmp2 = 0 ; + parts[i].tmp2 &= ~PFLAG_NORMALSPEED; } else { @@ -138,7 +140,7 @@ int update_PIPE(UPDATE_FUNC_ARGS) { if (np!=-1) { parts[np].temp = parts[i].temp;//pipe saves temp and life now - parts[np].life = parts[i].flags; + parts[np].life = parts[i].tmp2; parts[np].tmp = parts[i].pavg[0]; parts[np].ctype = parts[i].pavg[1]; parts[i].tmp &= ~0xFF; @@ -151,7 +153,7 @@ int update_PIPE(UPDATE_FUNC_ARGS) { sim->detach(r>>8); parts[i].tmp = (parts[i].tmp&~0xFF) | parts[r>>8].type; parts[i].temp = parts[r>>8].temp; - parts[i].flags = parts[r>>8].life; + parts[i].tmp2 = parts[r>>8].life; parts[i].pavg[0] = parts[r>>8].tmp; parts[i].pavg[1] = parts[r>>8].ctype; sim->kill_part(r>>8); @@ -160,7 +162,7 @@ int update_PIPE(UPDATE_FUNC_ARGS) { { parts[i].tmp = parts[r>>8].tmp; parts[i].temp = parts[r>>8].temp; - parts[i].flags = parts[r>>8].flags; + parts[i].tmp2 = parts[r>>8].tmp2; parts[i].pavg[0] = parts[r>>8].pavg[0]; parts[i].pavg[1] = parts[r>>8].pavg[1]; parts[r>>8].tmp = 0; @@ -253,7 +255,7 @@ int graphics_PIPE(GRAPHICS_FUNC_ARGS) memset(&tpart, 0, sizeof(Particle)); tpart.type = cpart->tmp&0xFF; tpart.temp = cpart->temp; - tpart.life = cpart->flags; + tpart.life = cpart->tmp2; tpart.tmp = cpart->pavg[0]; tpart.ctype = cpart->pavg[1]; t = tpart.type; |
