[Opal-commits] opal/src/ODE ODESolid.cpp,1.90,1.91 ODESolid.h,1.71,1.72
Status: Inactive
Brought to you by:
tylerstreeter
|
From: Olex <ole...@us...> - 2005-11-06 03:20:19
|
Update of /cvsroot/opal/opal/src/ODE In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13316/src/ODE Modified Files: ODESolid.cpp ODESolid.h Log Message: Fixed ODESolid::setStatic(). It did not put geoms back into parent space it was given originally. Index: ODESolid.h =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESolid.h,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** ODESolid.h 21 Jul 2005 15:59:01 -0000 1.71 --- ODESolid.h 6 Nov 2005 03:20:01 -0000 1.72 *************** *** 157,160 **** --- 157,163 ---- void destroyGeoms(); + /// move to geometry to current space + void moveToSpace(); + virtual void applyForce(const Force& f); Index: ODESolid.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESolid.cpp,v retrieving revision 1.90 retrieving revision 1.91 diff -C2 -d -r1.90 -r1.91 *** ODESolid.cpp 21 Jul 2005 15:59:01 -0000 1.90 --- ODESolid.cpp 6 Nov 2005 03:20:01 -0000 1.91 *************** *** 237,262 **** mSpaceID = ((ODESpace*)newSpace)->internal_getSpaceID(); ! // remove all current shapes from their spaces and add them to the ! // new one ! std::vector<GeomData*>::iterator iter; ! for (iter = mGeomDataList.begin(); iter != mGeomDataList.end(); ! ++iter) ! { ! if (0 != (*iter)->transformID) ! { ! // This geom uses a transform, so apply the new space only ! // to the transform geom. ! dSpaceRemove((*iter)->spaceID, (*iter)->transformID); ! dSpaceAdd(mSpaceID, (*iter)->transformID); ! } ! else ! { ! // Normal geom with no transform. ! dSpaceRemove((*iter)->spaceID, (*iter)->geomID); ! dSpaceAdd(mSpaceID, (*iter)->geomID); ! } ! ! (*iter)->spaceID = mSpaceID; ! } } --- 237,241 ---- mSpaceID = ((ODESpace*)newSpace)->internal_getSpaceID(); ! moveToSpace(); } *************** *** 368,371 **** --- 347,352 ---- } } + + moveToSpace(); } else *************** *** 383,386 **** --- 364,369 ---- // destroy the body dBodyDestroy(mBodyID); + + moveToSpace(); } else *************** *** 391,394 **** --- 374,403 ---- } + void ODESolid::moveToSpace() + { + // remove all current shapes from their spaces and add them to the + // new one + std::vector<GeomData*>::iterator iter; + for (iter = mGeomDataList.begin(); iter != mGeomDataList.end(); + ++iter) + { + if (0 != (*iter)->transformID) + { + // This geom uses a transform, so apply the new space only + // to the transform geom. + dSpaceRemove((*iter)->spaceID, (*iter)->transformID); + dSpaceAdd(mSpaceID, (*iter)->transformID); + } + else + { + // Normal geom with no transform. + dSpaceRemove((*iter)->spaceID, (*iter)->geomID); + dSpaceAdd(mSpaceID, (*iter)->geomID); + } + + (*iter)->spaceID = mSpaceID; + } + } + void ODESolid::setSleeping(bool sleeping) { |