From e7b0e3f90d889b582e43553437e5977928565028 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Sun, 17 Apr 2016 21:55:08 +0100 Subject: [PATCH] Particle/powder mixing tool --- src/simulation/simtools/Mix.cpp | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 src/simulation/simtools/Mix.cpp diff --git a/src/simulation/simtools/Mix.cpp b/src/simulation/simtools/Mix.cpp new file mode 100755 index 000000000..b92003c0d --- /dev/null +++ b/src/simulation/simtools/Mix.cpp @@ -0,0 +1,60 @@ +#include "ToolClasses.h" +//#TPT-Directive ToolClass Tool_Mix TOOL_MIX 6 +Tool_Mix::Tool_Mix() +{ + Identifier = "DEFAULT_TOOL_MIX"; + Name = "MIX"; + Colour = PIXPACK(0xFFD090); + Description = "Mixes particles."; +} + +int Tool_Mix::Perform(Simulation * sim, Particle * cpart, int x, int y, float strength) +{ + int thisPart = sim->pmap[y][x]; + if(!thisPart) + return 0; + + if(rand() % 100 != 0) + return 0; + + int distance = strength * 10; + + if(!(sim->elements[thisPart&0xFF].Properties & TYPE_PART)) + return 0; + + int newX = x + (rand() % distance) - (distance/2); + int newY = y + (rand() % distance) - (distance/2); + + if(newX < 0 || newY < 0 || newX >= XRES || newY >= YRES) + return 0; + + int thatPart = sim->pmap[newY][newX]; + if(!thatPart) + return 0; + + if(!(sim->elements[thatPart&0xFF].Properties & TYPE_PART)) + return 0; + + sim->pmap[y][x] = thatPart; + sim->parts[thatPart>>8].x = x; + sim->parts[thatPart>>8].y = y; + + sim->pmap[newY][newX] = thisPart; + sim->parts[thisPart>>8].x = newX; + sim->parts[thisPart>>8].y = newY; + + /*if(!cpart) + return 0; + if (cpart->type == PT_PUMP || cpart->type == PT_GPMP) + cpart->temp += strength*.1f; + else + cpart->temp += strength*2.0f; + + if (cpart->temp > MAX_TEMP) + cpart->temp = MAX_TEMP; + else if (cpart->temp < 0) + cpart->temp = 0; + return 1;*/ +} + +Tool_Mix::~Tool_Mix() {}