diff options
Diffstat (limited to 'src/simulation/elements/BRAY.cpp')
| -rw-r--r-- | src/simulation/elements/BRAY.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/simulation/elements/BRAY.cpp b/src/simulation/elements/BRAY.cpp new file mode 100644 index 0000000..dfcd080 --- /dev/null +++ b/src/simulation/elements/BRAY.cpp @@ -0,0 +1,109 @@ +#include "simulation/Elements.h" +//#TPT-Directive ElementClass Element_BRAY PT_BRAY 127 +Element_BRAY::Element_BRAY() +{ + Identifier = "DEFAULT_PT_BRAY"; + Name = "BRAY"; + Colour = PIXPACK(0xFFFFFF); + MenuVisible = 0; + MenuSection = SC_ELEC; + Enabled = 1; + + Advection = 0.0f; + AirDrag = 0.00f * CFDS; + AirLoss = 0.90f; + Loss = 0.00f; + Collision = 0.0f; + Gravity = 0.0f; + Diffusion = 0.00f; + HotAir = 0.000f * CFDS; + Falldown = 0; + + Flammable = 0; + Explosive = 0; + Meltable = 0; + Hardness = 1; + + Weight = 100; + + Temperature = R_TEMP+0.0f +273.15f; + HeatConduct = 251; + Description = "Ray Point. Rays create points when they collide"; + + State = ST_SOLID; + Properties = TYPE_SOLID|PROP_LIFE_DEC|PROP_LIFE_KILL; + + LowPressure = IPL; + LowPressureTransition = NT; + HighPressure = IPH; + HighPressureTransition = NT; + LowTemperature = ITL; + LowTemperatureTransition = NT; + HighTemperature = ITH; + HighTemperatureTransition = NT; + + Update = NULL; + Graphics = &Element_BRAY::graphics; +} + +//#TPT-Directive ElementHeader Element_BRAY static int graphics(GRAPHICS_FUNC_ARGS) +int Element_BRAY::graphics(GRAPHICS_FUNC_ARGS) + +{ + int x, trans = 255; + if(cpart->tmp==0) + { + trans = cpart->life * 7; + if (trans>255) trans = 255; + if (cpart->ctype) { + *colg = 0; + *colb = 0; + *colr = 0; + for (x=0; x<12; x++) { + *colr += (cpart->ctype >> (x+18)) & 1; + *colb += (cpart->ctype >> x) & 1; + } + for (x=0; x<12; x++) + *colg += (cpart->ctype >> (x+9)) & 1; + x = 624/(*colr+*colg+*colb+1); + *colr *= x; + *colg *= x; + *colb *= x; + } + } + else if(cpart->tmp==1) + { + trans = cpart->life/4; + if (trans>255) trans = 255; + if (cpart->ctype) { + *colg = 0; + *colb = 0; + *colr = 0; + for (x=0; x<12; x++) { + *colr += (cpart->ctype >> (x+18)) & 1; + *colb += (cpart->ctype >> x) & 1; + } + for (x=0; x<12; x++) + *colg += (cpart->ctype >> (x+9)) & 1; + x = 624/(*colr+*colg+*colb+1); + *colr *= x; + *colg *= x; + *colb *= x; + } + } + else if(cpart->tmp==2) + { + trans = cpart->life*100; + if (trans>255) trans = 255; + *colr = 255; + *colg = 150; + *colb = 50; + } + *cola = trans; + *pixel_mode &= ~PMODE; + *pixel_mode |= PMODE_BLEND | PMODE_GLOW; + return 0; +} + + +Element_BRAY::~Element_BRAY() {}
\ No newline at end of file |
