Newtonian Gravity sources inside of a no gravity grav wall zone no longer generate gravity

This commit is contained in:
jacob1 2015-12-26 01:23:53 -05:00
parent 5864c3691e
commit 9a2b7749c7
4 changed files with 18 additions and 10 deletions

View File

@ -69,10 +69,13 @@ int Element_GBMB::update(UPDATE_FUNC_ARGS)
} }
} }
} }
if(parts[i].life>20) if (sim->grav->gravmask[(y/CELL)*(XRES/CELL)+(x/CELL)])
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 20; {
else if(parts[i].life>=1) if (parts[i].life>20)
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = -80; sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 20;
else if (parts[i].life>=1)
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = -80;
}
return 0; return 0;
} }

View File

@ -61,7 +61,8 @@ int Element_GPMP::update(UPDATE_FUNC_ARGS)
if (parts[i].temp<= -256.0+273.15) if (parts[i].temp<= -256.0+273.15)
parts[i].temp = -256.0+273.15; parts[i].temp = -256.0+273.15;
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 0.2f*(parts[i].temp-273.15); if (sim->grav->gravmask[(y/CELL)*(XRES/CELL)+(x/CELL)])
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 0.2f*(parts[i].temp-273.15);
for (rx=-2; rx<3; rx++) for (rx=-2; rx<3; rx++)
for (ry=-2; ry<3; ry++) for (ry=-2; ry<3; ry++)
if (BOUNDS_CHECK && (rx || ry)) if (BOUNDS_CHECK && (rx || ry))

View File

@ -54,7 +54,8 @@ int Element_GRVT::update(UPDATE_FUNC_ARGS)
if (parts[i].tmp <= -100) if (parts[i].tmp <= -100)
parts[i].tmp = -100; parts[i].tmp = -100;
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 0.2f*parts[i].tmp; if (sim->grav->gravmask[(y/CELL)*(XRES/CELL)+(x/CELL)])
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] = 0.2f*parts[i].tmp;
return 0; return 0;
} }

View File

@ -47,10 +47,13 @@ Element_NBHL::Element_NBHL()
//#TPT-Directive ElementHeader Element_NBHL static int update(UPDATE_FUNC_ARGS) //#TPT-Directive ElementHeader Element_NBHL static int update(UPDATE_FUNC_ARGS)
int Element_NBHL::update(UPDATE_FUNC_ARGS) int Element_NBHL::update(UPDATE_FUNC_ARGS)
{ {
if (parts[i].tmp) if (sim->grav->gravmask[(y/CELL)*(XRES/CELL)+(x/CELL)])
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] += restrict_flt(0.001f*parts[i].tmp, 0.1f, 51.2f); {
else if (parts[i].tmp)
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] += 0.1f; sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] += restrict_flt(0.001f*parts[i].tmp, 0.1f, 51.2f);
else
sim->gravmap[(y/CELL)*(XRES/CELL)+(x/CELL)] += 0.1f;
}
return 0; return 0;
} }