-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Am 20.08.2007 um 01:38 schrieb felix winkelmann:
On 8/20/07, Bastian Müller <address@hidden> wrote:
The code doesn't crash. The callback get's called. That's not the
problem.
Oh, well. Then everything is fine.
What's missing, is the support for argument passing.
C_save should work ok. What exactly does happen?
In ode.i:
static void
EGG_near_callback (void *closure_root, dGeomID o1, dGeomID o2) {
C_save(o1);
C_save(o2);
C_callback(CHICKEN_gc_root_ref(closure_root), 2);
}
scheme callback:
(define (near-collision geom1 geom2)
(write "near collison") (newline)
(let ((body1 (ode-geom-get-body geom1))
(body2 (ode-geom-get-body geom2))
...
>>>
"near collison"
Error: Type error in argument #1: expected struct dxGeom *|dGeomID:
"bad argument type"
I think EGG_near_callback gets called in the ODE internals with real
dGeomIDs and near-callback get's real dGeomIDs. The problem is,
that all swig-interface functions don't handle the real data but
swig-pointers to the actual data. That means, ode-geom-get-body
expects an swig-pointer to an "struct dxGeom *|dGeomID" and not
the actual dGeomID. I think the error-message is in this case somehow
misleading.
Is that correct? If so, any idea how to fix that?