Skip to content

Commit

Permalink
Particle/powder mixing tool
Browse files Browse the repository at this point in the history
  • Loading branch information
simtr committed Apr 17, 2016
1 parent 1171c30 commit e7b0e3f
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions 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() {}

0 comments on commit e7b0e3f

Please sign in to comment.