[ODE] auto-disable patch (yet again)

Russ Smith russ at q12.org
Thu Apr 22 07:13:14 MST 2004


> It seems that a call to dInternalHandleAutoDisabling is missing...

oops ... fixed.

russ.

--
Russ Smith
http://www.q12.org/

On Thu, 22 Apr 2004, Aras Pranckevicius wrote:

> >   * i changed the auto-disable code a bit: you might want to verify
> that
> >     my changes make sense.
>
> It seems that a call to dInternalHandleAutoDisabling is missing from the
> actual StepFast code (it is in the function processIslandsFast that
> isn't used by default, and it's missing in processIslandsFast that's
> used by default).
>
> > the test_boxstack demo has been modified (a one line change!) to
> > auto-disable its bodies. disabled bodies display as red ... try it,
> it's
> > fun!
>
> Yes :)
>
> > there are two big issues still to resolve with auto-disabling:
> >   * we shouldn't be doing collision work for disabled bodies.
>
> A quick and easy one is to do this in your collision callback (eg. for
> test-boxstack):
> // -----------------
> static void nearCallback (void *data, dGeomID o1, dGeomID o2) {
>   // usual stuff...
>   // exit without doing anything if the two bodies are connected by a
> joint
>   dBodyID b1 = dGeomGetBody(o1);
>   dBodyID b2 = dGeomGetBody(o2);
>   if (b1 && b2 && dAreConnectedExcluding (b1,b2,dJointTypeContact))
> return;
>
>   // take care of disabled bodies
>   if( b1 && !b2 && !dBodyIsEnabled(b1) )
>    return; // b1 is disabled and collides with no-body
>   if( b2 && !b1 && !dBodyIsEnabled(b2) )
>     return; // b2 is disabled and collides with no-body
>   if( b1 && b2 && !dBodyIsEnabled(b1) && !dBodyIsEnabled(b2) )
>    return; // both b1 and b2 are disabled
>
>   // the rest of code...
> // -----------------
>
> This way, collision checks for disabled-vs-staticgeom and
> disabled-vs-disabled are skipped. AABB tests aren't, though, so it may
> be worth doing earlier...
>
>
> Aras Pranckevicius aka NeARAZ
> http://www.gim.ktu.lt/nesnausk/nearaz/
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>



More information about the ODE mailing list