[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [BUG] Xscortch Bug Padded physics
- To: xscorch@xxxxxxxxxxx
- Subject: Re: [BUG] Xscortch Bug Padded physics
- From: Sayu <supersayu@xxxxxxxxx>
- Date: Sun, 23 Jan 2005 18:14:51 -0500
>Please CC as I'm not subscribed.
Unfortunately I can't do that as the web archive of the mailing list
doesn't show email domain names. But in case anyone else needs to
know...
I found a the same problem a while ago and put together a quick fix.
When a roller-class object drops onto a bouncing floor type (elastic,
etc), the calculations do go into an infinite loop. It comes down to
a simple patch of the boundary conditon checking code. This is a
reconstruction, I don't have my code onhand, but I believe it's
accurate:
in sphysics.c:
in function _sc_traj_pass_wall_elastic(const sc_config *c,
sc_trajectory *tr,
sc_trajectory_data *t, double elasticity) :
{
...
/* Check if we hit ground or ceiling. */
if(rint(tr->cury) < 0) {
/*Begin Roller Glitch Workaround*/
if( tr->type == SC_TRAJ_ROLLER )
return(SC_TRAJ_IMPACT_GROUND);
/*End Roller Glitch Workaround*/
tr->cury = 0;
tr->ctry = tr->cury;
tr->ctrx = tr->curx;
tr->vely = -sc_traj_get_velocity_y(tr) * elasticity;
tr->velx = sc_traj_get_velocity_x(tr);
tr->stopstep -= tr->timestep;
tr->timestep = 0;
tr->finalstep = 0;
t->stepy = fabs(t->stepy) * elasticity;
t->stepx *= elasticity;
}
...
}
Hope this is helpful to someone. At least, unlike my ugly magnetized
weapons hack, it's practical.
- Prev by Date: [BUG] Xscortch Bug Padded physics
- Next by Date: patch available for a stack smash
- Previous by thread: [BUG] Xscortch Bug Padded physics
- Next by thread: patch available for a stack smash
- Index(es):