glow can have a ctype of:
GLOW ctype changes according to the pressure, and determines the green component of its colour (temperature = red component, velocity = blue component).
#include "simulation/Elements.h" | |
//#TPT-Directive ElementClass Element_GLOW PT_GLOW 66 | |
Element_GLST::Element_GLST() | |
{ | |
Identifier = "DEFAULT_PT_GLST"; | |
Name = "GLST"; | |
Colour = PIXPACK(0x445464); | |
MenuVisible = 1; | |
MenuSection = SC_POWDER; | |
Enabled = 1; | |
Advection = 0.3f; | |
AirDrag = 0.02f * CFDS; | |
AirLoss = 0.98f; | |
Loss = 0.80f; | |
Collision = 0.0f; | |
Gravity = 0.15f; | |
Diffusion = 0.00f; | |
HotAir = 0.000f * CFDS; | |
Falldown = 2; | |
Flammable = 1; | |
Explosive = 0; | |
Meltable = 0; | |
Hardness = 4; | |
Weight = 65; | |
Temperature = R_TEMP+20.0f+273.15f; | |
HeatConduct = 36; | |
Description = "Glow, Glows under pressure."; | |
State = ST_POWDER; | |
Properties = TYPE_POWDER|PROP_LIFE_DEC; | |
LowPressure = IPL; | |
LowPressureTransition = NT; | |
HighPressure = IPH; | |
HighPressureTransition = NT; | |
LowTemperature = ITL; | |
LowTemperatureTransition = NT; | |
HighTemperature = ITH; | |
HighTemperatureTransition = NT; | |
Update = &Element_GLOW::update; | |
Graphics = &Element_GLOW::graphics; | |
} | |
//#TPT-Directive ElementHeader Element_GLOW static int update(UPDATE_FUNC_ARGS) | |
int Element_GLOW::update(UPDATE_FUNC_ARGS) | |
{ | |
int r, rx, ry; | |
for (rx=-1; rx<2; rx++) | |
for (ry=-1; ry<2; ry++) | |
if (BOUNDS_CHECK && (rx || ry)) | |
{ | |
r = pmap[y+ry][x+rx]; | |
if (!r) | |
continue; | |
if ((r&0xFF)==PT_WATR && !(rand()%400)) | |
{ | |
sim->kill_part(i); | |
sim->part_change_type(r>>8,x+rx,y+ry,PT_DEUT); | |
parts[r>>8].life = 10; | |
return 1; | |
} | |
} | |
parts[i].ctype = sim->pv[y/CELL][x/CELL]*16; | |
parts[i].tmp = abs((int)((sim->vx[y/CELL][x/CELL]+sim->vy[y/CELL][x/CELL])*16.0f)) + abs((int)((parts[i].vx+parts[i].vy)*64.0f)); | |
return 0; | |
} | |
//#TPT-Directive ElementHeader Element_GLST static int graphics(GRAPHICS_FUNC_ARGS) | |
int Element_GLST::graphics(GRAPHICS_FUNC_ARGS) | |
{ | |
*firer = restrict_flt(cpart->temp-(275.13f+32.0f), 0, 128)/50.0f; | |
*fireg = restrict_flt(cpart->ctype, 0, 128)/50.0f; | |
*fireb = restrict_flt(cpart->tmp, 0, 128)/50.0f; | |
*colr = restrict_flt(64.0f+cpart->temp-(275.13f+32.0f), 0, 255); | |
*colg = restrict_flt(64.0f+cpart->ctype, 0, 255); | |
*colb = restrict_flt(64.0f+cpart->tmp, 0, 255); | |
*pixel_mode |= FIRE_ADD; | |
return 0; | |
} | |
Element_GLST::~Element_GLST() {} |
<!-- /.repo-container -->
<!-- /.container --> <!-- /.site --> <!-- /.wrapper -->