Particle/powder mixing tool

This commit is contained in:
Simon Robertshaw 2016-04-17 21:55:08 +01:00
parent 1171c308e1
commit e7b0e3f90d

60
src/simulation/simtools/Mix.cpp Executable file
View File

@ -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() {}