summaryrefslogtreecommitdiff
path: root/src/simulation
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-13 00:28:00 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-13 00:28:00 (GMT)
commit5f81b707878f3ea30b713321219abd0d1f51afa9 (patch)
tree0927d6a59a6847d85c4956492d22aaf71137c980 /src/simulation
parent2aebc294e8d3bb339ce36ada46edfe87872cfa05 (diff)
downloadpowder-5f81b707878f3ea30b713321219abd0d1f51afa9.zip
powder-5f81b707878f3ea30b713321219abd0d1f51afa9.tar.gz
TPT: Avoid stacking in INVS and FILT, and fix pressurised INVS graphics
Diffstat (limited to 'src/simulation')
-rw-r--r--src/simulation/Simulation.cpp6
-rw-r--r--src/simulation/elements/INVIS.cpp5
2 files changed, 7 insertions, 4 deletions
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp
index 87603f2..6477fd4 100644
--- a/src/simulation/Simulation.cpp
+++ b/src/simulation/Simulation.cpp
@@ -2988,6 +2988,7 @@ void Simulation::update_particles_i(int start, int inc)
create_part(i, x, y, PT_NBHL);
parts[i].temp = MAX_TEMP;
parts[i].tmp = pmap_count[y][x]-NPART;//strength of grav field
+ if (parts[i].tmp>51200) parts[i].tmp = 51200;
pmap_count[y][x] = NPART;
}
else
@@ -4151,7 +4152,10 @@ void Simulation::update_particles()//doesn't update the particles themselves, bu
photons[y][x] = t|(i<<8);
else
{
- pmap[y][x] = t|(i<<8);
+ // Particles are sometimes allowed to go inside INVS and FILT
+ // To make particles collide correctly when inside these elements, these elements must not overwrite an existing pmap entry from particles inside them
+ if (!pmap[y][x] || (t!=PT_INVIS && t!= PT_FILT))
+ pmap[y][x] = t|(i<<8);
pmap_count[y][x]++;
}
}
diff --git a/src/simulation/elements/INVIS.cpp b/src/simulation/elements/INVIS.cpp
index b14f8b6..6010967 100644
--- a/src/simulation/elements/INVIS.cpp
+++ b/src/simulation/elements/INVIS.cpp
@@ -57,11 +57,10 @@ int Element_INVIS::graphics(GRAPHICS_FUNC_ARGS)
*colr = 15;
*colg = 0;
*colb = 150;
- *pixel_mode &= PMODE;
- *pixel_mode |= PMODE_BLEND;
+ *pixel_mode = PMODE_BLEND;
}
return 0;
}
-Element_INVIS::~Element_INVIS() {} \ No newline at end of file
+Element_INVIS::~Element_INVIS() {}