| 94 | } |
| 95 | void dGeomRayMotionDestroy(dGeomID ray) { dGeomDestroy(((dxRayMotions*)dGeomGetClassData(ray))->ray); } |
| 96 | dxGeom* dCreateRayMotions(dSpaceID space) |
| 97 | { |
| 98 | if (dRayMotionsClassUser == -1) |
| 99 | { |
| 100 | dGeomClass c; |
| 101 | c.bytes = sizeof(dxRayMotions); |
| 102 | c.collider = &dRayMotionsColliderFn; |
| 103 | c.aabb = &dRayMotionsAABB; |
| 104 | c.aabb_test = 0; |
| 105 | c.dtor = &dGeomRayMotionDestroy; |
| 106 | dRayMotionsClassUser = dCreateGeomClass(&c); |
| 107 | } |
| 108 | dGeomID g = dCreateGeom(dRayMotionsClassUser); |
| 109 | if (space) |
| 110 | dSpaceAdd(space, g); |
| 111 | dxRayMotions* c = (dxRayMotions*)dGeomGetClassData(g); |
| 112 | c->ray = dCreateRay(space, REAL(1.)); |
| 113 | return g; |
| 114 | } |
| 115 | |
| 116 | void dGeomRayMotionsSet(dGeomID g, const dReal* p, const dReal* d, dReal l) |
| 117 | { |
no test coverage detected