From 5f81b707878f3ea30b713321219abd0d1f51afa9 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Wed, 13 Jun 2012 01:28:00 +0100 Subject: TPT: Avoid stacking in INVS and FILT, and fix pressurised INVS graphics 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() {} -- cgit v0.9.2-21-gd62e