fix crash with high speed photons in loop edge mode
This commit is contained in:
parent
dd102c1f11
commit
b1fc134204
@ -3220,7 +3220,7 @@ void Simulation::delete_part(int x, int y)//calls kill_part with the particle lo
|
||||
|
||||
void Simulation::UpdateParticles(int start, int end)
|
||||
{
|
||||
int i, j, x, y, t, nx, ny, r, surround_space, s, lt, rt, nt;
|
||||
int i, j, x, y, t, nx, ny, r, surround_space, s, rt, nt;
|
||||
float mv, dx, dy, nrx, nry, dp, ctemph, ctempl, gravtot;
|
||||
int fin_x, fin_y, clear_x, clear_y, stagnant;
|
||||
float fin_xf, fin_yf, clear_xf, clear_yf;
|
||||
@ -4012,18 +4012,20 @@ killed:
|
||||
}
|
||||
else if (elements[t].Properties & TYPE_ENERGY)
|
||||
{
|
||||
if (t == PT_PHOT) {
|
||||
if (t == PT_PHOT)
|
||||
{
|
||||
if (parts[i].flags&FLAG_SKIPMOVE)
|
||||
{
|
||||
parts[i].flags &= ~FLAG_SKIPMOVE;
|
||||
continue;
|
||||
}
|
||||
|
||||
rt = pmap[fin_y][fin_x] & 0xFF;
|
||||
lt = pmap[y][x] & 0xFF;
|
||||
|
||||
r = eval_move(PT_PHOT, fin_x, fin_y, NULL);
|
||||
if (((rt==PT_GLAS && lt!=PT_GLAS) || (rt!=PT_GLAS && lt==PT_GLAS)) && r) {
|
||||
if (eval_move(PT_PHOT, fin_x, fin_y, NULL))
|
||||
{
|
||||
int rt = pmap[fin_y][fin_x] & 0xFF;
|
||||
int lt = pmap[y][x] & 0xFF;
|
||||
if ((rt==PT_GLAS && lt!=PT_GLAS) || (rt!=PT_GLAS && lt==PT_GLAS))
|
||||
{
|
||||
if (!get_normal_interp(REFRACT|t, parts[i].x, parts[i].y, parts[i].vx, parts[i].vy, &nrx, &nry)) {
|
||||
kill_part(i);
|
||||
continue;
|
||||
@ -4060,6 +4062,7 @@ killed:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stagnant)//FLAG_STAGNANT set, was reflected on previous frame
|
||||
{
|
||||
// cast coords as int then back to float for compatibility with existing saves
|
||||
|
Reference in New Issue
Block a user