Small fixes
Fix nearest_part distance calculation Rename air constants to avoid PLOSS clash with math.h Prevent crashes due to bad lava ctype.
This commit is contained in:
parent
c78d4203ee
commit
77bcac1a56
@ -14,8 +14,6 @@
|
||||
|
||||
#define SERVER "powdertoy.co.uk"
|
||||
|
||||
#undef PLOSS
|
||||
|
||||
#define THUMB_CACHE_SIZE 256
|
||||
|
||||
#define IMGCONNS 3
|
||||
@ -45,11 +43,11 @@ extern unsigned char ZSIZE;
|
||||
#define ISTP (CELL/2)
|
||||
#define CFDS (4.0f/CELL)
|
||||
|
||||
#define TSTEPP 0.3f
|
||||
#define TSTEPV 0.4f
|
||||
#define VADV 0.3f
|
||||
#define VLOSS 0.999f
|
||||
#define PLOSS 0.9999f
|
||||
#define AIR_TSTEPP 0.3f
|
||||
#define AIR_TSTEPV 0.4f
|
||||
#define AIR_VADV 0.3f
|
||||
#define AIR_VLOSS 0.999f
|
||||
#define AIR_PLOSS 0.9999f
|
||||
|
||||
#define GRID_X 5
|
||||
#define GRID_Y 4
|
||||
|
32
src/air.c
32
src/air.c
@ -86,8 +86,8 @@ void update_air(void)
|
||||
dp = 0.0f;
|
||||
dp += vx[y][x-1] - vx[y][x];
|
||||
dp += vy[y-1][x] - vy[y][x];
|
||||
pv[y][x] *= PLOSS;
|
||||
pv[y][x] += dp*TSTEPP;
|
||||
pv[y][x] *= AIR_PLOSS;
|
||||
pv[y][x] += dp*AIR_TSTEPP;
|
||||
}
|
||||
|
||||
for (y=0; y<YRES/CELL-1; y++)
|
||||
@ -96,10 +96,10 @@ void update_air(void)
|
||||
dx = dy = 0.0f;
|
||||
dx += pv[y][x] - pv[y][x+1];
|
||||
dy += pv[y][x] - pv[y+1][x];
|
||||
vx[y][x] *= VLOSS;
|
||||
vy[y][x] *= VLOSS;
|
||||
vx[y][x] += dx*TSTEPV;
|
||||
vy[y][x] += dy*TSTEPV;
|
||||
vx[y][x] *= AIR_VLOSS;
|
||||
vy[y][x] *= AIR_VLOSS;
|
||||
vx[y][x] += dx*AIR_TSTEPV;
|
||||
vy[y][x] += dy*AIR_TSTEPV;
|
||||
if (bmap[y][x]==WL_WALL || bmap[y][x+1]==WL_WALL ||
|
||||
bmap[y][x]==WL_WALLELEC || bmap[y][x+1]==WL_WALLELEC ||
|
||||
(bmap[y][x]==WL_EWALL && !emap[y][x]) ||
|
||||
@ -148,20 +148,20 @@ void update_air(void)
|
||||
if (i>=2 && i<XRES/CELL-3 &&
|
||||
j>=2 && j<YRES/CELL-3)
|
||||
{
|
||||
dx *= 1.0f - VADV;
|
||||
dy *= 1.0f - VADV;
|
||||
dx *= 1.0f - AIR_VADV;
|
||||
dy *= 1.0f - AIR_VADV;
|
||||
|
||||
dx += VADV*(1.0f-tx)*(1.0f-ty)*vx[j][i];
|
||||
dy += VADV*(1.0f-tx)*(1.0f-ty)*vy[j][i];
|
||||
dx += AIR_VADV*(1.0f-tx)*(1.0f-ty)*vx[j][i];
|
||||
dy += AIR_VADV*(1.0f-tx)*(1.0f-ty)*vy[j][i];
|
||||
|
||||
dx += VADV*tx*(1.0f-ty)*vx[j][i+1];
|
||||
dy += VADV*tx*(1.0f-ty)*vy[j][i+1];
|
||||
dx += AIR_VADV*tx*(1.0f-ty)*vx[j][i+1];
|
||||
dy += AIR_VADV*tx*(1.0f-ty)*vy[j][i+1];
|
||||
|
||||
dx += VADV*(1.0f-tx)*ty*vx[j+1][i];
|
||||
dy += VADV*(1.0f-tx)*ty*vy[j+1][i];
|
||||
dx += AIR_VADV*(1.0f-tx)*ty*vx[j+1][i];
|
||||
dy += AIR_VADV*(1.0f-tx)*ty*vy[j+1][i];
|
||||
|
||||
dx += VADV*tx*ty*vx[j+1][i+1];
|
||||
dy += VADV*tx*ty*vy[j+1][i+1];
|
||||
dx += AIR_VADV*tx*ty*vx[j+1][i+1];
|
||||
dy += AIR_VADV*tx*ty*vy[j+1][i+1];
|
||||
}
|
||||
|
||||
if (bmap[y][x] == WL_FAN)
|
||||
|
@ -1113,7 +1113,7 @@ int nearest_part(int ci, int t)
|
||||
{
|
||||
if (parts[i].type==t&&!parts[i].life&&i!=ci)
|
||||
{
|
||||
ndistance = abs((cx-parts[i].x)+(cy-parts[i].y));// Faster but less accurate Older: sqrt(pow(cx-parts[i].x, 2)+pow(cy-parts[i].y, 2));
|
||||
ndistance = abs(cx-parts[i].x)+abs(cy-parts[i].y);// Faster but less accurate Older: sqrt(pow(cx-parts[i].x, 2)+pow(cy-parts[i].y, 2));
|
||||
if (ndistance<distance)
|
||||
{
|
||||
distance = ndistance;
|
||||
@ -1290,9 +1290,9 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
if (ISGOL==1&&++CGOL>=GSPEED)//GSPEED is frames per generation
|
||||
{
|
||||
int createdsomething = 0;
|
||||
CGOL=0;
|
||||
ISGOL=0;
|
||||
int createdsomething = 0;
|
||||
for (nx=CELL; nx<XRES-CELL; nx++)
|
||||
for (ny=CELL; ny<YRES-CELL; ny++)
|
||||
{
|
||||
@ -1553,7 +1553,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
else t = PT_DSTW;
|
||||
}
|
||||
else if (t==PT_LAVA) {
|
||||
if (parts[i].ctype&&parts[i].ctype!=PT_LAVA) {
|
||||
if (parts[i].ctype && parts[i].ctype<PT_NUM && parts[i].ctype!=PT_LAVA) {
|
||||
if (ptransitions[parts[i].ctype].tht==PT_LAVA&&pt>=ptransitions[parts[i].ctype].thv) s = 0;
|
||||
else if (parts[i].ctype==PT_THRM&&pt>=ptransitions[PT_BMTL].thv) s = 0;
|
||||
else if (pt>=973.0f) s = 0; // freezing point for lava with any other (not listed in ptransitions as turning into lava) ctype
|
||||
|
Reference in New Issue
Block a user