[Opal-commits] opal/src/ODE ODESimulator.cpp,1.81,1.82 ODESimulator.h,1.57,1.58
Status: Inactive
Brought to you by:
tylerstreeter
|
From: tylerstreeter <tyl...@us...> - 2005-03-03 04:40:09
|
Update of /cvsroot/opal/opal/src/ODE In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16484/src/ODE Modified Files: ODESimulator.cpp ODESimulator.h Log Message: added the ability to loop through a BlueprintInstance's objects Index: ODESimulator.h =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESimulator.h,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** ODESimulator.h 1 Mar 2005 05:04:23 -0000 1.57 --- ODESimulator.h 3 Mar 2005 04:39:57 -0000 1.58 *************** *** 74,83 **** virtual Space* OPAL_CALL createSpace(); - //convenience collision check function //virtual void OPAL_CALL collide(const Solid* solid, // std::vector<Solid*>* solids); ! //convenience ray casting function ! virtual RayHit OPAL_CALL shootRay(const Point3r& origin, const Vec3r& dir, real length); --- 74,81 ---- virtual Space* OPAL_CALL createSpace(); //virtual void OPAL_CALL collide(const Solid* solid, // std::vector<Solid*>* solids); ! virtual RaycastResult OPAL_CALL shootRay(const Point3r& origin, const Vec3r& dir, real length); *************** *** 86,91 **** virtual Vec3r OPAL_CALL getGravity()const; - //virtual void OPAL_CALL setDefaultSleepiness(real value); - virtual void OPAL_CALL setSolverAccuracy(SolverAccuracyLevel level); --- 84,87 ---- *************** *** 102,106 **** /// Helper function for ray casting. ! void OPAL_CALL internal_setRayHit(Solid* solid, const Point3r& intersection, const Vec3r& normal, real distance); --- 98,102 ---- /// Helper function for ray casting. ! void OPAL_CALL internal_setRaycastResult(Solid* solid, const Point3r& intersection, const Vec3r& normal, real distance); *************** *** 128,132 **** /// Used for ray casting. ! RayHit mRayHit; private: }; --- 124,128 ---- /// Used for ray casting. ! RaycastResult mRaycastResult; private: }; Index: ODESimulator.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESimulator.cpp,v retrieving revision 1.81 retrieving revision 1.82 diff -C2 -d -r1.81 -r1.82 *** ODESimulator.cpp 1 Mar 2005 05:04:23 -0000 1.81 --- ODESimulator.cpp 3 Mar 2005 04:39:57 -0000 1.82 *************** *** 640,644 **** contactArray[0].normal[1], contactArray[0].normal[2]); ! sim->internal_setRayHit(geomData0->solid, intersection, normal, contactArray[0].depth); } --- 640,644 ---- contactArray[0].normal[1], contactArray[0].normal[2]); ! sim->internal_setRaycastResult(geomData0->solid, intersection, normal, contactArray[0].depth); } *************** *** 659,671 **** } ! void ODESimulator::internal_setRayHit(Solid* solid, const Point3r& intersection, const Vec3r& normal, real distance) { ! if (NULL == mRayHit.solid || (distance < mRayHit.distance)) { ! mRayHit.solid = solid; ! mRayHit.intersection = intersection; ! mRayHit.normal = normal; ! mRayHit.distance = distance; } } --- 659,671 ---- } ! void ODESimulator::internal_setRaycastResult(Solid* solid, const Point3r& intersection, const Vec3r& normal, real distance) { ! if (NULL == mRaycastResult.solid || (distance < mRaycastResult.distance)) { ! mRaycastResult.solid = solid; ! mRaycastResult.intersection = intersection; ! mRaycastResult.normal = normal; ! mRaycastResult.distance = distance; } } *************** *** 739,749 **** //} ! RayHit ODESimulator::shootRay(const Point3r& origin, const Vec3r& dir, ! real length) { ! mRayHit.solid = NULL; ! mRayHit.intersection.set(0,0,0); ! mRayHit.normal.set(1,0,0); ! mRayHit.distance = 0; dGeomID rayGeomID = dCreateRay(mRootSpaceID, length); --- 739,749 ---- //} ! RaycastResult ODESimulator::shootRay(const Point3r& origin, ! const Vec3r& dir, real length) { ! mRaycastResult.solid = NULL; ! mRaycastResult.intersection.set(0,0,0); ! mRaycastResult.normal.set(1,0,0); ! mRaycastResult.distance = 0; dGeomID rayGeomID = dCreateRay(mRootSpaceID, length); *************** *** 751,768 **** dir[1], dir[2]); ! //check for collisions; this will fill mRayHit (if a collision occurs) dSpaceCollide2(rayGeomID, (dGeomID)mRootSpaceID, this, &ode_hidden::internal_raycastCollisionCallback); ! RayHit rayHit; ! rayHit.solid = mRayHit.solid; //note that this may remain NULL ! rayHit.intersection = mRayHit.intersection; ! rayHit.normal = mRayHit.normal; ! rayHit.distance = mRayHit.distance; // finished with ray, so destroy it dGeomDestroy(rayGeomID); ! return rayHit; } --- 751,768 ---- dir[1], dir[2]); ! //check for collisions; this will fill mRaycastResult (if a collision occurs) dSpaceCollide2(rayGeomID, (dGeomID)mRootSpaceID, this, &ode_hidden::internal_raycastCollisionCallback); ! RaycastResult result; ! result.solid = mRaycastResult.solid; //note that this may remain NULL ! result.intersection = mRaycastResult.intersection; ! result.normal = mRaycastResult.normal; ! result.distance = mRaycastResult.distance; // finished with ray, so destroy it dGeomDestroy(rayGeomID); ! return result; } |