summaryrefslogtreecommitdiff
path: root/src/simulation/Simulation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/simulation/Simulation.cpp')
-rw-r--r--src/simulation/Simulation.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp
index 1eb7ed9..ebc0fed 100644
--- a/src/simulation/Simulation.cpp
+++ b/src/simulation/Simulation.cpp
@@ -2477,7 +2477,7 @@ void Simulation::kill_part(int i)//kills particle number i
if (parts[i].type == PT_NONE)
return;
- if(elementCount[parts[i].type] && parts[i].type)
+ if(parts[i].type > 0 && parts[i].type < PT_NUM && elementCount[parts[i].type] && parts[i].type)
elementCount[parts[i].type]--;
if (parts[i].type == PT_STKM)
{
@@ -3352,7 +3352,7 @@ void Simulation::update_particles_i(int start, int inc)
if (parts[i].type)
{
t = parts[i].type;
- if (t<0 || t>=PT_NUM)
+ if (t<0 || t>=PT_NUM || !elements[i].Enabled)
{
kill_part(i);
continue;
@@ -4588,11 +4588,14 @@ Simulation::Simulation():
memcpy(platent, platentT, latentCount * sizeof(unsigned int));
free(platentT);
- elements = new Element[PT_NUM];
+ //elements = new Element[PT_NUM];
std::vector<Element> elementList = GetElements();
- for(int i = 0; i < elementList.size(); i++)
+ for(int i = 0; i < PT_NUM; i++)
{
- elements[i] = elementList[i];
+ if(i < elementList.size())
+ elements[i] = elementList[i];
+ else
+ elements[i] = Element_NONE();
}
tools = GetTools();