opal-commits Mailing List for Open Physics Abstraction Layer (Page 23)
Status: Inactive
Brought to you by:
tylerstreeter
You can subscribe to this list here.
| 2005 |
Jan
|
Feb
(162) |
Mar
(134) |
Apr
(113) |
May
(13) |
Jun
(60) |
Jul
(18) |
Aug
(25) |
Sep
|
Oct
(2) |
Nov
(35) |
Dec
(76) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(3) |
Apr
(8) |
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
(1) |
Mar
(12) |
Apr
(16) |
May
(2) |
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
|
Nov
|
Dec
(3) |
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(15) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: tylerstreeter <tyl...@us...> - 2005-03-01 05:04:35
|
Update of /cvsroot/opal/opal/src/ODE In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21242/src/ODE Modified Files: ODEJoint.cpp ODESimulator.cpp ODESimulator.h ODESolid.cpp Log Message: fixed bugs in xml blueprint loading; added ragdoll xml file to sample app Index: ODESimulator.h =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESimulator.h,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -d -r1.56 -r1.57 *** ODESimulator.h 25 Feb 2005 06:40:26 -0000 1.56 --- ODESimulator.h 1 Mar 2005 05:04:23 -0000 1.57 *************** *** 135,139 **** namespace ode_hidden { ! // They don't use the OPAL_CALL calling convention // because they are functors passed to ODE which expects a different // calling convention. --- 135,139 ---- namespace ode_hidden { ! // These function don't use the OPAL_CALL calling convention // because they are functors passed to ODE which expects a different // calling convention. *************** *** 144,152 **** /// Special collision callback functor for volume collision /// checking. ! void internal_pickingCollisionCallback(void* data, dGeomID o0, dGeomID o1); /// Collision callback functor for ray casting. ! void internal_rayCastingCollisionCallback(void* data, dGeomID o0, dGeomID o1); --- 144,152 ---- /// Special collision callback functor for volume collision /// checking. ! void internal_volumeCollisionCallback(void* data, dGeomID o0, dGeomID o1); /// Collision callback functor for ray casting. ! void internal_raycastCollisionCallback(void* data, dGeomID o0, dGeomID o1); Index: ODESimulator.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESimulator.cpp,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** ODESimulator.cpp 25 Feb 2005 06:40:26 -0000 1.80 --- ODESimulator.cpp 1 Mar 2005 05:04:23 -0000 1.81 *************** *** 255,262 **** if (dGeomIsSpace(o0) || dGeomIsSpace(o1)) { ! //colliding a space with either a geom or another space dSpaceCollide2(o0, o1, data, &internal_collisionCallback); ! //colliding all geoms internal to the space if (dGeomIsSpace(o0)) { --- 255,262 ---- if (dGeomIsSpace(o0) || dGeomIsSpace(o1)) { ! // Colliding a space with either a geom or another space. dSpaceCollide2(o0, o1, data, &internal_collisionCallback); ! // Colliding all geoms internal to the space. if (dGeomIsSpace(o0)) { *************** *** 273,279 **** else { ! //colliding two geoms ! //use category/collide bitfields here, if applicable dBodyID o0BodyID = dGeomGetBody(o0); --- 273,279 ---- else { ! // Colliding two geoms. ! // Use category/collide bitfields here? dBodyID o0BodyID = dGeomGetBody(o0); *************** *** 311,315 **** } ! //now actually test for collision between the two geoms ODESimulator* sim = (ODESimulator*)data; dWorldID theWorldID = sim->internal_getWorldID(); --- 311,315 ---- } ! // Now actually test for collision between the two geoms. ODESimulator* sim = (ODESimulator*)data; dWorldID theWorldID = sim->internal_getWorldID(); *************** *** 318,322 **** dContactGeom contactArray[defaults::ode::maxContactPoints]; int numContacts = dCollide(o0, o1, ! defaults::ode::maxContactPoints, contactArray, sizeof(dContactGeom)); if (0 == numContacts) --- 318,323 ---- dContactGeom contactArray[defaults::ode::maxContactPoints]; int numContacts = dCollide(o0, o1, ! defaults::ode::maxContactPoints, contactArray, ! sizeof(dContactGeom)); if (0 == numContacts) *************** *** 326,331 **** dContact tempContact; ! bool generateContacts0 = true; // default to true ! bool generateContacts1 = true; // default to true GeomData* geomData0 = ((GeomData*)dGeomGetData(o0)); GeomData* geomData1 = ((GeomData*)dGeomGetData(o1)); --- 327,332 ---- dContact tempContact; ! bool generateContacts0 = true; // Default to true. ! bool generateContacts1 = true; // Default to true. GeomData* geomData0 = ((GeomData*)dGeomGetData(o0)); GeomData* geomData1 = ((GeomData*)dGeomGetData(o1)); *************** *** 333,343 **** Solid* solid1 = geomData1->solid; ! // early check to save some time if (solid0->getEventHandler() || solid1->getEventHandler()) { ! //call the event handlers - they will return true if they ! //want contacts generated; note: we only generate two ! //events per object/object collision; just use the ! //first contact to pass data to the event handlers CollisionEvent e; --- 334,344 ---- Solid* solid1 = geomData1->solid; ! // Early check to save some time. if (solid0->getEventHandler() || solid1->getEventHandler()) { ! // Call the event handlers - they will return true if ! // they want contacts generated. Note: we only want up to ! // two events per object/object collision; just use the ! // first contact to pass data to the event handlers. CollisionEvent e; *************** *** 359,368 **** } ! e.normal *= -1; //invert normal ! e.solid0 = solid1; //swap solid pointers e.solid1 = solid0; eventHandler = solid1->getEventHandler(); ! if (solid1->getEventHandler()) { generateContacts1 = --- 360,369 ---- } ! e.normal *= -1; // Invert normal. ! e.solid0 = solid1; // Swap solid pointers. e.solid1 = solid0; eventHandler = solid1->getEventHandler(); ! if (eventHandler) { generateContacts1 = *************** *** 371,375 **** } ! // handle one-sided contacts for two cases: 1) only one of // the above event handlers actually wants contacts generated, // 2) if the mass ratio is above some threshold, treat it as --- 372,376 ---- } ! // Handle one-sided contacts for two cases: 1) only one of // the above event handlers actually wants contacts generated, // 2) if the mass ratio is above some threshold, treat it as *************** *** 378,382 **** // (with the massive one being static), then also add the // massive object's velocity to the smaller one (velocity ! // calculated at the point of collision) if (true == generateContacts0 || true == generateContacts1) --- 379,383 ---- // (with the massive one being static), then also add the // massive object's velocity to the smaller one (velocity ! // calculated at the point of collision). if (true == generateContacts0 || true == generateContacts1) *************** *** 545,549 **** // Note: o0 should always be the main object (the geom to check against // everything else). ! void internal_pickingCollisionCallback(void* data, dGeomID o0, dGeomID o1) { --- 546,550 ---- // Note: o0 should always be the main object (the geom to check against // everything else). ! void internal_volumeCollisionCallback(void* data, dGeomID o0, dGeomID o1) { *************** *** 552,556 **** //colliding a space with either a geom or another space dSpaceCollide2(o0, o1, data, ! &internal_pickingCollisionCallback); } else --- 553,557 ---- //colliding a space with either a geom or another space dSpaceCollide2(o0, o1, data, ! &internal_volumeCollisionCallback); } else *************** *** 590,594 **** ODESimulator* sim = (ODESimulator*)data; ! // TODO: not sure if we can know that o1 is the picking // object, so we'll // just call this twice for now --- 591,595 ---- ODESimulator* sim = (ODESimulator*)data; ! // TODO: not sure if we can know that o1 is the volume // object, so we'll // just call this twice for now *************** *** 604,608 **** // Note: o1 is the ray geom. ! void internal_rayCastingCollisionCallback(void* data, dGeomID o0, dGeomID o1) { --- 605,609 ---- // Note: o1 is the ray geom. ! void internal_raycastCollisionCallback(void* data, dGeomID o0, dGeomID o1) { *************** *** 611,615 **** //colliding a space with either a geom or another space dSpaceCollide2(o0, o1, data, ! &internal_pickingCollisionCallback); } else --- 612,616 ---- //colliding a space with either a geom or another space dSpaceCollide2(o0, o1, data, ! &internal_volumeCollisionCallback); } else *************** *** 730,734 **** // solidIter != mCollidedSolids.end(); ++solidIter) // { ! // //we don't want the picking solid to be added // if (*solidIter != solid) // { --- 731,735 ---- // solidIter != mCollidedSolids.end(); ++solidIter) // { ! // //we don't want the volume solid to be added // if (*solidIter != solid) // { *************** *** 752,756 **** //check for collisions; this will fill mRayHit (if a collision occurs) dSpaceCollide2(rayGeomID, (dGeomID)mRootSpaceID, this, ! &ode_hidden::internal_rayCastingCollisionCallback); RayHit rayHit; --- 753,757 ---- //check for collisions; this will fill mRayHit (if a collision occurs) dSpaceCollide2(rayGeomID, (dGeomID)mRootSpaceID, this, ! &ode_hidden::internal_raycastCollisionCallback); RayHit rayHit; Index: ODESolid.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESolid.cpp,v retrieving revision 1.72 retrieving revision 1.73 diff -C2 -d -r1.72 -r1.73 *** ODESolid.cpp 26 Feb 2005 10:22:24 -0000 1.72 --- ODESolid.cpp 1 Mar 2005 05:04:23 -0000 1.73 *************** *** 138,141 **** --- 138,144 ---- setGlobalLinearVel(data.globalLinearVel); setGlobalAngularVel(data.globalAngularVel); + + // Set the Solid's name. + setName(data.name); } Index: ODEJoint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODEJoint.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** ODEJoint.cpp 26 Feb 2005 10:22:24 -0000 1.26 --- ODEJoint.cpp 1 Mar 2005 05:04:23 -0000 1.27 *************** *** 165,171 **** } ! // Allocate an ODE JointFeedback struct for this Joint. // TODO: for ball joints, should this get the joint id or the // amotor id? dJointSetFeedback(mJointID, &mJointFeedback); --- 165,183 ---- } ! // Tell ODE about the JointFeedback struct for this Joint. // TODO: for ball joints, should this get the joint id or the // amotor id? + mJointFeedback.f1[0] = 0; + mJointFeedback.f1[1] = 0; + mJointFeedback.f1[2] = 0; + mJointFeedback.t1[0] = 0; + mJointFeedback.t1[1] = 0; + mJointFeedback.t1[2] = 0; + mJointFeedback.f2[0] = 0; + mJointFeedback.f2[1] = 0; + mJointFeedback.f2[2] = 0; + mJointFeedback.t2[0] = 0; + mJointFeedback.t2[1] = 0; + mJointFeedback.t2[2] = 0; dJointSetFeedback(mJointID, &mJointFeedback); *************** *** 861,864 **** --- 873,880 ---- { dJointAttach(mJointID, 0, 0); + if (BALL_JOINT == mData.getType()) + { + dJointAttach(mAMotorID, 0, 0); + } } else *************** *** 867,874 **** --- 883,898 ---- { dJointAttach(mJointID, 0, solid1->internal_getBodyID()); + if (BALL_JOINT == mData.getType()) + { + dJointAttach(mAMotorID, 0, solid1->internal_getBodyID()); + } } else if (NULL == solid1) { dJointAttach(mJointID, solid0->internal_getBodyID(), 0); + if (BALL_JOINT == mData.getType()) + { + dJointAttach(mAMotorID, solid0->internal_getBodyID(), 0); + } } else *************** *** 876,879 **** --- 900,908 ---- dJointAttach(mJointID, solid0->internal_getBodyID(), solid1->internal_getBodyID()); + if (BALL_JOINT == mData.getType()) + { + dJointAttach(mAMotorID, solid0->internal_getBodyID(), + solid1->internal_getBodyID()); + } } |
|
From: Alan F. <pal...@us...> - 2005-02-28 03:28:11
|
Update of /cvsroot/opal/opal/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6493/src Modified Files: Blueprint.cpp Defines.h Logger.h Simulator.cpp Log Message: VC6 Build is working again. Minor changes such as not declairing index variables in for loops, and put some warning-disables to make it so the VC6 build doesn't spew the same useless warning everywhere. Index: Blueprint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Blueprint.cpp 26 Feb 2005 10:22:23 -0000 1.16 --- Blueprint.cpp 28 Feb 2005 03:27:54 -0000 1.17 *************** *** 74,78 **** { // Setup Joint reference indices. ! for (size_t i=0; i<mJointList.size();) { JointData* data = mJointList.at(i); --- 74,79 ---- { // Setup Joint reference indices. ! size_t i; ! for (i=0; i<mJointList.size();) { JointData* data = mJointList.at(i); *************** *** 102,106 **** // Setup Motor reference indices. ! for (size_t i=0; i<mMotorList.size();) { MotorData* m = mMotorList.at(i); --- 103,107 ---- // Setup Motor reference indices. ! for (i=0; i<mMotorList.size();) { MotorData* m = mMotorList.at(i); Index: Simulator.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Simulator.cpp,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** Simulator.cpp 26 Feb 2005 10:22:23 -0000 1.38 --- Simulator.cpp 28 Feb 2005 03:27:57 -0000 1.39 *************** *** 46,66 **** { // Mark everything as garbage, then collect the garbage. ! for (size_t i=0; i<mSolidList.size(); ++i) { mSolidGarbageList.push_back(mSolidList[i]); } ! for (size_t i=0; i<mJointList.size(); ++i) { mJointGarbageList.push_back(mJointList[i]); } ! for (size_t i=0; i<mMotorList.size(); ++i) { mMotorGarbageList.push_back(mMotorList[i]); } ! for (size_t i=0; i<mSensorList.size(); ++i) { mSensorGarbageList.push_back(mSensorList[i]); --- 46,67 ---- { // Mark everything as garbage, then collect the garbage. + size_t i; ! for (i=0; i<mSolidList.size(); ++i) { mSolidGarbageList.push_back(mSolidList[i]); } ! for (i=0; i<mJointList.size(); ++i) { mJointGarbageList.push_back(mJointList[i]); } ! for (i=0; i<mMotorList.size(); ++i) { mMotorGarbageList.push_back(mMotorList[i]); } ! for (i=0; i<mSensorList.size(); ++i) { mSensorGarbageList.push_back(mSensorList[i]); *************** *** 264,270 **** std::vector<Solid*> solidList; std::vector<Joint*> jointList; // Create all Solids in the Blueprint. ! for (int i=0; i<bp.getNumSolids(); ++i) { Solid* s = createSolid(); --- 265,272 ---- std::vector<Solid*> solidList; std::vector<Joint*> jointList; + int i; // Create all Solids in the Blueprint. ! for (i=0; i<bp.getNumSolids(); ++i) { Solid* s = createSolid(); *************** *** 280,284 **** // Create all Joints in the Blueprint. ! for (int i=0; i<bp.getNumJoints(); ++i) { // Setup the Solid reference pointers. --- 282,286 ---- // Create all Joints in the Blueprint. ! for (i=0; i<bp.getNumJoints(); ++i) { // Setup the Solid reference pointers. *************** *** 299,303 **** // Create all Motors in the Blueprint. ! for (int i=0; i<bp.getNumMotors(); ++i) { Motor* m = NULL; --- 301,305 ---- // Create all Motors in the Blueprint. ! for (i=0; i<bp.getNumMotors(); ++i) { Motor* m = NULL; *************** *** 741,745 **** void Simulator::collectGarbage() { ! for (size_t i=0; i<mSolidGarbageList.size(); ++i) { removeSolid(mSolidGarbageList[i]); --- 743,749 ---- void Simulator::collectGarbage() { ! size_t i; ! ! for (i=0; i<mSolidGarbageList.size(); ++i) { removeSolid(mSolidGarbageList[i]); *************** *** 748,752 **** mSolidGarbageList.clear(); ! for (size_t i=0; i<mJointGarbageList.size(); ++i) { removeJoint(mJointGarbageList[i]); --- 752,756 ---- mSolidGarbageList.clear(); ! for (i=0; i<mJointGarbageList.size(); ++i) { removeJoint(mJointGarbageList[i]); *************** *** 755,759 **** mJointGarbageList.clear(); ! for (size_t i=0; i<mMotorGarbageList.size(); ++i) { removeMotor(mMotorGarbageList[i]); --- 759,763 ---- mJointGarbageList.clear(); ! for (i=0; i<mMotorGarbageList.size(); ++i) { removeMotor(mMotorGarbageList[i]); Index: Defines.h =================================================================== RCS file: /cvsroot/opal/opal/src/Defines.h,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** Defines.h 26 Feb 2005 10:22:23 -0000 1.61 --- Defines.h 28 Feb 2005 03:27:56 -0000 1.62 *************** *** 29,32 **** --- 29,38 ---- #define OPAL_DEFINES_H + // Put this here for now. They seem to nail all the really annoying and + // useless VC6 warning: 4786, Debug info too long + #if defined(WIN32) || defined(_WIN32) + #pragma warning(disable:4786) + #endif + #include <iostream> #include <vector> Index: Logger.h =================================================================== RCS file: /cvsroot/opal/opal/src/Logger.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Logger.h 26 Feb 2005 10:22:23 -0000 1.2 --- Logger.h 28 Feb 2005 03:27:56 -0000 1.3 *************** *** 29,32 **** --- 29,38 ---- #define OPAL_LOGGER_H + // Put this here for now. They seem to nail all the really annoying and + // useless VC6 warning: 4786, Debug info too long + #if defined(WIN32) || defined(_WIN32) + #pragma warning(disable:4786) + #endif + #include <iomanip> #include <stdlib.h> *************** *** 38,42 **** #include <stdexcept> ! #include "defines.h" #include "Singleton.h" --- 44,48 ---- #include <stdexcept> ! #include "Defines.h" #include "Singleton.h" |
|
From: Alan F. <pal...@us...> - 2005-02-28 03:28:11
|
Update of /cvsroot/opal/opal/vc6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6493/vc6 Modified Files: opalode.dsp Log Message: VC6 Build is working again. Minor changes such as not declairing index variables in for loops, and put some warning-disables to make it so the VC6 build doesn't spew the same useless warning everywhere. Index: opalode.dsp =================================================================== RCS file: /cvsroot/opal/opal/vc6/opalode.dsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** opalode.dsp 9 Feb 2005 21:34:08 -0000 1.2 --- opalode.dsp 28 Feb 2005 03:28:01 -0000 1.3 *************** *** 90,304 **** # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File ! SOURCE=..\src\AttractorMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\AttractorMotor.h # End Source File # Begin Source File ! SOURCE=..\src\BallJoint.h # End Source File # Begin Source File ! SOURCE=..\src\Blueprint.cpp # End Source File # Begin Source File ! SOURCE=..\src\Blueprint.h # End Source File # Begin Source File ! SOURCE=..\src\BlueprintManager.cpp # End Source File # Begin Source File ! SOURCE=..\src\BlueprintManager.h # End Source File # Begin Source File ! SOURCE=..\src\Defines.h # End Source File # Begin Source File ! SOURCE=..\src\DesiredPosMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\DesiredPosMotor.h # End Source File # Begin Source File ! SOURCE=..\src\EventHandler.h # End Source File # Begin Source File ! SOURCE=..\src\FixedJoint.h # End Source File # Begin Source File ! SOURCE=..\src\GearedMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\GearedMotor.h # End Source File # Begin Source File ! SOURCE=..\src\Hinge2Joint.h # End Source File # Begin Source File ! SOURCE=..\src\HingeJoint.h # End Source File # Begin Source File ! SOURCE=..\src\Joint.cpp # End Source File # Begin Source File ! SOURCE=..\src\Joint.h # End Source File # Begin Source File ! SOURCE=..\src\Matrix44r.h # End Source File # Begin Source File ! SOURCE=..\src\Motor.cpp # End Source File # Begin Source File ! SOURCE=..\src\Motor.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEBallJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEBallJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEFixedJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEFixedJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEHinge2Joint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEHinge2Joint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEHingeJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEHingeJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEServoMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEServoMotor.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESimulator.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESimulator.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESliderJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESliderJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESolid.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESolid.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESpace.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESpace.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEUniversalJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEUniversalJoint.h # End Source File # Begin Source File ! SOURCE=..\src\opal.h # End Source File # Begin Source File ! SOURCE=..\src\OpalMath.h # End Source File # Begin Source File ! SOURCE=..\src\Point3r.h # End Source File # Begin Source File ! SOURCE=..\src\Portability.h # End Source File # Begin Source File ! SOURCE=..\src\Quaternion.h # End Source File # Begin Source File ! SOURCE=..\src\Rayr.h # End Source File # Begin Source File ! SOURCE=..\src\Sensor.cpp # End Source File # Begin Source File ! SOURCE=..\src\Sensor.h # End Source File # Begin Source File ! SOURCE=..\src\ServoMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\ServoMotor.h # End Source File # Begin Source File --- 90,308 ---- # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" + # Begin Group "ODE" + + # PROP Default_Filter "" # Begin Source File ! SOURCE=..\src\ODE\ODEJoint.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODEJoint.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESimulator.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESimulator.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESolid.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESolid.h # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESpace.cpp # End Source File # Begin Source File ! SOURCE=..\src\ODE\ODESpace.h # End Source File + # End Group # Begin Source File ! SOURCE=..\src\AttractorMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\AttractorMotor.h # End Source File # Begin Source File ! SOURCE=..\src\AttractorMotorData.h # End Source File # Begin Source File ! SOURCE=..\src\BallJoint.h # End Source File # Begin Source File ! SOURCE=..\src\Blueprint.cpp # End Source File # Begin Source File ! SOURCE=..\src\Blueprint.h # End Source File # Begin Source File ! SOURCE=..\src\BlueprintInstance.cpp # End Source File # Begin Source File ! SOURCE=..\src\BlueprintInstance.h # End Source File # Begin Source File ! SOURCE=..\src\BlueprintManager.cpp # End Source File # Begin Source File ! SOURCE=..\src\BlueprintManager.h # End Source File # Begin Source File ! SOURCE=..\src\BoxShapeData.h # End Source File # Begin Source File ! SOURCE=..\src\CapsuleShapeData.h # End Source File # Begin Source File ! SOURCE=..\src\Defines.h # End Source File # Begin Source File ! SOURCE=..\src\EventHandler.h # End Source File # Begin Source File ! SOURCE=..\src\FixedJoint.h # End Source File # Begin Source File ! SOURCE=..\src\GearedMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\GearedMotor.h # End Source File # Begin Source File ! SOURCE=..\src\GearedMotorData.h # End Source File # Begin Source File ! SOURCE=..\src\Hinge2Joint.h # End Source File # Begin Source File ! SOURCE=..\src\HingeJoint.h # End Source File # Begin Source File ! SOURCE=..\src\Joint.cpp # End Source File # Begin Source File ! SOURCE=..\src\Joint.h # End Source File # Begin Source File ! SOURCE=..\src\JointData.h # End Source File # Begin Source File ! SOURCE=..\src\Logger.cpp # End Source File # Begin Source File ! SOURCE=..\src\Logger.h # End Source File # Begin Source File ! SOURCE=..\src\Matrix44r.h # End Source File # Begin Source File ! SOURCE=..\src\MeshShapeData.h # End Source File # Begin Source File ! SOURCE=..\src\Motor.cpp # End Source File # Begin Source File ! SOURCE=..\src\Motor.h # End Source File # Begin Source File ! SOURCE=..\src\MotorData.h # End Source File # Begin Source File ! SOURCE=..\src\opal.h # End Source File # Begin Source File ! SOURCE=..\src\OpalMath.h # End Source File # Begin Source File ! SOURCE=..\src\PlaneShapeData.h # End Source File # Begin Source File ! SOURCE=..\src\Point3r.h # End Source File # Begin Source File ! SOURCE=..\src\Portability.h # End Source File # Begin Source File ! SOURCE=..\src\Quaternion.h # End Source File # Begin Source File ! SOURCE=..\src\Rayr.h # End Source File # Begin Source File ! SOURCE=..\src\RayShapeData.h # End Source File # Begin Source File ! SOURCE=..\src\Sensor.cpp # End Source File # Begin Source File ! SOURCE=..\src\Sensor.h # End Source File # Begin Source File ! SOURCE=..\src\SensorData.h # End Source File # Begin Source File ! SOURCE=..\src\ServoMotor.cpp # End Source File # Begin Source File ! SOURCE=..\src\ServoMotor.h # End Source File # Begin Source File ! SOURCE=..\src\ServoMotorData.h # End Source File # Begin Source File ! SOURCE=..\src\ShapeData.h # End Source File # Begin Source File *************** *** 328,335 **** --- 332,363 ---- # Begin Source File + SOURCE=..\src\SolidData.cpp + # End Source File + # Begin Source File + + SOURCE=..\src\SolidData.h + # End Source File + # Begin Source File + SOURCE=..\src\Space.h # End Source File # Begin Source File + SOURCE=..\src\SphereShapeData.h + # End Source File + # Begin Source File + + SOURCE=..\src\SpringMotor.cpp + # End Source File + # Begin Source File + + SOURCE=..\src\SpringMotor.h + # End Source File + # Begin Source File + + SOURCE=..\src\SpringMotorData.h + # End Source File + # Begin Source File + SOURCE=..\src\ThrusterMotor.cpp # End Source File *************** *** 340,343 **** --- 368,375 ---- # Begin Source File + SOURCE=..\src\ThrusterMotorData.h + # End Source File + # Begin Source File + SOURCE=..\src\UniversalJoint.h # End Source File |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:23:43
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27891/files Modified Files: example.xml Log Message: fixed problem in capsule params Index: example.xml =================================================================== RCS file: /cvsroot/opal/web/files/example.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** example.xml 26 Feb 2005 03:22:10 -0000 1.3 --- example.xml 26 Feb 2005 10:23:34 -0000 1.4 *************** *** 33,38 **** </Shape> <Shape type="capsule"> ! <Dimensions radius="4.0"/> ! <Dimensions length="8.0"/> </Shape> </Solid> --- 33,37 ---- </Shape> <Shape type="capsule"> ! <Dimensions radius="4.0" length="8.0"/> </Shape> </Solid> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:22:34
|
Update of /cvsroot/opal/opal/src/ODE In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/src/ODE Modified Files: ODEJoint.cpp ODEJoint.h ODESolid.cpp Log Message: finished overhauling xml loader Index: ODEJoint.h =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODEJoint.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** ODEJoint.h 25 Feb 2005 06:40:26 -0000 1.29 --- ODEJoint.h 26 Feb 2005 10:22:24 -0000 1.30 *************** *** 49,53 **** virtual void OPAL_CALL init(const JointData& data); ! virtual real OPAL_CALL getState(int axisNum)const; virtual real OPAL_CALL getVelocity(int axisNum)const; --- 49,55 ---- virtual void OPAL_CALL init(const JointData& data); ! virtual real OPAL_CALL getAngle(int axisNum)const; ! ! virtual real OPAL_CALL getDistance(int axisNum)const; virtual real OPAL_CALL getVelocity(int axisNum)const; *************** *** 73,77 **** real value); ! virtual void OPAL_CALL internal_setMaxForce(int axisNum, real value); --- 75,79 ---- real value); ! virtual void OPAL_CALL internal_setMaxTorque(int axisNum, real value); Index: ODESolid.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODESolid.cpp,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** ODESolid.cpp 25 Feb 2005 06:40:26 -0000 1.71 --- ODESolid.cpp 26 Feb 2005 10:22:24 -0000 1.72 *************** *** 43,46 **** --- 43,47 ---- mSpaceID = spaceID; mIsPlaceable = true; + mCollisionCount = 0; if (!mData.isStatic) *************** *** 53,58 **** } ! setTransform(Matrix44r()); ! mCollisionCount = 0; } --- 54,58 ---- } ! init(mData); } *************** *** 102,105 **** --- 102,107 ---- void ODESolid::init(const SolidData& data) { + // The order of function calls here is important. + // Destroy the old Shapes. mData.destroyShapes(); Index: ODEJoint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ODE/ODEJoint.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** ODEJoint.cpp 25 Feb 2005 06:40:26 -0000 1.25 --- ODEJoint.cpp 26 Feb 2005 10:22:24 -0000 1.26 *************** *** 134,138 **** defaults::ode::jointFudgeFactor); break; ! case HINGE_2_JOINT: // Create an ODE hinge2 Joint. mJointID = dJointCreateHinge2(mWorldID, 0); --- 134,138 ---- defaults::ode::jointFudgeFactor); break; ! case WHEEL_JOINT: // Create an ODE hinge2 Joint. mJointID = dJointCreateHinge2(mWorldID, 0); *************** *** 198,202 **** } ! real ODEJoint::getState(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); --- 198,202 ---- } ! real ODEJoint::getAngle(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 226,232 **** break; case SLIDER_JOINT: ! value = (real)dJointGetSliderPosition(mJointID); break; ! case HINGE_2_JOINT: if (0 == axisNum) { --- 226,232 ---- break; case SLIDER_JOINT: ! value = 0; break; ! case WHEEL_JOINT: if (0 == axisNum) { *************** *** 251,254 **** --- 251,289 ---- } + real ODEJoint::getDistance(int axisNum)const + { + assert(axisNum >= 0 && axisNum < mNumAxes); + + real value = 0; + + switch(mData.getType()) + { + case HINGE_JOINT: + value = 0; + break; + case UNIVERSAL_JOINT: + value = 0; + break; + case BALL_JOINT: + value = 0; + break; + case SLIDER_JOINT: + value = (real)dJointGetSliderPosition(mJointID); + break; + case WHEEL_JOINT: + value = 0; + break; + case FIXED_JOINT: + // Fixed Joints don't have any kind of state info. + assert(false); + break; + default: + assert(false); + break; + } + + return value; + } + real ODEJoint::getVelocity(int axisNum)const { *************** *** 281,285 **** value = (real)dJointGetSliderPositionRate(mJointID); break; ! case HINGE_2_JOINT: if (0 == axisNum) { --- 316,320 ---- value = (real)dJointGetSliderPositionRate(mJointID); break; ! case WHEEL_JOINT: if (0 == axisNum) { *************** *** 343,347 **** // ODE's Hinge2 Joint also has a suspension parameter. Use axis 1 // for this since axis 1 doesn't use limits anyway. ! if (1 == axisNum && HINGE_2_JOINT == mData.getType()) { setJointParam(dParamSuspensionERP, value); --- 378,382 ---- // ODE's Hinge2 Joint also has a suspension parameter. Use axis 1 // for this since axis 1 doesn't use limits anyway. ! if (1 == axisNum && WHEEL_JOINT == mData.getType()) { setJointParam(dParamSuspensionERP, value); *************** *** 406,410 **** } ! void ODEJoint::internal_setMaxForce(int axisNum, real value) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 441,445 ---- } ! void ODEJoint::internal_setMaxTorque(int axisNum, real value) { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 490,494 **** newAxis[2]); break; ! case HINGE_2_JOINT: if (0 == axisNum) { --- 525,529 ---- newAxis[2]); break; ! case WHEEL_JOINT: if (0 == axisNum) { *************** *** 546,550 **** // Slider Joints don't have an anchor point. break; ! case HINGE_2_JOINT: dJointSetHinge2Anchor(mJointID, newAnchor[0], newAnchor[1], newAnchor[2]); --- 581,585 ---- // Slider Joints don't have an anchor point. break; ! case WHEEL_JOINT: dJointSetHinge2Anchor(mJointID, newAnchor[0], newAnchor[1], newAnchor[2]); *************** *** 740,744 **** dJointSetSliderParam(mJointID, parameter, value); break; ! case HINGE_2_JOINT: dJointSetHinge2Param(mJointID, parameter, value); break; --- 775,779 ---- dJointSetSliderParam(mJointID, parameter, value); break; ! case WHEEL_JOINT: dJointSetHinge2Param(mJointID, parameter, value); break; *************** *** 770,774 **** // value = (real)dJointGetSliderParam(mJointID, parameter); // break; ! // case HINGE_2_JOINT: // value = (real)dJointGetHinge2Param(mJointID, parameter); // break; --- 805,809 ---- // value = (real)dJointGetSliderParam(mJointID, parameter); // break; ! // case WHEEL_JOINT: // value = (real)dJointGetHinge2Param(mJointID, parameter); // break; |
Update of /cvsroot/opal/opal/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/src Modified Files: AttractorMotor.cpp AttractorMotor.h AttractorMotorData.h Blueprint.cpp Blueprint.h BlueprintInstance.cpp BlueprintInstance.h BlueprintManager.cpp BlueprintManager.h Defines.h GearedMotor.cpp GearedMotor.h GearedMotorData.h Joint.cpp Joint.h JointData.h Logger.cpp Logger.h SConscript ServoMotor.cpp ServoMotor.h ServoMotorData.h Simulator.cpp Solid.cpp Solid.h SpringMotor.cpp SpringMotor.h SpringMotorData.h ThrusterMotor.cpp ThrusterMotor.h ThrusterMotorData.h opal.h Log Message: finished overhauling xml loader Index: opal.h =================================================================== RCS file: /cvsroot/opal/opal/src/opal.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** opal.h 25 Feb 2005 06:40:26 -0000 1.17 --- opal.h 26 Feb 2005 10:22:23 -0000 1.18 *************** *** 43,49 **** #include "AttractorMotor.h" #include "AttractorMotorData.h" #include "ServoMotor.h" #include "ThrusterMotor.h" ! #include "GearedMotor.h" #include "Joint.h" #include "JointData.h" --- 43,54 ---- #include "AttractorMotor.h" #include "AttractorMotorData.h" + #include "GearedMotor.h" + #include "GearedMotorData.h" #include "ServoMotor.h" + #include "ServoMotorData.h" #include "ThrusterMotor.h" ! #include "ThrusterMotorData.h" ! #include "SpringMotor.h" ! #include "SpringMotorData.h" #include "Joint.h" #include "JointData.h" *************** *** 52,55 **** --- 57,61 ---- #include "EventHandler.h" #include "Blueprint.h" + #include "BlueprintInstance.h" #include "BlueprintManager.h" #include "Defines.h" *************** *** 63,69 **** OPAL_EXPORT void OPAL_CALL loadFile(Blueprint& bp, const std::string& filename); - { - BlueprintManager::instance().loadFile(bp, filename); - } /// Saves a Blueprint in an OPAL XML file. --- 69,72 ---- Index: SConscript =================================================================== RCS file: /cvsroot/opal/opal/src/SConscript,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** SConscript 25 Feb 2005 06:40:26 -0000 1.10 --- SConscript 26 Feb 2005 10:22:23 -0000 1.11 *************** *** 7,10 **** --- 7,11 ---- AttractorMotorData.h Blueprint.h + BlueprintInstance.h BlueprintManager.h BoxShapeData.h *************** *** 51,54 **** --- 52,56 ---- AttractorMotor.cpp Blueprint.cpp + BlueprintInstance.cpp BlueprintManager.cpp GearedMotor.cpp Index: Logger.h =================================================================== RCS file: /cvsroot/opal/opal/src/Logger.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Logger.h 25 Feb 2005 06:40:26 -0000 1.1 --- Logger.h 26 Feb 2005 10:22:23 -0000 1.2 *************** *** 1,2 **** --- 1,29 ---- + /************************************************************************* + * * + * Open Physics Abstraction Layer * + * Copyright (C) 2004-2005 * + * Alan Fischer ala...@gm... * + * Andres Reinot an...@re... * + * Tyler Streeter tyl...@gm... * + * All rights reserved. * + * Web: opal.sourceforge.net * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of EITHER: * + * (1) The GNU Lesser General Public License as published by the Free * + * Software Foundation; either version 2.1 of the License, or (at * + * your option) any later version. The text of the GNU Lesser * + * General Public License is included with this library in the * + * file license-LGPL.txt. * + * (2) The BSD-style license that is included with this library in * + * the file license-BSD.txt. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * + * license-LGPL.txt and license-BSD.txt for more details. * + * * + *************************************************************************/ + #ifndef OPAL_LOGGER_H #define OPAL_LOGGER_H *************** *** 11,54 **** #include <stdexcept> namespace opal { ! /// This class is used to log any events, errors, or warnings that may ! /// come up. Calls to this class should replace all cout << statements ! /// in the form: Logger::stream("myStreamName") << ... ! /// where myStreamName was registered as a cout stream or file stream ! /// using the setStream function. ! class Logger { ! public: ! Logger(); ! ~Logger(); ! /// Register a new stream for later use. ! static void setStream(const std::string& name, std::ostream *stream, ! const std::string& prefix="", char mark='\0'); ! //static void silenceStream(const std::string& name); ! //static void unsilenceStream(const std::string& name); ! static std::ostream &stream(const std::string& name); ! private: ! struct Stream ! { ! std::ostream *nullStream; ! std::ostream *stream; ! bool silent; ! char mark; ! std::string prefix; ! }; ! static void init(); ! //static bool mInitCalled; ! static std::map<std::string, Stream> mStreams; ! }; } #endif - --- 38,89 ---- #include <stdexcept> + #include "defines.h" + #include "Singleton.h" + + #define OPAL_LOGGER Logger::instance().stream + namespace opal { ! namespace logger { ! /// This class is used to log any events, errors, or warnings that may ! /// come up. Calls to this class should replace all cout << statements ! /// in the form: Logger::stream("myStreamName") << ... ! /// where myStreamName was registered as a cout stream or file stream ! /// using the setStream function. ! class Logger ! { ! public: ! Logger(); ! ~Logger(); ! /// Register a new stream for later use. ! void OPAL_CALL setStream(const std::string& name, ! std::ostream *stream, const std::string& prefix="", ! char mark='\0'); ! //static void silenceStream(const std::string& name); ! //static void unsilenceStream(const std::string& name); ! std::ostream& OPAL_CALL stream(const std::string& name); ! private: ! struct Stream ! { ! std::ostream *nullStream; ! std::ostream *stream; ! bool silent; ! char mark; ! std::string prefix; ! }; ! void init(); ! std::map<std::string, Stream> mStreams; ! }; ! } ! typedef Singleton<logger::Logger> Logger; } #endif Index: Blueprint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Blueprint.cpp 25 Feb 2005 16:43:19 -0000 1.15 --- Blueprint.cpp 26 Feb 2005 10:22:23 -0000 1.16 *************** *** 41,44 **** --- 41,45 ---- Blueprint::Blueprint() { + mFinalized = false; } *************** *** 70,80 **** } void Blueprint::addSolid(SolidData* data) { if (solidExists(data->name)) { ! Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else --- 71,235 ---- } + void Blueprint::finalize() + { + // Setup Joint reference indices. + for (size_t i=0; i<mJointList.size();) + { + JointData* data = mJointList.at(i); + + // Find the indices of the references. + int solid0Index = getSolidIndex(data->internal_solid0Name); + int solid1Index = getSolidIndex(data->internal_solid1Name); + + if (-1 == solid0Index || -1 == solid1Index) + { + OPAL_LOGGER("warning") << + "opal::Blueprint::finalize: Invalid reference \ + in Joint " << data->name << ". Removing the Joint from the Blueprint." + << std::endl; + + delete data; + mJointList.at(i) = mJointList.back(); + mJointList.pop_back(); + } + else + { + data->internal_solid0Index = solid0Index; + data->internal_solid1Index = solid1Index; + ++i; + } + } + + // Setup Motor reference indices. + for (size_t i=0; i<mMotorList.size();) + { + MotorData* m = mMotorList.at(i); + bool error = false; + + switch(m->getType()) + { + case ATTRACTOR_MOTOR: + { + AttractorMotorData* data = + (AttractorMotorData*)mMotorList.at(i); + int solid0Index = + getSolidIndex(data->internal_solid0Name); + int solid1Index = + getSolidIndex(data->internal_solid1Name); + if (-1 == solid0Index || -1 == solid1Index) + { + error = true; + } + else + { + data->internal_solid0Index = solid0Index; + data->internal_solid1Index = solid1Index; + } + break; + } + case GEARED_MOTOR: + { + GearedMotorData* data = + (GearedMotorData*)mMotorList.at(i); + int jointIndex = getJointIndex(data->internal_jointName); + if (-1 == jointIndex) + { + error = true; + } + else + { + data->internal_jointIndex = jointIndex; + } + break; + } + case SERVO_MOTOR: + { + ServoMotorData* data = (ServoMotorData*)mMotorList.at(i); + int jointIndex = getJointIndex(data->internal_jointName); + if (-1 == jointIndex) + { + error = true; + } + else + { + data->internal_jointIndex = jointIndex; + } + break; + } + case SPRING_MOTOR: + { + SpringMotorData* data = + (SpringMotorData*)mMotorList.at(i); + int solidIndex = getSolidIndex(data->internal_solidName); + if (-1 == solidIndex) + { + error = true; + } + else + { + data->internal_solidIndex = solidIndex; + } + break; + } + case THRUSTER_MOTOR: + { + ThrusterMotorData* data = + (ThrusterMotorData*)mMotorList.at(i); + int solidIndex = getSolidIndex(data->internal_solidName); + if (-1 == solidIndex) + { + error = true; + } + else + { + data->internal_solidIndex = solidIndex; + } + break; + } + default: + assert(false); + } + + if (error) + { + OPAL_LOGGER("warning") << + "opal::Blueprint::finalize: Invalid reference in Motor " + << mMotorList.at(i)->name + << ". Removing the Motor from the Blueprint." + << std::endl; + + delete mMotorList.at(i); + mMotorList.at(i) = mMotorList.back(); + mMotorList.pop_back(); + } + else + { + ++i; + } + } + + // TODO: once we have Sensors, loop over them here. + + mFinalized = true; + } + + bool Blueprint::isFinalized()const + { + return mFinalized; + } + void Blueprint::addSolid(SolidData* data) { + if (mFinalized) + { + printFinalizedMessage(); + return; + } + if (solidExists(data->name)) { ! OPAL_LOGGER("warning") << "opal::Blueprint::addSolid: Solid " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else *************** *** 87,95 **** void Blueprint::addJoint(JointData* data) { if (jointExists(data->name)) { ! Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else --- 242,256 ---- void Blueprint::addJoint(JointData* data) { + if (mFinalized) + { + printFinalizedMessage(); + return; + } + if (jointExists(data->name)) { ! OPAL_LOGGER("warning") << "opal::Blueprint::addJoint: Joint " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else *************** *** 102,110 **** void Blueprint::addMotor(MotorData* data) { if (motorExists(data->name)) { ! Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else --- 263,277 ---- void Blueprint::addMotor(MotorData* data) { + if (mFinalized) + { + printFinalizedMessage(); + return; + } + if (motorExists(data->name)) { ! OPAL_LOGGER("warning") << "opal::Blueprint::addMotor: Motor " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else *************** *** 145,153 **** void Blueprint::addSensor(SensorData* data) { if (sensorExists(data->name)) { ! Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else --- 312,326 ---- void Blueprint::addSensor(SensorData* data) { + if (mFinalized) + { + printFinalizedMessage(); + return; + } + if (sensorExists(data->name)) { ! OPAL_LOGGER("warning") << "opal::Blueprint::addSensor: Sensor " << data->name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; } else *************** *** 291,295 **** } ! int Blueprint::internal_getSolidIndex(const std::string& name)const { if (name.empty()) --- 464,468 ---- } ! int Blueprint::getSolidIndex(const std::string& name)const { if (name.empty()) *************** *** 308,310 **** --- 481,507 ---- return -1; } + + int Blueprint::getJointIndex(const std::string& name)const + { + if (name.empty()) + { + return -1; + } + + for (unsigned int i=0; i<mJointList.size(); ++i) + { + if (mJointList[i]->name == name) + { + return (int)i; + } + } + + return -1; + } + + void Blueprint::printFinalizedMessage() + { + OPAL_LOGGER("warning") << "Cannot add objects to a finalized \ + Blueprint. The operation will be ignored." << std::endl; + } } Index: ServoMotor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ServoMotor.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ServoMotor.cpp 25 Feb 2005 06:40:26 -0000 1.11 --- ServoMotor.cpp 26 Feb 2005 10:22:23 -0000 1.12 *************** *** 72,78 **** --- 72,80 ---- } + assert(data.joint); assert(data.jointAxisNum >= 0 && data.jointAxisNum < data.joint->getNumAxes()); Motor::init(); + assert(data.joint->isRotational(data.jointAxisNum)); mData = data; } *************** *** 113,123 **** mData.joint->internal_setDesiredVel(mData.jointAxisNum, mData.desiredVel); ! mData.joint->internal_setMaxForce(mData.jointAxisNum, ! mData.maxForce); } else { mData.joint->internal_setDesiredVel(mData.jointAxisNum, 0); ! mData.joint->internal_setMaxForce(mData.jointAxisNum, 0); } } --- 115,125 ---- mData.joint->internal_setDesiredVel(mData.jointAxisNum, mData.desiredVel); ! mData.joint->internal_setMaxTorque(mData.jointAxisNum, ! mData.maxTorque); } else { mData.joint->internal_setDesiredVel(mData.jointAxisNum, 0); ! mData.joint->internal_setMaxTorque(mData.jointAxisNum, 0); } } *************** *** 131,151 **** mData.joint->wakeSolids(); ! if (DESIRED_POS_MODE == mData.mode) { ! if (true == mData.joint->isRotational(mData.jointAxisNum)) ! { ! real velocity = mData.desiredPos - ! mData.joint->getState(mData.jointAxisNum); ! mData.joint->internal_setDesiredVel(mData.jointAxisNum, ! mData.restoreSpeed * velocity); ! } ! else ! { ! // This axis must be a linear degree of freedom. ! real velocity = mData.desiredPos - ! mData.joint->getState(mData.jointAxisNum); mData.joint->internal_setDesiredVel(mData.jointAxisNum, mData.restoreSpeed * velocity); ! } } else --- 133,154 ---- mData.joint->wakeSolids(); ! if (DESIRED_ANGLE_MODE == mData.mode) { ! // No longer support linear degrees of freedom. ! //if (true == mData.joint->isRotational(mData.jointAxisNum)) ! //{ ! real velocity = mData.desiredAngle - ! mData.joint->getAngle(mData.jointAxisNum); mData.joint->internal_setDesiredVel(mData.jointAxisNum, mData.restoreSpeed * velocity); ! //} ! //else ! //{ ! // // This axis must be a linear degree of freedom. ! // real velocity = mData.desiredPos - ! // mData.joint->getState(mData.jointAxisNum); ! // mData.joint->internal_setDesiredVel(mData.jointAxisNum, ! // mData.restoreSpeed * velocity); ! //} } else *************** *** 157,171 **** } ! void ServoMotor::setDesiredPos(real pos) { ! assert(pos >= mData.joint->getLowLimit(mData.jointAxisNum) ! && pos <= mData.joint->getHighLimit(mData.jointAxisNum)); ! mData.desiredPos = pos; } ! void ServoMotor::setDesiredPosNorm(real pos) { ! assert(pos >= 0.0 && pos <= 1.0); real lowLimit = mData.joint->getLowLimit(mData.jointAxisNum); --- 160,174 ---- } ! void ServoMotor::setDesiredAngle(real a) { ! assert(a >= mData.joint->getLowLimit(mData.jointAxisNum) ! && a <= mData.joint->getHighLimit(mData.jointAxisNum)); ! mData.desiredAngle = a; } ! void ServoMotor::setDesiredAngleNorm(real a) { ! assert(a >= 0.0 && a <= 1.0); real lowLimit = mData.joint->getLowLimit(mData.jointAxisNum); *************** *** 173,187 **** // map the pos value onto the joint limits ! mData.desiredPos = pos * (highLimit - lowLimit) + lowLimit; // Keep desired angle slightly away from the limit to avoid jitter. // TODO: fix this; this should just keep the thing away from the // limit when it's close, not all the time. ! mData.desiredPos *= (real)0.99; } ! real ServoMotor::getDesiredPos()const { ! return mData.desiredPos; } --- 176,190 ---- // map the pos value onto the joint limits ! mData.desiredAngle = a * (highLimit - lowLimit) + lowLimit; // Keep desired angle slightly away from the limit to avoid jitter. // TODO: fix this; this should just keep the thing away from the // limit when it's close, not all the time. ! mData.desiredAngle *= (real)0.99; } ! real ServoMotor::getDesiredAngle()const { ! return mData.desiredAngle; } *************** *** 197,209 **** } ! void ServoMotor::setMaxForce(real max) { ! mData.maxForce = max; ! mData.joint->internal_setMaxForce(mData.jointAxisNum, max); } ! real ServoMotor::getMaxForce()const { ! return mData.maxForce; } --- 200,212 ---- } ! void ServoMotor::setMaxTorque(real max) { ! mData.maxTorque = max; ! mData.joint->internal_setMaxTorque(mData.jointAxisNum, max); } ! real ServoMotor::getMaxTorque()const { ! return mData.maxTorque; } Index: GearedMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GearedMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 --- GearedMotorData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 43,46 **** --- 43,48 ---- mType = GEARED_MOTOR; joint = NULL; + internal_jointIndex = 0; + internal_jointName = ""; jointAxisNum = 0; maxTorque = defaults::motor::geared::maxTorque; *************** *** 66,69 **** --- 68,73 ---- name = data.name; joint = data.joint; + internal_jointIndex = data.internal_jointIndex; + internal_jointName = data.internal_jointName; jointAxisNum = data.jointAxisNum; maxTorque = data.maxTorque; *************** *** 75,78 **** --- 79,88 ---- Joint* joint; + /// Internal data used for Blueprint instantiation. + int internal_jointIndex; + + /// Internal data used for Blueprint instantiation. + std::string internal_jointName; + /// The index of the specific Joint axis affected by this Motor. int jointAxisNum; *************** *** 82,86 **** real maxTorque; ! /// The maximum velocity that can be achieved by the Motor. real maxVelocity; --- 92,96 ---- real maxTorque; ! /// The maximum angular velocity that can be achieved by the Motor. real maxVelocity; Index: BlueprintManager.h =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintManager.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** BlueprintManager.h 25 Feb 2005 16:43:20 -0000 1.16 --- BlueprintManager.h 26 Feb 2005 10:22:23 -0000 1.17 *************** *** 37,41 **** namespace opal { ! namespace impl { class BlueprintManager --- 37,47 ---- namespace opal { ! class AttractorMotorData; ! class GearedMotorData; ! class ServoMotorData; ! class SpringMotorData; ! class ThrusterMotorData; ! ! namespace blueprint_manager { class BlueprintManager *************** *** 52,57 **** /// object parameters are optional, in which case the usual, /// default values will be used. The only required ! /// parameters are references to other objects (i.e. the ! /// "References" elements in an XML file. For example, /// a Joint refers to two Solids; if either of those Solids /// are not in the file, the Joint will be ignored. For a --- 58,63 ---- /// object parameters are optional, in which case the usual, /// default values will be used. The only required ! /// parameters are object types and references to other objects ! /// (i.e. the "References" elements in an XML file. For example, /// a Joint refers to two Solids; if either of those Solids /// are not in the file, the Joint will be ignored. For a *************** *** 84,87 **** --- 90,123 ---- const Blueprint& bp, const std::string& filename); + /// Helper function for parsing AttractorMotor XML elements. + /// Allocates and returns a pointer to a new AttractorMotorData + /// object. Returns NULL if the element could not be loaded. + AttractorMotorData* loadAttractorMotor(const TiXmlNode* nodePtr, + const Blueprint& bp, const std::string& filename); + + /// Helper function for parsing GearedMotor XML elements. + /// Allocates and returns a pointer to a new GearedMotorData + /// object. Returns NULL if the element could not be loaded. + GearedMotorData* loadGearedMotor(const TiXmlNode* nodePtr, + const Blueprint& bp, const std::string& filename); + + /// Helper function for parsing ServoMotor XML elements. + /// Allocates and returns a pointer to a new ServoMotorData + /// object. Returns NULL if the element could not be loaded. + ServoMotorData* loadServoMotor(const TiXmlNode* nodePtr, + const Blueprint& bp, const std::string& filename); + + /// Helper function for parsing SpringMotor XML elements. + /// Allocates and returns a pointer to a new SpringMotorData + /// object. Returns NULL if the element could not be loaded. + SpringMotorData* loadSpringMotor(const TiXmlNode* nodePtr, + const Blueprint& bp, const std::string& filename); + + /// Helper function for parsing ThrusterMotor XML elements. + /// Allocates and returns a pointer to a new ThrusterMotorData + /// object. Returns NULL if the element could not be loaded. + ThrusterMotorData* loadThrusterMotor(const TiXmlNode* nodePtr, + const Blueprint& bp, const std::string& filename); + /// Helper function for parsing Sensor XML elements. Allocates /// and returns a pointer to a new SensorData object. Returns *************** *** 111,115 **** }; } ! typedef Singleton<impl::BlueprintManager> BlueprintManager; } --- 147,151 ---- }; } ! typedef Singleton<blueprint_manager::BlueprintManager> BlueprintManager; } Index: BlueprintInstance.h =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintInstance.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BlueprintInstance.h 25 Feb 2005 06:40:26 -0000 1.1 --- BlueprintInstance.h 26 Feb 2005 10:22:23 -0000 1.2 *************** *** 45,113 **** { public: ! BlueprintInstance(); ! virtual ~BlueprintInstance(); /// Finds a Solid by name and returns its pointer. Returns NULL if /// the name is not found. ! virtual Solid* OPAL_CALL getSolid(const std::string& name)const; /// Finds a Joint by name and returns its pointer. Returns NULL if /// the name is not found. ! virtual Joint* OPAL_CALL getJoint(const std::string& name)const; /// Finds a Motor by name and returns its pointer. Returns NULL if /// the name is not found. ! virtual Motor* OPAL_CALL getMotor(const std::string& name)const; /// Finds a Sensor by name and returns its pointer. Returns NULL if /// the name is not found. ! virtual Sensor* OPAL_CALL getSensor(const std::string& name)const; /// Adds a new Solid pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! virtual void OPAL_CALL internal_addSolidPtr(Solid* s); /// Adds a new Joint pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! virtual void OPAL_CALL internal_addJoint(Joint* j); /// Adds a new Motor pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! virtual void OPAL_CALL internal_addMotor(Motor* m); /// Adds a new Sensor pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! virtual void OPAL_CALL internal_addSensor(Sensor* s); private: ! ///// Helper function that returns true if a Solid of the given ! ///// name already exists in the Blueprint. Ignores empty name ! ///// strings. ! //bool solidExists(const std::string& name); ! ! ///// Helper function that returns true if a Joint of the given ! ///// name already exists in the Blueprint. Ignores empty name ! ///// strings. ! //bool jointExists(const std::string& name); ! ! ///// Helper function that returns true if a Motor of the given ! ///// name already exists in the Blueprint. Ignores empty name ! ///// strings. ! //bool motorExists(const std::string& name); ! ! ///// Helper function that returns true if a Sensor of the given ! ///// name already exists in the Blueprint. Ignores empty name ! ///// strings. ! //bool sensorExists(const std::string& name); ! ! //std::vector<SolidData*> mSolidList; ! //std::vector<JointData*> mJointList; ! //std::vector<MotorData*> mMotorList; ! //std::vector<SensorData*> mSensorList; ! std::map<std::string, Solid*> mSolidMap; std::map<std::string, Joint*> mJointMap; std::map<std::string, Motor*> mMotorMap; std::map<std::string, Sensor*> mSensorMap; }; --- 45,99 ---- { public: ! OPAL_DECL BlueprintInstance(); ! OPAL_DECL virtual ~BlueprintInstance(); /// Finds a Solid by name and returns its pointer. Returns NULL if /// the name is not found. ! OPAL_DECL virtual Solid* OPAL_CALL getSolid( ! const std::string& name)const; /// Finds a Joint by name and returns its pointer. Returns NULL if /// the name is not found. ! OPAL_DECL virtual Joint* OPAL_CALL getJoint( ! const std::string& name)const; /// Finds a Motor by name and returns its pointer. Returns NULL if /// the name is not found. ! OPAL_DECL virtual Motor* OPAL_CALL getMotor( ! const std::string& name)const; /// Finds a Sensor by name and returns its pointer. Returns NULL if /// the name is not found. ! OPAL_DECL virtual Sensor* OPAL_CALL getSensor( ! const std::string& name)const; /// Adds a new Solid pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! OPAL_DECL virtual void OPAL_CALL internal_addSolid(Solid* s); /// Adds a new Joint pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! OPAL_DECL virtual void OPAL_CALL internal_addJoint(Joint* j); /// Adds a new Motor pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! OPAL_DECL virtual void OPAL_CALL internal_addMotor(Motor* m); /// Adds a new Sensor pointer. If the pointer is NULL or the /// object's name is an empty string, this will do nothing. ! OPAL_DECL virtual void OPAL_CALL internal_addSensor(Sensor* s); private: ! /// Map of Solid names to Solid pointers. std::map<std::string, Solid*> mSolidMap; + + /// Map of Joint names to Joint pointers. std::map<std::string, Joint*> mJointMap; + + /// Map of Motor names to Motor pointers. std::map<std::string, Motor*> mMotorMap; + + /// Map of Sensor names to Sensor pointers. std::map<std::string, Sensor*> mSensorMap; }; Index: ServoMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/ServoMotorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ServoMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 --- ServoMotorData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 37,43 **** enum ServoMotorMode { ! /// The ServoMotor tries to achieve a desired position for /// the Joint axis. ! DESIRED_POS_MODE, /// The ServoMotor tries to achieve a desired velocity for --- 37,43 ---- enum ServoMotorMode { ! /// The ServoMotor tries to achieve a desired angle for /// the Joint axis. ! DESIRED_ANGLE_MODE, /// The ServoMotor tries to achieve a desired velocity for *************** *** 55,63 **** mType = SERVO_MOTOR; joint = NULL; ! mode = DESIRED_POS_MODE; jointAxisNum = 0; ! desiredPos = 0; desiredVel = 0; ! maxForce = defaults::motor::servo::maxForce; restoreSpeed = defaults::motor::servo::restoreSpeed; } --- 55,65 ---- mType = SERVO_MOTOR; joint = NULL; ! internal_jointIndex = 0; ! internal_jointName = ""; ! mode = DESIRED_ANGLE_MODE; jointAxisNum = 0; ! desiredAngle = 0; desiredVel = 0; ! maxTorque = defaults::motor::servo::maxTorque; restoreSpeed = defaults::motor::servo::restoreSpeed; } *************** *** 80,88 **** name = data.name; joint = data.joint; mode = data.mode; jointAxisNum = data.jointAxisNum; ! desiredPos = data.desiredPos; desiredVel = data.desiredVel; ! maxForce = data.maxForce; restoreSpeed = data.restoreSpeed; } --- 82,92 ---- name = data.name; joint = data.joint; + internal_jointIndex = data.internal_jointIndex; + internal_jointName = data.internal_jointName; mode = data.mode; jointAxisNum = data.jointAxisNum; ! desiredAngle = data.desiredAngle; desiredVel = data.desiredVel; ! maxTorque = data.maxTorque; restoreSpeed = data.restoreSpeed; } *************** *** 91,94 **** --- 95,104 ---- Joint* joint; + /// Internal data used for Blueprint instantiation. + int internal_jointIndex; + + /// Internal data used for Blueprint instantiation. + std::string internal_jointName; + /// The Motor's mode of operation. ServoMotorMode mode; *************** *** 97,114 **** int jointAxisNum; ! /// The Motor's desired position. This is only used if the /// appropriate mode is set. ! real desiredPos; ! ! /// The Motor's desired position. This is only used if the /// appropriate mode is set. real desiredVel; ! /// The maximum amount of force that can be used to help the ! /// Joint axis achieve its desired position or velocity. ! real maxForce; ! /// A constant used in desired position mode that scaled how fast ! /// the Joint axis will achieve its desired position. real restoreSpeed; --- 107,124 ---- int jointAxisNum; ! /// The Motor's desired angle. This is only used if the /// appropriate mode is set. ! real desiredAngle; ! ! /// The Motor's desired velocity. This is only used if the /// appropriate mode is set. real desiredVel; ! /// The maximum amount of torque that can be used to help the ! /// Joint axis achieve its desired angle or velocity. ! real maxTorque; ! /// A constant used in desired angle mode that scales how fast ! /// the Joint axis will achieve its desired angle. real restoreSpeed; Index: SpringMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/SpringMotor.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SpringMotor.h 25 Feb 2005 06:40:26 -0000 1.7 --- SpringMotor.h 26 Feb 2005 10:22:23 -0000 1.8 *************** *** 52,56 **** //virtual void OPAL_CALL init(Mode m, Solid* s); ! /// Initializes the Motor with the given data structure. virtual void OPAL_CALL init(const SpringMotorData& data); --- 52,57 ---- //virtual void OPAL_CALL init(Mode m, Solid* s); ! /// Initializes the Motor with the given data structure. Solid ! /// pointer in the data must be valid. virtual void OPAL_CALL init(const SpringMotorData& data); Index: ThrusterMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/ThrusterMotor.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ThrusterMotor.h 25 Feb 2005 06:40:26 -0000 1.7 --- ThrusterMotor.h 26 Feb 2005 10:22:23 -0000 1.8 *************** *** 51,55 **** //virtual void OPAL_CALL init(Solid* solid); ! /// Initializes the Motor with the given data structure. virtual void OPAL_CALL init(const ThrusterMotorData& data); --- 51,56 ---- //virtual void OPAL_CALL init(Solid* solid); ! /// Initializes the Motor with the given data structure. Solid ! /// pointer in the data must be valid. virtual void OPAL_CALL init(const ThrusterMotorData& data); Index: BlueprintInstance.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintInstance.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BlueprintInstance.cpp 25 Feb 2005 06:40:26 -0000 1.1 --- BlueprintInstance.cpp 26 Feb 2005 10:22:23 -0000 1.2 *************** *** 102,106 **** } ! void BlueprintInstance::internal_addSolidPtr(Solid* s) { if (NULL == s) --- 102,106 ---- } ! void BlueprintInstance::internal_addSolid(Solid* s) { if (NULL == s) *************** *** 169,329 **** mSensorMap[name] = s; } - - //void Blueprint::addSolid(const SolidData& data) - //{ - // if (solidExists(data.name)) - // { - // Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " - // << data.name << " already exists in this Blueprint. \ - // Ignoring the new one." << std::endl; - // } - // else - // { - // SolidData* newData = new SolidData(data); - // mSolidList.push_back(newData); - // } - //} - - //void Blueprint::addJoint(const JointData& data) - //{ - // if (jointExists(data.name)) - // { - // Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " - // << data.name << " already exists in this Blueprint. \ - // Ignoring the new one." << std::endl; - // } - // else - // { - // JointData* newData = new JointData(data); - // mJointList.push_back(newData); - // } - //} - - //void Blueprint::addMotor(const MotorData& data) - //{ - // if (motorExists(data.name)) - // { - // Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " - // << data.name << " already exists in this Blueprint. \ - // Ignoring the new one." << std::endl; - // } - // else - // { - // MotorData* newData = new MotorData(data); - // mMotorList.push_back(newData); - // } - //} - - //void Blueprint::addSensor(const SensorData& data) - //{ - // if (sensorExists(data.name)) - // { - // Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " - // << data.name << " already exists in this Blueprint. \ - // Ignoring the new one." << std::endl; - // } - // else - // { - // SensorData* newData = new SensorData(data); - // mSensorList.push_back(newData); - // } - //} - - //bool Blueprint::solidExists(const std::string& name) - //{ - // /// Ignore empty name strings. - // if (name.empty()) - // { - // return false; - // } - - // std::vector<SolidData*>::iterator iter; - // for (iter = mSolidList.begin(); iter != mSolidList.end(); ++iter) - // { - // if ((*iter)->name == name) - // { - // return true; - // } - // } - - // return false; - //} - - //bool Blueprint::jointExists(const std::string& name) - //{ - // /// Ignore empty name strings. - // if (name.empty()) - // { - // return false; - // } - - // std::vector<JointData*>::iterator iter; - // for (iter = mJointList.begin(); iter != mJointList.end(); ++iter) - // { - // if ((*iter)->name == name) - // { - // return true; - // } - // } - - // return false; - //} - - //bool Blueprint::motorExists(const std::string& name) - //{ - // /// Ignore empty name strings. - // if (name.empty()) - // { - // return false; - // } - - // std::vector<MotorData*>::iterator iter; - // for (iter = mMotorList.begin(); iter != mMotorList.end(); ++iter) - // { - // if ((*iter)->name == name) - // { - // return true; - // } - // } - - // return false; - //} - - //bool Blueprint::sensorExists(const std::string& name) - //{ - // /// Ignore empty name strings. - // if (name.empty()) - // { - // return false; - // } - - // std::vector<SensorData*>::iterator iter; - // for (iter = mSensorList.begin(); iter != mSensorList.end(); ++iter) - // { - // if ((*iter)->name == name) - // { - // return true; - // } - // } - - // return false; - //} - - //int Blueprint::internal_getSolidIndex(const std::string& name)const - //{ - // if (name.empty()) - // { - // return -1; - // } - - // for (unsigned int i=0; i<mSolidList.size(); ++i) - // { - // if (mSolidList[i]->name == name) - // { - // return (int)i; - // } - // } - - // return -1; - //} } --- 169,171 ---- Index: Solid.h =================================================================== RCS file: /cvsroot/opal/opal/src/Solid.h,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -d -r1.77 -r1.78 *** Solid.h 25 Feb 2005 06:40:26 -0000 1.77 --- Solid.h 26 Feb 2005 10:22:23 -0000 1.78 *************** *** 256,260 **** /// Returns true if this is a static Solid. ! virtual bool OPAL_CALL isStatic(); /// Sets whether the Solid should be static or dynamic. --- 256,260 ---- /// Returns true if this is a static Solid. ! virtual bool OPAL_CALL isStatic()const; /// Sets whether the Solid should be static or dynamic. Index: GearedMotor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotor.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** GearedMotor.cpp 25 Feb 2005 06:40:26 -0000 1.7 --- GearedMotor.cpp 26 Feb 2005 10:22:23 -0000 1.8 *************** *** 51,54 **** --- 51,55 ---- void GearedMotor::init(const GearedMotorData& data) { + assert(data.joint); Motor::init(); assert(data.joint->isRotational(data.jointAxisNum)); Index: ServoMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/ServoMotor.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** ServoMotor.h 25 Feb 2005 06:40:26 -0000 1.21 --- ServoMotor.h 26 Feb 2005 10:22:23 -0000 1.22 *************** *** 37,45 **** { /// This is a Motor with an internal feedback loop, allowing ! /// precise positioning control with minimal overshooting. It /// controls a single Joint axis. Depending on the desired mode of ! /// operation, it tries to achieve a desired position or velocity ! /// using up to a set maximum force. The Joint axis can be either ! /// linear or rotational. class ServoMotor : public Motor { --- 37,45 ---- { /// This is a Motor with an internal feedback loop, allowing ! /// precise positioning control with minimal overshooting. This ! /// Motor only works on rotational Joint axes. It /// controls a single Joint axis. Depending on the desired mode of ! /// operation, it tries to achieve a desired angle or angular velocity ! /// using up to a limited maximum force. class ServoMotor : public Motor { *************** *** 54,58 **** //virtual void OPAL_CALL init(Mode m, Joint* j, int axisNum); ! /// Initializes the Motor with the given data structure. virtual void OPAL_CALL init(const ServoMotorData& data); --- 54,59 ---- //virtual void OPAL_CALL init(Mode m, Joint* j, int axisNum); ! /// Initializes the Motor with the given data structure. Joint ! /// pointer in the data must be valid. virtual void OPAL_CALL init(const ServoMotorData& data); *************** *** 68,82 **** virtual void OPAL_CALL setEnabled(bool e); ! /// Sets the desired position to a value between the Joint axis' /// limits. ! virtual void OPAL_CALL setDesiredPos(real pos); ! /// Sets the desired position to a value between 0.0 and 1.0 which /// will be mapped to the Joint axis' limits. ! virtual void OPAL_CALL setDesiredPosNorm(real pos); ! /// Gets the desired position, a value between the Joint axis' /// limits. ! virtual real OPAL_CALL getDesiredPos()const; /// Sets the desired velocity. --- 69,83 ---- virtual void OPAL_CALL setEnabled(bool e); ! /// Sets the desired angle to a value between the Joint axis' /// limits. ! virtual void OPAL_CALL setDesiredAngle(real a); ! /// Sets the desired angle to a value between 0.0 and 1.0 which /// will be mapped to the Joint axis' limits. ! virtual void OPAL_CALL setDesiredAngleNorm(real a); ! /// Gets the desired angle, a value between the Joint axis' /// limits. ! virtual real OPAL_CALL getDesiredAngle()const; /// Sets the desired velocity. *************** *** 86,94 **** virtual real OPAL_CALL getDesiredVel()const; ! /// Sets the maximum amount of force/torque this Motor can use. ! virtual void OPAL_CALL setMaxForce(real max); ! /// Returns the maximum amount of force/torque this Motor can use. ! virtual real OPAL_CALL getMaxForce()const; /// Sets the restore speed, the parameter used to scale how fast --- 87,95 ---- virtual real OPAL_CALL getDesiredVel()const; ! /// Sets the maximum amount of torque this Motor can use. ! virtual void OPAL_CALL setMaxTorque(real max); ! /// Returns the maximum amount of torque this Motor can use. ! virtual real OPAL_CALL getMaxTorque()const; /// Sets the restore speed, the parameter used to scale how fast Index: AttractorMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/AttractorMotor.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** AttractorMotor.h 25 Feb 2005 06:40:26 -0000 1.23 --- AttractorMotor.h 26 Feb 2005 10:22:23 -0000 1.24 *************** *** 53,57 **** //virtual void OPAL_CALL init(Solid* solid0, Solid* solid1); ! /// Initializes the Motor with the given data structure. virtual void OPAL_CALL init(const AttractorMotorData& data); --- 53,58 ---- //virtual void OPAL_CALL init(Solid* solid0, Solid* solid1); ! /// Initializes the Motor with the given data structure. Solid ! /// pointers in the data must be valid. virtual void OPAL_CALL init(const AttractorMotorData& data); Index: ThrusterMotor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ThrusterMotor.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ThrusterMotor.cpp 25 Feb 2005 06:40:26 -0000 1.6 --- ThrusterMotor.cpp 26 Feb 2005 10:22:23 -0000 1.7 *************** *** 50,53 **** --- 50,54 ---- void ThrusterMotor::init(const ThrusterMotorData& data) { + assert(data.solid); Motor::init(); mData = data; Index: AttractorMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/AttractorMotorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AttractorMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 --- AttractorMotorData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 46,49 **** --- 46,51 ---- internal_solid0Index = 0; internal_solid1Index = 0; + internal_solid0Name = ""; + internal_solid1Name = ""; strength = defaults::motor::attractor::strength; exponent = defaults::motor::attractor::exponent; *************** *** 68,71 **** --- 70,77 ---- solid0 = data.solid0; solid1 = data.solid1; + internal_solid0Index = data.internal_solid0Index; + internal_solid1Index = data.internal_solid1Index; + internal_solid0Name = data.internal_solid0Name; + internal_solid1Name = data.internal_solid1Name; strength = data.strength; exponent = data.exponent; *************** *** 84,87 **** --- 90,99 ---- int internal_solid1Index; + /// Internal data used for Blueprint instantiation. + std::string internal_solid0Name; + + /// Internal data used for Blueprint instantiation. + std::string internal_solid1Name; + /// Constant used to scale attraction (repulsion if strength < 0). real strength; Index: Blueprint.h =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Blueprint.h 25 Feb 2005 16:43:19 -0000 1.23 --- Blueprint.h 26 Feb 2005 10:22:23 -0000 1.24 *************** *** 43,99 **** /// Joints, Motors, and/or Sensors. They are created by OPAL when /// an OPAL XML file is loaded. They can also be created by users ! /// and saved to an OPAL XML file. They are not guaranteed to yield /// perfect repeatability after a save/restore sequence. class Blueprint { public: ! Blueprint(); ! virtual ~Blueprint(); /// Adds a new SolidData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSolid(SolidData* data); /// Adds a new JointData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addJoint(JointData* data); /// Adds a new MotorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addMotor(MotorData* data); /// Adds a new SensorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSensor(SensorData* data); /// Returns the number of SolidData objects. ! virtual int OPAL_CALL getNumSolids()const; /// Returns the number of JointData objects. ! virtual int OPAL_CALL getNumJoints()const; /// Returns the number of MotorData objects. ! virtual int OPAL_CALL getNumMotors()const; /// Returns the number of SensorData objects. ! virtual int OPAL_CALL getNumSensors()const; /// Returns a pointer to the SolidData at the given index. ! virtual SolidData* OPAL_CALL getSolidData(unsigned int i)const; /// Returns a pointer to the JointData at the given index. ! virtual JointData* OPAL_CALL getJointData(unsigned int i)const; /// Returns a pointer to the MotorData at the given index. ! virtual MotorData* OPAL_CALL getMotorData(unsigned int i)const; /// Returns a pointer to the SensorData at the given index. ! virtual SensorData* OPAL_CALL getSensorData(unsigned int i)const; ! ! /// Returns the index of the given Solid name in the Blueprint's ! /// list of SolidData. Returns -1 if the Solid name is not found ! /// or if the given name is an empty string. ! int internal_getSolidIndex(const std::string& name)const; private: --- 43,109 ---- /// Joints, Motors, and/or Sensors. They are created by OPAL when /// an OPAL XML file is loaded. They can also be created by users ! /// and saved to an OPAL XML file. When setting up a Blueprint ! /// manually add all object data to the Blueprint and call finalize ! /// when finished. Blueprints are not guaranteed to yield /// perfect repeatability after a save/restore sequence. class Blueprint { public: ! OPAL_DECL Blueprint(); ! OPAL_DECL virtual ~Blueprint(); ! ! /// Updates references among internal objects. This must ! /// be called before the Blueprint can be instantiated. This ! /// is automatically called on Blueprints loaded from files. ! OPAL_DECL virtual void OPAL_CALL finalize(); ! ! /// Returns true if this Blueprint has been finalized (via the ! /// finalize function). ! OPAL_DECL virtual bool OPAL_CALL isFinalized()const; /// Adds a new SolidData object to the Blueprint. Makes a /// deep copy of the given data. ! OPAL_DECL virtual void OPAL_CALL addSolid(SolidData* data); /// Adds a new JointData object to the Blueprint. Makes a /// deep copy of the given data. ! OPAL_DECL virtual void OPAL_CALL addJoint(JointData* data); /// Adds a new MotorData object to the Blueprint. Makes a /// deep copy of the given data. ! OPAL_DECL virtual void OPAL_CALL addMotor(MotorData* data); /// Adds a new SensorData object to the Blueprint. Makes a /// deep copy of the given data. ! OPAL_DECL virtual void OPAL_CALL addSensor(SensorData* data); /// Returns the number of SolidData objects. ! OPAL_DECL virtual int OPAL_CALL getNumSolids()const; /// Returns the number of JointData objects. ! OPAL_DECL virtual int OPAL_CALL getNumJoints()const; /// Returns the number of MotorData objects. ! OPAL_DECL virtual int OPAL_CALL getNumMotors()const; /// Returns the number of SensorData objects. ! OPAL_DECL virtual int OPAL_CALL getNumSensors()const; /// Returns a pointer to the SolidData at the given index. ! OPAL_DECL virtual SolidData* OPAL_CALL getSolidData( ! unsigned int i)const; /// Returns a pointer to the JointData at the given index. ! OPAL_DECL virtual JointData* OPAL_CALL getJointData( ! unsigned int i)const; /// Returns a pointer to the MotorData at the given index. ! OPAL_DECL virtual MotorData* OPAL_CALL getMotorData( ! unsigned int i)const; /// Returns a pointer to the SensorData at the given index. ! OPAL_DECL virtual SensorData* OPAL_CALL getSensorData( ! unsigned int i)const; private: *************** *** 118,124 **** --- 128,158 ---- bool sensorExists(const std::string& name); + /// Returns the index of the given Solid name in the Blueprint's + /// list of SolidData. Returns -1 if the Solid name is not found + /// or if the given name is an empty string. + int getSolidIndex(const std::string& name)const; + + /// Returns the index of the given Joint name in the Blueprint's + /// list of JointData. Returns -1 if the Joint name is not found + /// or if the given name is an empty string. + int getJointIndex(const std::string& name)const; + + /// Prints a warning message saying that the Blueprint has already + /// been finalized. + void printFinalizedMessage(); + + /// True if the Blueprint has been finalized. + bool mFinalized; + + /// The set of all Solid pointers in this Blueprint. std::vector<SolidData*> mSolidList; + + /// The set of all Joint pointers in this Blueprint. std::vector<JointData*> mJointList; + + /// The set of all Motor pointers in this Blueprint. std::vector<MotorData*> mMotorList; + + /// The set of all Sensor pointers in this Blueprint. std::vector<SensorData*> mSensorList; }; Index: GearedMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotor.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** GearedMotor.h 25 Feb 2005 06:40:26 -0000 1.7 --- GearedMotor.h 26 Feb 2005 10:22:23 -0000 1.8 *************** *** 36,41 **** { /// The GearedMotor is intended to simulate an automobile engine. ! /// This Motor applies to a rotational Joint. It applies a torque to ! /// one of its degrees of freedom, but the amount of torque decreases /// linearly as the angular velocity increases, similar to an automobile /// engine. The Motor's max torque is applied when angular velocity is --- 36,41 ---- { /// The GearedMotor is intended to simulate an automobile engine. ! /// This Motor only works on rotational Joint axes. It applies a torque ! /// to one of its degrees of freedom, but the amount of torque decreases /// linearly as the angular velocity increases, similar to an automobile /// engine. The Motor's max torque is applied when angular velocity is *************** *** 58,62 **** //virtual void OPAL_CALL init(Joint* joint, int axisNum); ! /// Initializes the Motor with the given data structure. virtual void OPAL_CALL init(const GearedMotorData& data); --- 58,63 ---- //virtual void OPAL_CALL init(Joint* joint, int axisNum); ! /// Initializes the Motor with the given data structure. Joint ! /// pointer in the data must be valid. virtual void OPAL_CALL init(const GearedMotorData& data); Index: JointData.h =================================================================== RCS file: /cvsroot/opal/opal/src/JointData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JointData.h 25 Feb 2005 06:40:26 -0000 1.2 --- JointData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 91,94 **** --- 91,96 ---- internal_solid0Index = 0; internal_solid1Index = 0; + internal_solid0Name = ""; + internal_solid1Name = ""; anchor = defaults::joint::anchor; axis[0].direction = defaults::joint::axis0Direction; *************** *** 121,124 **** --- 123,130 ---- solid0 = data.solid0; solid1 = data.solid1; + internal_solid0Index = data.internal_solid0Index; + internal_solid1Index = data.internal_solid1Index; + internal_solid0Name = data.internal_solid0Name; + internal_solid1Name = data.internal_solid1Name; anchor = data.anchor; *************** *** 164,167 **** --- 170,179 ---- int internal_solid1Index; + /// Internal data used for Blueprint instantiation. + std::string internal_solid0Name; + + /// Internal data used for Blueprint instantiation. + std::string internal_solid1Name; + /// The anchor point for this Joint. This is not used for every /// Joint type. Index: Solid.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Solid.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Solid.cpp 25 Feb 2005 06:40:26 -0000 1.23 --- Solid.cpp 26 Feb 2005 10:22:23 -0000 1.24 *************** *** 89,93 **** //} ! bool Solid::isStatic() { return mData.isStatic; --- 89,93 ---- //} ! bool Solid::isStatic()const { return mData.isStatic; Index: Defines.h =================================================================== RCS file: /cvsroot/opal/opal/src/Defines.h,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** Defines.h 25 Feb 2005 06:40:26 -0000 1.60 --- Defines.h 26 Feb 2005 10:22:23 -0000 1.61 *************** *** 221,225 **** /// Axis 1: rotational ("wheel axis") /// Axis 2: not used ! HINGE_2_JOINT, /// Anchor: not used --- 221,225 ---- /// Axis 1: rotational ("wheel axis") /// Axis 2: not used ! WHEEL_JOINT, /// Anchor: not used *************** *** 332,336 **** namespace servo { ! const real maxForce = (real)10.0; const real restoreSpeed = (real)1.0; } --- 332,336 ---- namespace servo { ! const real maxTorque = (real)10.0; const real restoreSpeed = (real)1.0; } *************** *** 343,346 **** --- 343,349 ---- const real angularKd = (real)0.1; const real angularKs = (real)1.0; + const Vec3r desiredForward = Vec3r(0, 0, -1); + const Vec3r desiredUp = Vec3r(0, 1, 0); + const Vec3r desiredRight = Vec3r(1, 0, 0); } } Index: Joint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Joint.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Joint.cpp 25 Feb 2005 06:40:26 -0000 1.21 --- Joint.cpp 26 Feb 2005 10:22:23 -0000 1.22 *************** *** 286,290 **** } ! bool Joint::isRotational(int axisNum) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 286,290 ---- } ! bool Joint::isRotational(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); Index: SpringMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/SpringMotorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SpringMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 --- SpringMotorData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 57,65 **** mType = SPRING_MOTOR; solid = NULL; mode = LINEAR_MODE; // "desiredPos" is initialized in its own constructor. ! // "desiredForward" is initialized in its own constructor. ! // "desiredUp" is initialized in its own constructor. ! // "desiredRight" is initialized in its own constructor. linearKd = defaults::motor::spring::linearKd; linearKs = defaults::motor::spring::linearKs; --- 57,67 ---- mType = SPRING_MOTOR; solid = NULL; + internal_solidIndex = 0; + internal_solidName = ""; mode = LINEAR_MODE; // "desiredPos" is initialized in its own constructor. ! desiredForward = defaults::motor::spring::desiredForward; ! desiredUp = defaults::motor::spring::desiredUp; ! desiredRight = defaults::motor::spring::desiredRight; linearKd = defaults::motor::spring::linearKd; linearKs = defaults::motor::spring::linearKs; *************** *** 85,88 **** --- 87,92 ---- name = data.name; solid = data.solid; + internal_solidIndex = data.internal_solidIndex; + internal_solidName = data.internal_solidName; mode = data.mode; desiredPos = data.desiredPos; *************** *** 99,102 **** --- 103,112 ---- Solid* solid; + /// Internal data used for Blueprint instantiation. + int internal_solidIndex; + + /// Internal data used for Blueprint instantiation. + std::string internal_solidName; + /// The Motor's mode of operation. SpringMotorMode mode; Index: ThrusterMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/ThrusterMotorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ThrusterMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 --- ThrusterMotorData.h 26 Feb 2005 10:22:23 -0000 1.3 *************** *** 43,46 **** --- 43,48 ---- mType = THRUSTER_MOTOR; solid = NULL; + internal_solidIndex = 0; + internal_solidName = ""; force.singleStep = true; } ******... [truncated message content] |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:22:33
|
Update of /cvsroot/opal/opal/samples/simple_objects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/samples/simple_objects Modified Files: main.cpp Log Message: finished overhauling xml loader Index: main.cpp =================================================================== RCS file: /cvsroot/opal/opal/samples/simple_objects/main.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** main.cpp 22 Feb 2005 19:46:19 -0000 1.19 --- main.cpp 26 Feb 2005 10:22:22 -0000 1.20 *************** *** 104,107 **** --- 104,112 ---- //std::cout << "Current ground material is wood" << std::endl; + opal::Blueprint bp; + opal::loadFile(bp, "example.xml"); + opal::BlueprintInstance instance; + gSimulator->instantiateBlueprint(instance, bp); + InitSDL(); MainLoop(); |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:22:33
|
Update of /cvsroot/opal/opal/samples/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/samples/src Modified Files: CarObject.cpp Log Message: finished overhauling xml loader Index: CarObject.cpp =================================================================== RCS file: /cvsroot/opal/opal/samples/src/CarObject.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** CarObject.cpp 23 Feb 2005 04:56:48 -0000 1.21 --- CarObject.cpp 26 Feb 2005 10:22:23 -0000 1.22 *************** *** 72,76 **** // Add front left Joint. mFLJoint = sim->createJoint(); ! jointData.setType(opal::HINGE_2_JOINT); jointData.solid1 = mFLWheel; jointData.anchor = M.getPosition(); --- 72,76 ---- // Add front left Joint. mFLJoint = sim->createJoint(); ! jointData.setType(opal::WHEEL_JOINT); jointData.solid1 = mFLWheel; jointData.anchor = M.getPosition(); *************** *** 86,90 **** // Add front right Joint. mFRJoint = sim->createJoint(); ! jointData.setType(opal::HINGE_2_JOINT); jointData.solid1 = mFRWheel; jointData.anchor = M.getPosition(); --- 86,90 ---- // Add front right Joint. mFRJoint = sim->createJoint(); ! jointData.setType(opal::WHEEL_JOINT); jointData.solid1 = mFRWheel; jointData.anchor = M.getPosition(); *************** *** 100,104 **** // Add rear left Joint. mRLJoint = sim->createJoint(); ! jointData.setType(opal::HINGE_JOINT); jointData.solid1 = mRLWheel; jointData.anchor = M.getPosition(); --- 100,104 ---- // Add rear left Joint. mRLJoint = sim->createJoint(); ! jointData.setType(opal::WHEEL_JOINT); jointData.solid1 = mRLWheel; jointData.anchor = M.getPosition(); *************** *** 115,119 **** // Add rear right Joint. mRRJoint = sim->createJoint(); ! jointData.setType(opal::HINGE_JOINT); jointData.solid1 = mRRWheel; jointData.anchor = M.getPosition(); --- 115,119 ---- // Add rear right Joint. mRRJoint = sim->createJoint(); ! jointData.setType(opal::WHEEL_JOINT); jointData.solid1 = mRRWheel; jointData.anchor = M.getPosition(); |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:22:31
|
Update of /cvsroot/opal/opal/samples/car In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565/samples/car Modified Files: main.cpp Log Message: finished overhauling xml loader Index: main.cpp =================================================================== RCS file: /cvsroot/opal/opal/samples/car/main.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** main.cpp 22 Feb 2005 19:46:18 -0000 1.21 --- main.cpp 26 Feb 2005 10:22:22 -0000 1.22 *************** *** 500,504 **** f.vec = opal::Vec3r(0, 300, -1200); f.type = opal::LOCAL_FORCE; ! f.timeLeft = (opal::real)0.01; projectile->getSolid()->addForce(f); gObjects.push_back(projectile); --- 500,504 ---- f.vec = opal::Vec3r(0, 300, -1200); f.type = opal::LOCAL_FORCE; ! f.duration = (opal::real)0.01; projectile->getSolid()->addForce(f); gObjects.push_back(projectile); |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 10:22:31
|
Update of /cvsroot/opal/opal In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27565 Modified Files: changelog.txt todo.txt Log Message: finished overhauling xml loader Index: changelog.txt =================================================================== RCS file: /cvsroot/opal/opal/changelog.txt,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** changelog.txt 23 Feb 2005 04:56:48 -0000 1.9 --- changelog.txt 26 Feb 2005 10:22:22 -0000 1.10 *************** *** 2,5 **** --- 2,6 ---- , 2005 ------------------------------------------ + * Overhauled XML loading system * New additional object creation system: all objects can be created from/saved to a data structure * Separate Joint types were combined into a single Joint class Index: todo.txt =================================================================== RCS file: /cvsroot/opal/opal/todo.txt,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** todo.txt 25 Feb 2005 06:40:26 -0000 1.45 --- todo.txt 26 Feb 2005 10:22:22 -0000 1.46 *************** *** 2,26 **** ================= ! * make OPAL XML spec/sample file that includes everything; put on website * look at scons dylib-building problem on os x * fix memory allocation across dll boundary - Blueprint - BlueprintInstance ! - volume collision check results ! ! * XML loader, manager ! - update parsing ! - update instantiation functions ! ! * should spaces be stored in xml/blueprints? ! - probably not ! ! * fix naming descrepancies ! - desiredPos, desiredPosition, getState, getVelocity, etc. ! - make it more unified ! ! * search and replace existing assert() calls and std::cout calls * certain function calls (e.g. setStatic) during collision events crash the system --- 2,15 ---- ================= ! * fix crashing problem when instantiate ball joint from example.xml * look at scons dylib-building problem on os x + * add offset transform to instantiateBlueprint + * fix memory allocation across dll boundary - Blueprint - BlueprintInstance ! - volume collision check results -> put results in a specific class * certain function calls (e.g. setStatic) during collision events crash the system *************** *** 29,35 **** - replace 'garbage' system with delayed destroy events - * separate Solid options for sleeping (setSleeping(true/false), setSleepingEnabled(true/false)) - - per-Solid sleepiness - * Add a boolean to Solid that determines if it generates contacts at all (the docking volume shouldn't collide with anything but should generate collision events still). - maybe look at a more powerful solution with collide flags --- 18,21 ---- *************** *** 37,51 **** * reenable collision detection for static-static, static-sleeping cases (or have an option) - * change description (on website and sf project page) to highlight the main attractions - - cross-platform - - simple API - - high-level objects (e.g. Solids, Joints, Motors, Sensors) - - XML file serialization - - uses existing collision detection/physics engines underneath - - provides an abstract interface that can be extended to support other physics engines For Version 0.4.0 ================= * add 'web' and 'doc' modules to repos - maybe just add 'web' module that contains docs --- 23,34 ---- * reenable collision detection for static-static, static-sleeping cases (or have an option) For Version 0.4.0 ================= + * search and replace existing assert() calls + - fatal errors print a message and assert + - non-fatal errors just print a warning + * add 'web' and 'doc' modules to repos - maybe just add 'web' module that contains docs *************** *** 76,79 **** --- 59,66 ---- * should all modes with multiple options (e.g. spring motor, accel sensor) take bit flags? + * separate Joint into separate subclasses? + + * separate Motors with different modes into separate types? + Build System ============ *************** *** 149,152 **** --- 136,140 ---- * search code for TODOs + * blueprints could have a single boolean space parameter like "insert the whole bp into a space or not" Long-term Ideas |
|
From: Andres R. <ar...@us...> - 2005-02-26 07:17:22
|
Update of /cvsroot/opal/opal/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16233/src Modified Files: Matrix44r.h Log Message: fixed math bug Index: Matrix44r.h =================================================================== RCS file: /cvsroot/opal/opal/src/Matrix44r.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Matrix44r.h 12 Feb 2005 22:31:44 -0000 1.26 --- Matrix44r.h 26 Feb 2005 07:17:09 -0000 1.27 *************** *** 612,618 **** --- 612,623 ---- { return Point3r( + m(0,0) * p[0] + m(0,1) * p[1] + m(0,2) * p[2] + m(0,3), + m(1,0) * p[0] + m(1,1) * p[1] + m(1,2) * p[2] + m(1,3), + m(2,0) * p[0] + m(2,1) * p[1] + m(2,2) * p[2] + m(2,3)); + /* wtf mate? m(0,0) * p[0] + m(0,1) * p[1] + m(0,2) * p[2] + m(3,0), m(1,0) * p[0] + m(1,1) * p[1] + m(1,2) * p[2] + m(3,1), m(2,0) * p[0] + m(2,1) * p[1] + m(2,2) * p[2] + m(3,2)); + */ } |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 03:28:10
|
Update of /cvsroot/opal/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25675 Modified Files: index.html Log Message: decreased indents for bullets on main page Index: index.html =================================================================== RCS file: /cvsroot/opal/web/index.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** index.html 26 Feb 2005 03:22:11 -0000 1.2 --- index.html 26 Feb 2005 03:27:48 -0000 1.3 *************** *** 25,32 **** <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> ! <o:Revision>90</o:Revision> ! <o:TotalTime>183</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> ! <o:LastSaved>2005-02-26T03:17:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>348</o:Words> --- 25,32 ---- <o:Author>Tyler Streeter</o:Author> [...1024 lines suppressed...] </span></span></span><![endif]><span style='font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:black'>Contact sensors<o:p></o:p></span></p> ! <p class=MsoNormal style='margin-left:68.3pt;text-indent:-.25in;mso-list: ! l8 level3 lfo8;tab-stops:list 68.3pt 1.5in'><![if !supportLists]><span ! style='font-family:"Courier New";mso-fareast-font-family:"Courier New"; ! color:black'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:black'>Velocity sensors<o:p></o:p></span></p> ! <p class=MsoNormal style='margin-left:68.3pt;text-indent:-.25in;mso-list: ! l8 level3 lfo8;tab-stops:list 68.3pt 1.5in'><![if !supportLists]><span ! style='font-family:"Courier New";mso-fareast-font-family:"Courier New"; ! color:black'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:black'>Acceleration sensors<o:p></o:p></span></p> ! <p class=MsoNormal style='margin-left:68.3pt;text-indent:-.25in;mso-list: ! l8 level3 lfo8;tab-stops:list 68.3pt 1.5in'><![if !supportLists]><span ! style='font-family:"Courier New";mso-fareast-font-family:"Courier New"; ! color:black'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:black'>Incline sensors<o:p></o:p></span></p> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 03:22:30
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24415/files Modified Files: example.xml Log Message: updated main page Index: example.xml =================================================================== RCS file: /cvsroot/opal/web/files/example.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** example.xml 25 Feb 2005 23:10:31 -0000 1.2 --- example.xml 26 Feb 2005 03:22:10 -0000 1.3 *************** *** 105,109 **** </Joint> <Joint> ! <Type value="hinge2"/> <References solid0="object1" solid1="object2"/> <Axis> --- 105,109 ---- </Joint> <Joint> ! <Type value="wheel"/> <References solid0="object1" solid1="object2"/> <Axis> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-26 03:22:30
|
Update of /cvsroot/opal/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24415 Modified Files: index.html Log Message: updated main page Index: index.html =================================================================== RCS file: /cvsroot/opal/web/index.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** index.html 25 Feb 2005 19:56:17 -0000 1.1 --- index.html 26 Feb 2005 03:22:11 -0000 1.2 *************** *** 25,39 **** <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> ! <o:Revision>71</o:Revision> ! <o:TotalTime>70</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> ! <o:LastSaved>2005-02-25T19:45:00Z</o:LastSaved> <o:Pages>1</o:Pages> ! <o:Words>199</o:Words> ! <o:Characters>1140</o:Characters> <o:Company>none</o:Company> [...1032 lines suppressed...] ! <p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in;mso-list:l8 level3 lfo13; ! tab-stops:list 1.5in'><![if !supportLists]><span style='font-family:"Courier New"; ! mso-fareast-font-family:"Courier New";color:black'><span style='mso-list: ! Ignore'>o<span style='font:7.0pt "Times New Roman"'> ! </span></span></span><![endif]><span style='font-family:"Book Antiqua"; ! mso-bidi-font-family:Arial;color:black'>Velocity sensors<o:p></o:p></span></p> ! <p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in;mso-list:l8 level3 lfo13; ! tab-stops:list 1.5in'><![if !supportLists]><span style='font-family:"Courier New"; ! mso-fareast-font-family:"Courier New";color:black'><span style='mso-list: ! Ignore'>o<span style='font:7.0pt "Times New Roman"'> ! </span></span></span><![endif]><span style='font-family:"Book Antiqua"; ! mso-bidi-font-family:Arial;color:black'>Acceleration sensors<o:p></o:p></span></p> ! <p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in;mso-list:l8 level3 lfo13; ! tab-stops:list 1.5in'><![if !supportLists]><span style='font-family:"Courier New"; ! mso-fareast-font-family:"Courier New";color:black'><span style='mso-list: ! Ignore'>o<span style='font:7.0pt "Times New Roman"'> ! </span></span></span><![endif]><span style='font-family:"Book Antiqua"; ! mso-bidi-font-family:Arial;color:black'>Incline sensors<o:p></o:p></span></p> </td> </tr> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 23:10:58
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16742/files Modified Files: example.xml Log Message: fixed problem in xml file Index: example.xml =================================================================== RCS file: /cvsroot/opal/web/files/example.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** example.xml 25 Feb 2005 23:07:11 -0000 1.1 --- example.xml 25 Feb 2005 23:10:31 -0000 1.2 *************** *** 194,196 **** --- 194,197 ---- <ForceVec x="0.0" y="10.0" z="0.0"/> <ForcePos x="1.0" y="0.0" z="0.0"/> + </Motor> </OpalBlueprint> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 23:07:23
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15832/files Added Files: example.xml Log Message: added example xml file --- NEW FILE: example.xml --- <?xml version="1.0" ?> <OpalBlueprint> <Solid> <Name value="object1"/> <Enabled value="true"/> <Static value="false"/> <Sleeping value="false"/> <Sleepiness value="0.5"/> <LinearDamping value="0.15"/> <AngularDamping value="0.15"/> <LinearVelocity x="0.0" y="0.0" z="0.0"/> <AngularVelocity x="0.0" y="0.0" z="0.0"/> <Offset> <Transform type="translate" x="5.0" y="0.2" z="5.5"/> <Transform type="rotate" angle="45.0" x="1.0" y="0.0" z="0.0"/> </Offset> <Shape type="box"> <Dimensions x="0.4" y="0.4" z="2.0"/> <Material hardness="0.5" friction="0.5" bounciness="0.5" density="0.5"/> <Offset> <Transform type="translate" x="5.0" y="0.2" z="5.5"/> <Transform type="euler" x="0.0" y="-77.0" z="0.0"/> </Offset> </Shape> </Solid> <Solid> <Name value="object2"/> <Offset> <Transform type="matrix" _00="1.0" _01="0.0" _02="0.0" _03="0.0" _10="0.0" _11="1.0" _12="0.0" _13="0.0" _20="0.0" _21="0.0" _22="1.0" _23="0.0" _30="0.0" _31="0.0" _32="0.0" _33="1.0"/> </Offset> <Shape type="sphere"> <Dimensions radius="3.0"/> </Shape> <Shape type="capsule"> <Dimensions radius="4.0"/> <Dimensions length="8.0"/> </Shape> </Solid> <Solid> <Name value="ground1"/> <Static value="true"/> <Shape type="plane"> <Dimensions a="0.0" b="1.0" c="0.0" d="0.0"/> </Shape> </Solid> <Solid> <Name value="ray1"/> <Static value="true"/> <Shape type="ray"> <Dimensions originx="2.0" originy="5.0" originz="9.0" dirx="1.0" diry="0.0" dirz="0.0"/> </Shape> </Solid> <Joint> <Name value="myJoint1"/> <Type value="hinge"/> <References solid0="object1" solid1="object2"/> <Enabled value="true"/> <Anchor x="0.5" y="0.0" z="2.0"/> <BreakMode value="threshold"/> <BreakThresh value="100.0"/> <AccumThresh value="0.0"/> <AccumDamage value="0.0"/> <Axis> <AxisNum value="0"/> <Direction x="1.5" y="1.5" z="0.0"/> <LimitsEnabled value="true"/> <LimitLow value="-35.0"/> <LimitHigh value="95.0"/> <LimitHardness value="0.5"/> <LimitBounciness value="0.5"/> </Axis> </Joint> <Joint> <Type value="universal"/> <References solid0="object1" solid1="object2"/> <BreakMode value="accumulated"/> <Axis> <AxisNum value="0"/> <Direction x="1.5" y="1.5" z="0.0"/> </Axis> <Axis> <AxisNum value="1"/> <Direction x="-10.0" y="0.0" z="30.0"/> </Axis> </Joint> <Joint> <Type value="ball"/> <References solid0="object1" solid1="object2"/> <BreakMode value="unbreakable"/> <Axis> <AxisNum value="0"/> <Direction x="1.5" y="1.5" z="0.0"/> </Axis> <Axis> <AxisNum value="2"/> <Direction x="-10.0" y="0.0" z="30.0"/> </Axis> </Joint> <Joint> <Type value="slider"/> <References solid0="object1" solid1="object2"/> <Axis> <Direction x="-10.0" y="0.0" z="30.0"/> </Axis> </Joint> <Joint> <Type value="hinge2"/> <References solid0="object1" solid1="object2"/> <Axis> <AxisNum value="0"/> <Direction x="1.5" y="1.5" z="0.0"/> </Axis> <Axis> <AxisNum value="1"/> <Direction x="-10.0" y="0.0" z="30.0"/> </Axis> </Joint> <Joint> <Type value="fixed"/> <References solid0="object1" solid1="object2"/> </Joint> <Motor> <Type value="attractor"/> <References solid0="object1" solid1="object2"/> <Strength value="1.0"/> <Exponent value="1.0"/> </Motor> <Motor> <Name value="gear1"/> <Type value="geared"/> <References joint="myJoint1"/> <JointAxisNum value="0"/> <MaxTorque value="30.0"/> <MaxVelocity value="2000.0"/> <Throttle value="0.0"/> </Motor> <Motor> <Name value="servo1"/> <Type value="servo"/> <References joint="myJoint1"/> <JointAxisNum value="0"/> <Mode value="desiredAngle"/> <DesiredAngle value="45.0"/> <MaxTorque value="100.0"/> <RestoreSpeed value="5.0"/> </Motor> <Motor> <Name value="servo2"/> <Type value="servo"/> <References joint="myJoint1"/> <JointAxisNum value="0"/> <Mode value="desiredVel"/> <DesiredVel value="20.0"/> <MaxTorque value="100.0"/> </Motor> <Motor> <Name value="spring1"/> <Type value="spring"/> <References solid="object1"/> <Mode value="linearAndAngular"/> <DesiredPos x="10.0" y="-15.0" z="20.0"/> <DesiredForward x="0.0" y="0.0" z="-1.0"/> <DesiredUp x="0.0" y="1.0" z="0.0"/> <DesiredRight x="1.0" y="0.0" z="0.0"/> <LinearKd value="1.0"/> <LinearKs value="1.0"/> <AngularKd value="1.0"/> <AngularKs value="1.0"/> </Motor> <Motor> <Name value="spring2"/> <Type value="spring"/> <References solid="object1"/> <Mode value="linear"/> <DesiredPos x="10.0" y="-15.0" z="20.0"/> <LinearKd value="1.0"/> <LinearKs value="1.0"/> </Motor> <Motor> <Name value="spring3"/> <Type value="spring"/> <References solid="object1"/> <Mode value="angular"/> <DesiredForward x="0.0" y="0.0" z="-1.0"/> <DesiredUp x="0.0" y="1.0" z="0.0"/> <DesiredRight x="1.0" y="0.0" z="0.0"/> <AngularKd value="1.0"/> <AngularKs value="1.0"/> </Motor> <Motor> <Type value="thruster"/> <References solid="object2"/> <ForceType value="localForceAtLocalPos"/> <ForceVec x="0.0" y="10.0" z="0.0"/> <ForcePos x="1.0" y="0.0" z="0.0"/> </OpalBlueprint> |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 23:07:21
|
Update of /cvsroot/opal/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15832 Modified Files: documentation.html Log Message: added example xml file Index: documentation.html =================================================================== RCS file: /cvsroot/opal/web/documentation.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** documentation.html 25 Feb 2005 19:56:17 -0000 1.1 --- documentation.html 25 Feb 2005 23:07:09 -0000 1.2 *************** *** 25,39 **** <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> ! <o:Revision>84</o:Revision> ! <o:TotalTime>91</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> ! <o:LastSaved>2005-02-25T19:51:00Z</o:LastSaved> <o:Pages>1</o:Pages> ! <o:Words>204</o:Words> ! <o:Characters>1165</o:Characters> <o:Company>none</o:Company> ! <o:Lines>9</o:Lines> ! <o:Paragraphs>2</o:Paragraphs> ! <o:CharactersWithSpaces>1367</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> --- 25,39 ---- <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> ! <o:Revision>85</o:Revision> ! <o:TotalTime>94</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> ! <o:LastSaved>2005-02-25T23:06:00Z</o:LastSaved> <o:Pages>1</o:Pages> ! <o:Words>226</o:Words> ! <o:Characters>1291</o:Characters> <o:Company>none</o:Company> ! <o:Lines>10</o:Lines> ! <o:Paragraphs>3</o:Paragraphs> ! <o:CharactersWithSpaces>1514</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> *************** *** 99,103 **** </style> <![endif]--><!--[if gte mso 9]><xml> ! <o:shapedefaults v:ext="edit" spidmax="44034"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> --- 99,103 ---- </style> <![endif]--><!--[if gte mso 9]><xml> ! <o:shapedefaults v:ext="edit" spidmax="45058"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> *************** *** 201,204 **** --- 201,208 ---- <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a + href="files/example.xml">Sample OPAL XML</a>: file containing examples of + every object type and parameter.<o:p></o:p></span></p> + <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> + <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="api/index.html">API Documentation</a>: a detailed description of everything in OPAL.</span><span style='font-family:"Book Antiqua";mso-bidi-font-family: |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 19:56:27
|
Update of /cvsroot/opal/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23318 Added Files: contact.html documentation.html downloads.html index.html license.html manual.html users.html Log Message: importing website into new module --- NEW FILE: license.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="license_files/filelist.xml"> <link rel=Edit-Time-Data href="license_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>79</o:Revision> <o:TotalTime>78</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:46:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>143</o:Words> <o:Characters>817</o:Characters> <o:Company>none</o:Company> <o:Lines>6</o:Lines> <o:Paragraphs>1</o:Paragraphs> <o:CharactersWithSpaces>959</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="43010"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link="#3366FF" vlink="#000066" style='tab-interval: .5in' alink="#ffcc33"> <div class=Section1> <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:7.5pt 7.5pt 7.5pt 7.5pt'> <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> <td width=210 valign=top style='width:1.75in;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="index.html">Home</a></span><span style='color:#333333'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="downloads.html">Downloads</a></span><span class=MsoHyperlink><span style='color:#333333;text-decoration:none; text-underline:none'><o:p></o:p></span></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="documentation.html">Documentation</a></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="license.html">License</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="users.html">Users</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="contact.html">Contact</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://sourceforge.net/projects/opal"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=88 height=31 id="_x0000_i1027" src="files/sf_logo.png"></span></a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://www.opensource.org/"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=75 height=65 id="_x0000_i1025" src="files/opensource_logo.png"></span></a><o:p></o:p></span></p> </td> <td width=1145 valign=top style='width:687.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:#333333'><img border=0 width=534 height=129 id="_x0000_i1026" src="files/opal_logo.jpg"><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-size:22.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>License<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>OPAL is licensed under either the BSD or LGPL license (your choice).<span style='mso-spacerun:yes'> </span>See the files license-BSD.txt and license-LGPL.txt in the source release for copies of these licenses.</span><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> </td> </tr> </table> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:10.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:8.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter<o:p></o:p></span></p> </div> </body> </html> --- NEW FILE: index.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="index_files/filelist.xml"> <link rel=Edit-Time-Data href="index_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>71</o:Revision> <o:TotalTime>70</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:45:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>199</o:Words> <o:Characters>1140</o:Characters> <o:Company>none</o:Company> <o:Lines>9</o:Lines> <o:Paragraphs>2</o:Paragraphs> <o:CharactersWithSpaces>1337</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:503857615; mso-list-type:hybrid; mso-list-template-ids:-1557992790 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} @list l0:level2 {mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level3 {mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level4 {mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level5 {mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level6 {mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level7 {mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level8 {mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in;} @list l0:level9 {mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in;} @list l1 {mso-list-id:1774857287; mso-list-type:hybrid; mso-list-template-ids:-1276374782 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} @list l1:level2 {mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level3 {mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level4 {mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level5 {mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level6 {mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level7 {mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level8 {mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in;} @list l1:level9 {mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in;} @list l2 {mso-list-id:1869373712; mso-list-template-ids:-1114968554;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3 {mso-list-id:1879855375; mso-list-template-ids:-1005415440;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="39938"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link="#3366FF" vlink="#000066" style='tab-interval: .5in' alink="#ffcc33"> <div class=Section1> <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:7.5pt 7.5pt 7.5pt 7.5pt'> <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> <td width=210 valign=top style='width:1.75in;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="index.html">Home</a></span><span style='color:#333333'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="downloads.html">Downloads</a></span><span class=MsoHyperlink><span style='color:#333333;text-decoration:none; text-underline:none'><o:p></o:p></span></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="documentation.html">Documentation</a></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="license.html">License</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="users.html">Users</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="contact.html">Contact</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://sourceforge.net/projects/opal"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=88 height=31 id="_x0000_i1027" src="files/sf_logo.png"></span></a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://www.opensource.org/"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=75 height=65 id="_x0000_i1025" src="files/opensource_logo.png"></span></a><o:p></o:p></span></p> </td> <td width=1145 valign=top style='width:687.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:#333333'><img border=0 width=534 height=129 id="_x0000_i1026" src="files/opal_logo.jpg"><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'>Purpose<o:p></o:p></span></b></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>OPAL is a high-level abstract interface for physics engines in games and other real-time 3D applications. It simplifies common physics tasks and provides a physics engine-independent API that can be extended to support new physics engines.</span><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'>Features<o:p></o:p></span></b></p> <ul style='margin-top:0in' type=disc> <li class=MsoNormal style='color:black;mso-list:l1 level1 lfo3;tab-stops: list .5in'><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial'>Simple API<o:p></o:p></span></li> <li class=MsoNormal style='color:black;mso-list:l1 level1 lfo3;tab-stops: list .5in'><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial'>Tested on Linux, Irix, Windows, and Mac OS X (specific physics engines may have limited platform support)<o:p></o:p></span></li> <li class=MsoNormal style='color:black;mso-list:l1 level1 lfo3;tab-stops: list .5in'><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial'>High-level motors (e.g. servos) and sensors (e.g. accelerometers, rangefinders/ray casting)<o:p></o:p></span></li> <li class=MsoNormal style='color:black;mso-list:l1 level1 lfo3;tab-stops: list .5in'><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial'>XML file storage<o:p></o:p></span></li> </ul> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'>Supported Physics Engines<o:p></o:p></span></b></p> <ul style='margin-top:0in' type=disc> <li class=MsoNormal style='color:black;mso-list:l0 level1 lfo6;tab-stops: list .5in'><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial'>ODE: works on Linux, Irix, Windows, and Mac OS X<o:p></o:p></span></li> </ul> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> </td> </tr> </table> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:10.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:8.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter<o:p></o:p></span></p> </div> </body> </html> --- NEW FILE: contact.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="contact_files/filelist.xml"> <link rel=Edit-Time-Data href="contact_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>83</o:Revision> <o:TotalTime>79</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:45:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>178</o:Words> <o:Characters>1015</o:Characters> <o:Company>none</o:Company> <o:Lines>8</o:Lines> <o:Paragraphs>2</o:Paragraphs> <o:CharactersWithSpaces>1191</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="45058"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link="#3366FF" vlink="#000066" style='tab-interval: .5in' alink="#ffcc33"> <div class=Section1> <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:7.5pt 7.5pt 7.5pt 7.5pt'> <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> <td width=210 valign=top style='width:1.75in;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="index.html">Home</a></span><span style='color:#333333'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="downloads.html">Downloads</a></span><span class=MsoHyperlink><span style='color:#333333;text-decoration:none; text-underline:none'><o:p></o:p></span></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="documentation.html">Documentation</a></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="license.html">License</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="users.html">Users</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="contact.html">Contact</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://sourceforge.net/projects/opal"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=88 height=31 id="_x0000_i1027" src="files/sf_logo.png"></span></a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://www.opensource.org/"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=75 height=65 id="_x0000_i1025" src="files/opensource_logo.png"></span></a><o:p></o:p></span></p> </td> <td width=1145 valign=top style='width:687.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:#333333'><img border=0 width=534 height=129 id="_x0000_i1026" src="files/opal_logo.jpg"><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-size:22.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>Contact<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Alan Fischer<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Email: alan dot fischer at gmail dot com<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Website: <a href="http://www.vrac.iastate.edu/~pallindo">www.vrac.iastate.edu/~pallindo</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Andres Reinot<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Email: andres at reinot dot com<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Website: <a href="http://www.reinot.com/">www.reinot.com</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Tyler Streeter<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Email: tylerstreeter at gmail dot com<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'>Website: <a href="http://www.vrac.iastate.edu/~streeter">www.vrac.iastate.edu/~streeter</a></span><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> </td> </tr> </table> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:10.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:8.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter<o:p></o:p></span></p> </div> </body> </html> --- NEW FILE: users.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="users_files/filelist.xml"> <link rel=Edit-Time-Data href="users_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>85</o:Revision> <o:TotalTime>93</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:46:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>260</o:Words> <o:Characters>1482</o:Characters> <o:Company>none</o:Company> <o:Lines>12</o:Lines> <o:Paragraphs>3</o:Paragraphs> <o:CharactersWithSpaces>1739</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="45058"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link="#3366FF" vlink="#000066" style='tab-interval: .5in' alink="#ffcc33"> <div class=Section1> <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:7.5pt 7.5pt 7.5pt 7.5pt'> <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> <td width=210 valign=top style='width:1.75in;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="index.html">Home</a></span><span style='color:#333333'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="downloads.html">Downloads</a></span><span class=MsoHyperlink><span style='color:#333333;text-decoration:none; text-underline:none'><o:p></o:p></span></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="documentation.html">Documentation</a></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="license.html">License</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="users.html">Users</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="contact.html">Contact</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://sourceforge.net/projects/opal"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=88 height=31 id="_x0000_i1027" src="files/sf_logo.png"></span></a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://www.opensource.org/"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=75 height=65 id="_x0000_i1025" src="files/opensource_logo.png"></span></a><o:p></o:p></span></p> </td> <td width=1145 valign=top style='width:687.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:#333333'><img border=0 width=534 height=129 id="_x0000_i1026" src="files/opal_logo.jpg"><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-size:22.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>Users<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:16.0pt;font-family:"Book Antiqua"; color:black'><a href="http://www.vrac.iastate.edu/~streeter/cabin/cabin.html">Cabin</a></span><span style='font-family:"Book Antiqua";color:black'>: a physically-simulated cabin built from separate wooden boards that can be destroyed with fire.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:16.0pt;font-family:"Book Antiqua"; color:black'>Radius</span><span style='font-family:"Book Antiqua";color:black'>: an arcade-style 2D space shooter.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:16.0pt;font-family:"Book Antiqua"; color:black'><a href="http://www.annexlabs.com/rhino">Rhino</a></span><span style='font-family:"Book Antiqua";color:black'>: You are a space station maintenance worker assigned the task of asteroid duty. Maneuver your ship "the Rhino" in frictionless zero gravity, clearing floating debris and intercepting incoming asteroid storms before they damage the vulnerable station. It lacks a certain glory usually attributed to astronauts, but hey, its a living. <o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:16.0pt;font-family:"Book Antiqua"; color:black'>Application Switcher</span><span style='font-family:"Book Antiqua"; color:black'> for <a href="http://www.iastate.edu/">Iowa State Universitys</a> <a href="http://www.vrac.iastate.edu/">Virtual Reality Applications Center</a>: essentially a 3D GUI for a virtual reality environment that allows users to switch into and out of various virtual reality applications solely from within a virtual environment.</span><span style='font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:black'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> </td> </tr> </table> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:10.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:8.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter<o:p></o:p></span></p> </div> </body> </html> --- NEW FILE: documentation.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="documentation_files/filelist.xml"> <link rel=Edit-Time-Data href="documentation_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>84</o:Revision> <o:TotalTime>91</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:51:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>204</o:Words> <o:Characters>1165</o:Characters> <o:Company>none</o:Company> <o:Lines>9</o:Lines> <o:Paragraphs>2</o:Paragraphs> <o:CharactersWithSpaces>1367</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="44034"> <o:colormenu v:ext="edit" fillcolor="white"/> </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link="#3366FF" vlink="#000066" style='tab-interval: .5in' alink="#ffcc33"> <div class=Section1> <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:7.5pt 7.5pt 7.5pt 7.5pt'> <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> <td width=210 valign=top style='width:1.75in;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="index.html">Home</a></span><span style='color:#333333'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="downloads.html">Downloads</a></span><span class=MsoHyperlink><span style='color:#333333;text-decoration:none; text-underline:none'><o:p></o:p></span></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="documentation.html">Documentation</a></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="license.html">License</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="users.html">Users</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><a href="contact.html">Contact</a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://sourceforge.net/projects/opal"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=88 height=31 id="_x0000_i1025" src="files/sf_logo.png"></span></a><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;font-family:"Book Antiqua"; mso-bidi-font-family:Arial;color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:#333333'><a href="http://www.opensource.org/"><span style='color:#333333;text-decoration:none;text-underline:none'><img border=0 width=75 height=65 id="_x0000_i1026" src="files/opensource_logo.png"></span></a><o:p></o:p></span></p> </td> <td width=1145 valign=top style='width:687.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt'> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:#333333'><img border=0 width=534 height=129 id="_x0000_i1027" src="files/opal_logo.jpg"><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:"Book Antiqua";mso-bidi-font-family:Arial;color:black'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-size:22.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>Documentation<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="manual.html">OPAL Manual</a>: a short, high-level overview of the major components and how they work together.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial1.html">Tutorial 1</a>: Simulators, Solids, and Shapes<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial2.html">Tutorial 2</a>: Joints<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial3.html">Tutorial 3</a>: Motors<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial4.html">Tutorial 4</a>: Sensors<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial5.html">Tutorial 5</a>: Using Data Objects<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="tutorial6.html">Tutorial 6</a>: OPAL XML Saving and Loading<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";color:black'><a href="api/index.html">API Documentation</a>: a detailed description of everything in OPAL.</span><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Book Antiqua";mso-bidi-font-family: Arial;color:black'><o:p> </o:p></span></p> </td> </tr> </table> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:10.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:#333333'><o:p> </o:p></span></p> <p class=MsoNormal align=center style='margin-bottom:12.0pt;text-align:center'><span style='font-size:8.0pt;font-family:"Book Antiqua";mso-bidi-font-family:Arial; color:black'>OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter<o:p></o:p></span></p> </div> </body> </html> --- NEW FILE: manual.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="manual_files/filelist.xml"> <link rel=Edit-Time-Data href="manual_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OPAL: Open Physics Abstraction Layer</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Tyler Streeter</o:Author> <o:LastAuthor>Tyler Streeter</o:LastAuthor> <o:Revision>80</o:Revision> <o:TotalTime>78</o:TotalTime> <o:Created>2004-06-05T15:20:00Z</o:Created> <o:LastSaved>2005-02-25T19:49:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>33</o:Words> <o:Characters>193</o:Characters> <o:Company>none</o:Company> <o:Lines>1</o:Lines> <o:Paragraphs>1</o:Paragraphs> <o:CharactersWithSpaces>225</o:CharactersWithSpaces> <o:Version>10.6714</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>BestFit</w:Zoom> <w:SpellingState>Clean</w:SpellingState> <w:GrammarState>Clean</w:GrammarState> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; color:white;} a:link, span.MsoHyperlink {color:#3366FF; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:#000066; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:wi... [truncated message content] |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 19:56:27
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23318/files Added Files: opal_logo.jpg opensource_logo.png sf_logo.png Log Message: importing website into new module --- NEW FILE: opal_logo.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: opensource_logo.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: sf_logo.png --- (This appears to be a binary file; contents omitted.) |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 19:56:27
|
Update of /cvsroot/opal/web/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23318/api Added Files: Doxyfile Log Message: importing website into new module --- NEW FILE: Doxyfile --- # Doxyfile 1.4.1 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = OPAL PROJECT_NUMBER = 0.3.0 OUTPUT_DIRECTORY = "C:/Documents and Settings/Tyler/Desktop/doc" CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = YES BRIEF_MEMBER_DESC = NO REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = YES STRIP_FROM_PATH = "C:/Documents and Settings/Tyler/" STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = YES EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = NO FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = "C:/Documents and Settings/Tyler/Desktop/opal/src" FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.dox RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = "C:/Documents and Settings/Tyler/Desktop/doc" LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = "C:/Documents and Settings/Tyler/Desktop/doc" COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 19:55:22
|
Update of /cvsroot/opal/web/files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23131/files Log Message: Directory /cvsroot/opal/web/files added to the repository |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 19:54:46
|
Update of /cvsroot/opal/web/api In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23001/api Log Message: Directory /cvsroot/opal/web/api added to the repository |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 16:43:31
|
Update of /cvsroot/opal/opal/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28785/src Modified Files: Blueprint.cpp Blueprint.h BlueprintManager.cpp BlueprintManager.h Simulator.cpp Log Message: fixed Blueprint add functions to take pointers instead of const references; this is necessary because we need to add inherited object types to the Blueprint Index: Blueprint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Blueprint.cpp 25 Feb 2005 06:40:26 -0000 1.14 --- Blueprint.cpp 25 Feb 2005 16:43:19 -0000 1.15 *************** *** 30,33 **** --- 30,38 ---- #include "JointData.h" #include "MotorData.h" + #include "AttractorMotorData.h" + #include "GearedMotorData.h" + #include "ServoMotorData.h" + #include "SpringMotorData.h" + #include "ThrusterMotorData.h" #include "SensorData.h" *************** *** 65,128 **** } ! void Blueprint::addSolid(const SolidData& data) { ! if (solidExists(data.name)) { Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " ! << data.name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! SolidData* newData = new SolidData(data); mSolidList.push_back(newData); } } ! void Blueprint::addJoint(const JointData& data) { ! if (jointExists(data.name)) { Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " ! << data.name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! JointData* newData = new JointData(data); mJointList.push_back(newData); } } ! void Blueprint::addMotor(const MotorData& data) { ! if (motorExists(data.name)) { Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " ! << data.name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! MotorData* newData = new MotorData(data); mMotorList.push_back(newData); } } ! void Blueprint::addSensor(const SensorData& data) { ! if (sensorExists(data.name)) { Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " ! << data.name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! SensorData* newData = new SensorData(data); ! mSensorList.push_back(newData); } } bool Blueprint::solidExists(const std::string& name) { --- 70,214 ---- } ! void Blueprint::addSolid(SolidData* data) { ! if (solidExists(data->name)) { Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " ! << data->name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! SolidData* newData = new SolidData(*data); mSolidList.push_back(newData); } } ! void Blueprint::addJoint(JointData* data) { ! if (jointExists(data->name)) { Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " ! << data->name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! JointData* newData = new JointData(*data); mJointList.push_back(newData); } } ! void Blueprint::addMotor(MotorData* data) { ! if (motorExists(data->name)) { Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " ! << data->name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! MotorData* newData = NULL; ! ! // Allocate the right type of Motor. ! switch(data->getType()) ! { ! case ATTRACTOR_MOTOR: ! newData = ! new AttractorMotorData(*((AttractorMotorData*)data)); ! break; ! case GEARED_MOTOR: ! newData = ! new GearedMotorData(*((GearedMotorData*)data)); ! break; ! case SERVO_MOTOR: ! newData = ! new ServoMotorData(*((ServoMotorData*)data)); ! break; ! case SPRING_MOTOR: ! newData = ! new SpringMotorData(*((SpringMotorData*)data)); ! break; ! case THRUSTER_MOTOR: ! newData = ! new ThrusterMotorData(*((ThrusterMotorData*)data)); ! break; ! default: ! assert(false); ! } ! mMotorList.push_back(newData); } } ! void Blueprint::addSensor(SensorData* data) { ! if (sensorExists(data->name)) { Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " ! << data->name << " already exists in this Blueprint. \ Ignoring the new one." << std::endl; } else { ! // TODO: implement this when we have some Sensors available. ! //SensorData* newData = NULL; ! ! //// Allocate the right type of Sensor. ! //switch(data->getType()) ! //{ ! // case VELOCITY_SENSOR: ! // newData = ! // new VelocitySensorData(*((VelocitySensorData*)data)); ! // break; ! // default: ! // assert(false); ! //} ! ! //mSensorList.push_back(newData); } } + int Blueprint::getNumSolids()const + { + return (int)(mSolidList.size()); + } + + int Blueprint::getNumJoints()const + { + return (int)(mJointList.size()); + } + + int Blueprint::getNumMotors()const + { + return (int)(mMotorList.size()); + } + + int Blueprint::getNumSensors()const + { + return (int)(mSensorList.size()); + } + + SolidData* Blueprint::getSolidData(unsigned int i)const + { + return mSolidList.at(i); + } + + JointData* Blueprint::getJointData(unsigned int i)const + { + return mJointList.at(i); + } + + MotorData* Blueprint::getMotorData(unsigned int i)const + { + return mMotorList.at(i); + } + + SensorData* Blueprint::getSensorData(unsigned int i)const + { + return mSensorList.at(i); + } + bool Blueprint::solidExists(const std::string& name) { Index: Simulator.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Simulator.cpp,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** Simulator.cpp 25 Feb 2005 06:40:26 -0000 1.36 --- Simulator.cpp 25 Feb 2005 16:43:20 -0000 1.37 *************** *** 237,414 **** BlueprintInstance& instance, const Blueprint& bp) { ! // NamedObjectCollection coll; - // // create all solids in the blueprint; add name and pointer to - // // collection - // std::map<std::string, SolidDescription> solidMap = bp.getSolidMap(); - // std::map<std::string, SolidDescription>::iterator solidIter; - // for (solidIter = solidMap.begin(); solidIter != solidMap.end(); - // ++solidIter) - // { - // // Just use the default parent space for now; if it should be - // // in a different space, it will get handled later this - // // function. - // SolidData newSolid; ! // newSolid.solidPtr = createSolid(); ! // newSolid.solidPtr->setTransform((*solidIter).second.transform); ! // newSolid.solidPtr->setStatic((*solidIter).second.isStatic); ! // newSolid.solidPtr->setLinearDamping( ! // (*solidIter).second.linearDamping); ! // newSolid.solidPtr->setAngularDamping( ! // (*solidIter).second.angularDamping); ! // // add user properties to this solid ! // for (unsigned int i=0; ! // i<(*solidIter).second.userProperties.size(); ++i) ! // { ! // newSolid.userProperties[ ! // (*solidIter).second.userProperties[i].name] = ! // (*solidIter).second.userProperties[i].value; ! // } ! // // add shapes to this solid ! // std::vector<ShapeDescription>::iterator shapeIter; ! // for (shapeIter = (*solidIter).second.shapeList.begin(); ! // shapeIter != (*solidIter).second.shapeList.end(); ++shapeIter) ! // { ! // real* dim = (*shapeIter).dimensions; ! // switch((*shapeIter).type) ! // { ! // case BOX_SHAPE: ! // newSolid.solidPtr->addBox(Vec3r(dim[0], dim[1], ! // dim[2]), (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case SPHERE_SHAPE: ! // newSolid.solidPtr->addSphere(dim[0], ! // (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case CAPSULE_SHAPE: ! // newSolid.solidPtr->addCapsule(dim[0], dim[1], ! // (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case PLANE_SHAPE: ! // { ! // //Point3r p(dim[0], dim[1], dim[2]); ! // //Vec3r normal(dim[3], dim[4], dim[5]); ! // //newSolid.solidPtr->addPlane(p, normal, (*shapeIter).material); ! // newSolid.solidPtr->addPlane(dim, ! // (*shapeIter).material); ! // break; ! // } ! // case RAY_SHAPE: ! // newSolid.solidPtr->addRay(Point3r(dim[0], dim[1], ! // dim[2]), Vec3r(dim[3], dim[4], dim[5]), ! // dim[6], (*shapeIter).offset, ! // (*shapeIter).material); ! // break; ! // // TODO: add MESH_SHAPE type ! // default: ! // assert(false); ! // } ! // } ! // ! // coll.solidMap[(*solidIter).second.name] = newSolid; ! // } ! // // create all joints in the blueprint; add name and pointer to ! // // collection ! // std::map<std::string, JointData> jointMap = bp.getJointMap(); ! // std::map<std::string, JointData>::iterator jointIter; ! // for (jointIter = jointMap.begin(); jointIter != jointMap.end(); ! // ++jointIter) ! // { ! // Solid* solid0 = coll.getSolid( ! // (*jointIter).second.solid0Name).solidPtr; ! // Solid* solid1 = coll.getSolid( ! // (*jointIter).second.solid1Name).solidPtr; ! // // if joint refers to non-existant solids, don't create the joint ! // if (NULL == solid0 || NULL == solid1) ! // { ! // std::cout << "Error in opal::Simulator::instantiateBlueprint: \ ! // Joint " << (*jointIter).second.name << " refers \ ! // to a nonexistant Solid" << std::endl; ! // } ! // else ! // { ! // Joint* newJoint = NULL; ! // Point3r anchor = (*jointIter).second.anchor; ! // Vec3r axis0 = (*jointIter).second.axis0; ! // Vec3r axis1 = (*jointIter).second.axis1; ! // Vec3r axis2 = (*jointIter).second.axis2; ! // // TODO: finish this... ! // switch((*jointIter).second.type) ! // { ! // case HINGE_JOINT: ! // newJoint = createJoint(); ! // newJoint->init(HINGE_JOINT, solid0, solid1, anchor, ! // axis0); ! // break; ! // case UNIVERSAL_JOINT: ! // break; ! // case BALL_JOINT: ! // break; ! // case SLIDER_JOINT: ! // break; ! // case HINGE_2_JOINT: ! // break; ! // case FIXED_JOINT: ! // break; ! // default: ! // assert(false); ! // } ! // if ((*jointIter).second.axis0LimitsEnabled) ! // { ! // newJoint->setLimits(0, (*jointIter).second.lowLimit0, ! // (*jointIter).second.lowLimit0); ! // if ((*jointIter).second.axis1LimitsEnabled) ! // { ! // newJoint->setLimits(1, (*jointIter).second.lowLimit1, ! // (*jointIter).second.lowLimit1); ! // if ((*jointIter).second.axis2LimitsEnabled) ! // { ! // newJoint->setLimits(2, (*jointIter).second.lowLimit2, ! // (*jointIter).second.lowLimit2); ! // } ! // } ! // } ! // //newJoint->setDampingConstant((*jointIter).second.kd); ! // //newJoint->setSpringConstant((*jointIter).second.ks); ! // newJoint->setBreakParams((*jointIter).second.breakMode, ! // (*jointIter).second.breakThresh, ! // (*jointIter).second.accumThresh); ! // coll.jointMap[(*jointIter).second.name] = newJoint; ! // } ! // } ! // // create spaces and add solids to them ! // std::vector<SpaceDescription> spaceList = bp.getSpaceList(); ! // std::vector<SpaceDescription>::iterator spaceIter; ! // for (spaceIter = spaceList.begin(); spaceIter != spaceList.end(); ! // ++spaceIter) ! // { ! // Space* newSpace = createSpace(); ! // // for each space, loop over its list of solids ! // std::vector<std::string>::iterator nameIter; ! // for (nameIter = (*spaceIter).solidNameList.begin(); ! // nameIter != (*spaceIter).solidNameList.end(); ++nameIter) ! // { ! // Solid* solid = coll.getSolid(*nameIter).solidPtr; ! // solid->setSpace(newSpace); ! // } ! // } ! // return coll; } --- 237,418 ---- BlueprintInstance& instance, const Blueprint& bp) { ! // Create all solids in the Blueprint. If names exist, add the ! // names and poitners to the BlueprintInstance. ! for (int i=0; i<bp.getNumSolids(); ++i) ! { ! ! } ! //std::map<std::string, SolidDescription> solidMap = bp.getSolidMap(); ! //std::map<std::string, SolidDescription>::iterator solidIter; ! //for (solidIter = solidMap.begin(); solidIter != solidMap.end(); ! // ++solidIter) ! //{ ! // // Just use the default parent space for now; if it should be ! // // in a different space, it will get handled later this ! // // function. ! // SolidData newSolid; ! // newSolid.solidPtr = createSolid(); ! // newSolid.solidPtr->setTransform((*solidIter).second.transform); ! // newSolid.solidPtr->setStatic((*solidIter).second.isStatic); ! // newSolid.solidPtr->setLinearDamping( ! // (*solidIter).second.linearDamping); ! // newSolid.solidPtr->setAngularDamping( ! // (*solidIter).second.angularDamping); ! // // add user properties to this solid ! // for (unsigned int i=0; ! // i<(*solidIter).second.userProperties.size(); ++i) ! // { ! // newSolid.userProperties[ ! // (*solidIter).second.userProperties[i].name] = ! // (*solidIter).second.userProperties[i].value; ! // } ! // // add shapes to this solid ! // std::vector<ShapeDescription>::iterator shapeIter; ! // for (shapeIter = (*solidIter).second.shapeList.begin(); ! // shapeIter != (*solidIter).second.shapeList.end(); ++shapeIter) ! // { ! // real* dim = (*shapeIter).dimensions; ! // switch((*shapeIter).type) ! // { ! // case BOX_SHAPE: ! // newSolid.solidPtr->addBox(Vec3r(dim[0], dim[1], ! // dim[2]), (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case SPHERE_SHAPE: ! // newSolid.solidPtr->addSphere(dim[0], ! // (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case CAPSULE_SHAPE: ! // newSolid.solidPtr->addCapsule(dim[0], dim[1], ! // (*shapeIter).offset, (*shapeIter).material); ! // break; ! // case PLANE_SHAPE: ! // { ! // //Point3r p(dim[0], dim[1], dim[2]); ! // //Vec3r normal(dim[3], dim[4], dim[5]); ! // //newSolid.solidPtr->addPlane(p, normal, (*shapeIter).material); ! // newSolid.solidPtr->addPlane(dim, ! // (*shapeIter).material); ! // break; ! // } ! // case RAY_SHAPE: ! // newSolid.solidPtr->addRay(Point3r(dim[0], dim[1], ! // dim[2]), Vec3r(dim[3], dim[4], dim[5]), ! // dim[6], (*shapeIter).offset, ! // (*shapeIter).material); ! // break; ! // // TODO: add MESH_SHAPE type ! // default: ! // assert(false); ! // } ! // } ! // ! // coll.solidMap[(*solidIter).second.name] = newSolid; ! //} ! //// create all joints in the blueprint; add name and pointer to ! //// collection ! //std::map<std::string, JointData> jointMap = bp.getJointMap(); ! //std::map<std::string, JointData>::iterator jointIter; ! //for (jointIter = jointMap.begin(); jointIter != jointMap.end(); ! // ++jointIter) ! //{ ! // Solid* solid0 = coll.getSolid( ! // (*jointIter).second.solid0Name).solidPtr; ! // Solid* solid1 = coll.getSolid( ! // (*jointIter).second.solid1Name).solidPtr; ! // // if joint refers to non-existant solids, don't create the joint ! // if (NULL == solid0 || NULL == solid1) ! // { ! // std::cout << "Error in opal::Simulator::instantiateBlueprint: \ ! // Joint " << (*jointIter).second.name << " refers \ ! // to a nonexistant Solid" << std::endl; ! // } ! // else ! // { ! // Joint* newJoint = NULL; ! // Point3r anchor = (*jointIter).second.anchor; ! // Vec3r axis0 = (*jointIter).second.axis0; ! // Vec3r axis1 = (*jointIter).second.axis1; ! // Vec3r axis2 = (*jointIter).second.axis2; ! // // TODO: finish this... ! // switch((*jointIter).second.type) ! // { ! // case HINGE_JOINT: ! // newJoint = createJoint(); ! // newJoint->init(HINGE_JOINT, solid0, solid1, anchor, ! // axis0); ! // break; ! // case UNIVERSAL_JOINT: ! // break; ! // case BALL_JOINT: ! // break; ! // case SLIDER_JOINT: ! // break; ! // case HINGE_2_JOINT: ! // break; ! // case FIXED_JOINT: ! // break; ! // default: ! // assert(false); ! // } ! // if ((*jointIter).second.axis0LimitsEnabled) ! // { ! // newJoint->setLimits(0, (*jointIter).second.lowLimit0, ! // (*jointIter).second.lowLimit0); ! // if ((*jointIter).second.axis1LimitsEnabled) ! // { ! // newJoint->setLimits(1, (*jointIter).second.lowLimit1, ! // (*jointIter).second.lowLimit1); ! // if ((*jointIter).second.axis2LimitsEnabled) ! // { ! // newJoint->setLimits(2, (*jointIter).second.lowLimit2, ! // (*jointIter).second.lowLimit2); ! // } ! // } ! // } ! // //newJoint->setDampingConstant((*jointIter).second.kd); ! // //newJoint->setSpringConstant((*jointIter).second.ks); ! // newJoint->setBreakParams((*jointIter).second.breakMode, ! // (*jointIter).second.breakThresh, ! // (*jointIter).second.accumThresh); ! // coll.jointMap[(*jointIter).second.name] = newJoint; ! // } ! //} ! //// create spaces and add solids to them ! //std::vector<SpaceDescription> spaceList = bp.getSpaceList(); ! //std::vector<SpaceDescription>::iterator spaceIter; ! //for (spaceIter = spaceList.begin(); spaceIter != spaceList.end(); ! // ++spaceIter) ! //{ ! // Space* newSpace = createSpace(); ! // // for each space, loop over its list of solids ! // std::vector<std::string>::iterator nameIter; ! // for (nameIter = (*spaceIter).solidNameList.begin(); ! // nameIter != (*spaceIter).solidNameList.end(); ++nameIter) ! // { ! // Solid* solid = coll.getSolid(*nameIter).solidPtr; ! // solid->setSpace(newSpace); ! // } ! //} ! ! //return coll; } Index: BlueprintManager.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintManager.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** BlueprintManager.cpp 25 Feb 2005 06:40:26 -0000 1.26 --- BlueprintManager.cpp 25 Feb 2005 16:43:19 -0000 1.27 *************** *** 91,95 **** if (data) { ! bp.addSolid(*data); } } --- 91,98 ---- if (data) { ! // This function makes a deep copy, so we need to destroy ! // the data. ! bp.addSolid(data); ! delete data; } } *************** *** 103,107 **** if (data) { ! bp.addJoint(*data); } } --- 106,113 ---- if (data) { ! // This function makes a deep copy, so we need to destroy ! // the data. ! bp.addJoint(data); ! delete data; } } *************** *** 115,119 **** if (data) { ! bp.addMotor(*data); } } --- 121,128 ---- if (data) { ! // This function makes a deep copy, so we need to destroy ! // the data. ! bp.addMotor(data); ! delete data; } } *************** *** 127,131 **** if (data) { ! bp.addSensor(*data); } } --- 136,143 ---- if (data) { ! // This function makes a deep copy, so we need to destroy ! // the data. ! bp.addSensor(data); ! delete data; } } Index: Blueprint.h =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** Blueprint.h 25 Feb 2005 06:40:26 -0000 1.22 --- Blueprint.h 25 Feb 2005 16:43:19 -0000 1.23 *************** *** 41,45 **** /// Blueprints are useful for saving and loading systems of Solids, ! /// Joints, Motors, and/or Sensors. They are not guaranteed to yield /// perfect repeatability after a save/restore sequence. class Blueprint --- 41,47 ---- /// Blueprints are useful for saving and loading systems of Solids, ! /// Joints, Motors, and/or Sensors. They are created by OPAL when ! /// an OPAL XML file is loaded. They can also be created by users ! /// and saved to an OPAL XML file. They are not guaranteed to yield /// perfect repeatability after a save/restore sequence. class Blueprint *************** *** 52,68 **** /// Adds a new SolidData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSolid(const SolidData& data); /// Adds a new JointData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addJoint(const JointData& data); /// Adds a new MotorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addMotor(const MotorData& data); /// Adds a new SensorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSensor(const SensorData& data); /// Returns the index of the given Solid name in the Blueprint's --- 54,94 ---- /// Adds a new SolidData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSolid(SolidData* data); /// Adds a new JointData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addJoint(JointData* data); /// Adds a new MotorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addMotor(MotorData* data); /// Adds a new SensorData object to the Blueprint. Makes a /// deep copy of the given data. ! virtual void OPAL_CALL addSensor(SensorData* data); ! ! /// Returns the number of SolidData objects. ! virtual int OPAL_CALL getNumSolids()const; ! ! /// Returns the number of JointData objects. ! virtual int OPAL_CALL getNumJoints()const; ! ! /// Returns the number of MotorData objects. ! virtual int OPAL_CALL getNumMotors()const; ! ! /// Returns the number of SensorData objects. ! virtual int OPAL_CALL getNumSensors()const; ! ! /// Returns a pointer to the SolidData at the given index. ! virtual SolidData* OPAL_CALL getSolidData(unsigned int i)const; ! ! /// Returns a pointer to the JointData at the given index. ! virtual JointData* OPAL_CALL getJointData(unsigned int i)const; ! ! /// Returns a pointer to the MotorData at the given index. ! virtual MotorData* OPAL_CALL getMotorData(unsigned int i)const; ! ! /// Returns a pointer to the SensorData at the given index. ! virtual SensorData* OPAL_CALL getSensorData(unsigned int i)const; /// Returns the index of the given Solid name in the Blueprint's Index: BlueprintManager.h =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintManager.h,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** BlueprintManager.h 25 Feb 2005 06:40:26 -0000 1.15 --- BlueprintManager.h 25 Feb 2005 16:43:20 -0000 1.16 *************** *** 56,60 **** /// a Joint refers to two Solids; if either of those Solids /// are not in the file, the Joint will be ignored. For a ! /// particular element, all attributes are always required. virtual void OPAL_CALL loadFile(Blueprint& bp, const std::string& filename); --- 56,61 ---- /// a Joint refers to two Solids; if either of those Solids /// are not in the file, the Joint will be ignored. For a ! /// particular element, all attributes are always required. ! /// All object names, if used, must be unique. virtual void OPAL_CALL loadFile(Blueprint& bp, const std::string& filename); |
|
From: tylerstreeter <tyl...@us...> - 2005-02-25 06:40:52
|
Update of /cvsroot/opal/opal In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5241 Modified Files: SConstruct todo.txt Log Message: updated XML parsing to reflect new object creation method Index: SConstruct =================================================================== RCS file: /cvsroot/opal/opal/SConstruct,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SConstruct 11 Feb 2005 07:28:54 -0000 1.5 --- SConstruct 25 Feb 2005 06:40:26 -0000 1.6 *************** *** 30,36 **** env.Replace(CXX = 'CC') env.Append( ! CXXFLAGS = ['-ansi', '-LANG:std', '-n32'], ! CPPPATH = string.split(os.environ['CPLUS_INCLUDE_PATH'], ':'), ! LIBPATH = string.split(os.environ['LIBRARY_PATH'], ':')) if env['debug'] == True: env.Append(CXXFLAGS = ['-O0']) --- 30,36 ---- env.Replace(CXX = 'CC') env.Append( ! CXXFLAGS = ['-ansi', '-LANG:std', '-n32']) ! #CPPPATH = string.split(os.environ['CPLUS_INCLUDE_PATH'], ':'), ! #LIBPATH = string.split(os.environ['LIBRARY_PATH'], ':')) if env['debug'] == True: env.Append(CXXFLAGS = ['-O0']) Index: todo.txt =================================================================== RCS file: /cvsroot/opal/opal/todo.txt,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** todo.txt 23 Feb 2005 06:35:46 -0000 1.44 --- todo.txt 25 Feb 2005 06:40:26 -0000 1.45 *************** *** 2,31 **** ================= ! Joints, Solids, etc. -> JointData, SolidData, etc. -> Blueprint -> saveToXML(Blueprint, filename) ... loadFromXML(filename) -> Blueprint -> JointData, SolidData, etc. -> Joints, Solids, etc. * look at scons dylib-building problem on os x ! * fix Blueprint, BlueprintManager access to DLL ! ! * be consistent with default parameter settings ! - applies to Solids, Joints, Motors, Sensors ! - three main components: ! 1.) actual default number stored in Defines.h ! 2.) Simulator maintains default values ! - sets its initial default values based value in Defines.h ! - each has a get/set ! 3.) the object (e.g. Solid) maintains a value for the parameter ! - set by the Simulator on object creation ! - each has a get/set ! ! * all modes with multiple options (e.g. spring motor, accel sensor) should take bit flags * XML loader, manager - update parsing - update instantiation functions ! - maybe rename BlueprintManager to ResourceManager ! - holds a cache of BPs ! - BPs can be added through XML files or manually ! - BPs can be requested by name/ID * fix naming descrepancies --- 2,20 ---- ================= ! * make OPAL XML spec/sample file that includes everything; put on website * look at scons dylib-building problem on os x ! * fix memory allocation across dll boundary ! - Blueprint ! - BlueprintInstance ! - volume collision check results * XML loader, manager - update parsing - update instantiation functions ! ! * should spaces be stored in xml/blueprints? ! - probably not * fix naming descrepancies *************** *** 33,39 **** --- 22,31 ---- - make it more unified + * search and replace existing assert() calls and std::cout calls + * certain function calls (e.g. setStatic) during collision events crash the system - solution: create an event queue and call the functions at a safe time - per step, or per frame? + - replace 'garbage' system with delayed destroy events * separate Solid options for sleeping (setSleeping(true/false), setSleepingEnabled(true/false)) *************** *** 60,69 **** - post either zipped docs or hyperlinked pdf of docs - * setup a debug output/logging system - - different warning/error levels - - assert function for fatal errors; print error message - - print to std output and/or log file - - search and replace existing assert() calls and std::cout calls - * implement sensors - RayCastSensor (i.e. "PSD (position sensitive detector)" or "rangefinder"): measures distance from sensor to first intersection (attach to a solid [be sure to ignore collisions with the attached solid] or nothing) --- 52,55 ---- *************** *** 88,91 **** --- 74,79 ---- - there may be a problem when you have a tiny object between two massive objects; one massive object should affect the other but can't + * should all modes with multiple options (e.g. spring motor, accel sensor) take bit flags? + Build System ============ *************** *** 120,124 **** - Joints -> Solids - Motors -> Joints, Solids ! - Sensors -> Joints Solids * Put BlueprintManager stuff into the Simulator itself and remove BlueprintManager? --- 108,112 ---- - Joints -> Solids - Motors -> Joints, Solids ! - Sensors -> Joints, Solids * Put BlueprintManager stuff into the Simulator itself and remove BlueprintManager? *************** *** 170,173 **** --- 158,163 ---- - implement (in ODE) + * make a COLLADA importer/exporter + * move headers into a separate dir *************** *** 243,250 **** - post on website - * objects with init functions - - call init immediately after construction, else undefined behavior - - objects enabled when init is called - * specific object type properties - memory management: user managed vs. OPAL managed --- 233,236 ---- *************** *** 286,309 **** 2.) have the simulator create the object by passing in a blueprint - - ------------------------------------ - - Quick tutorial (outdated): - - 1. #include <opal/opal.h> - - 2. Link your project with the compiled OPAL library (e.g. opal-ode_d.lib for the ODE debug version). - - 3. opal::Simulator* mySimulator = opal::createSimulator( opal::Vec3r(0.0, -9.81, 0.0) ); - - 4. opal::Solid* mySolid = mySimulator->createSolid( false ); //createSolid takes a "isStatic" parameter - - 5. mySolid->addBox( opal::Vec3r(1.0, 1.0, 1.0) ); //pass in box dimensions - - 6. mySolid->addGlobalForce( opal::Vec3r(0.5, 0.6, 0.4), 0.5 ); //vector is force direction (global coordinates in this case), last param is the duration of the force in seconds - - 7. Every frame call mySimulator->simulate( dt ) where dt is the elapsed time since the last frame. - - 8. Get the solid's transform matrix (mySolid->getTransform()) every frame so you know where to draw it. - - 9. When you're finished, delete mySimulator. \ No newline at end of file --- 272,273 ---- |
Update of /cvsroot/opal/opal/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5241/src Modified Files: AttractorMotor.cpp AttractorMotor.h AttractorMotorData.h Blueprint.cpp Blueprint.h BlueprintManager.cpp BlueprintManager.h Defines.h GearedMotor.cpp GearedMotor.h GearedMotorData.h Joint.cpp Joint.h JointData.h Motor.cpp Motor.h MotorData.h SConscript Sensor.cpp Sensor.h SensorData.h ServoMotor.cpp ServoMotor.h ServoMotorData.h Simulator.cpp Simulator.h Solid.cpp Solid.h SolidData.h SpringMotor.cpp SpringMotor.h SpringMotorData.h ThrusterMotor.cpp ThrusterMotor.h ThrusterMotorData.h opal.h Added Files: BlueprintInstance.cpp BlueprintInstance.h Logger.cpp Logger.h SolidData.cpp Log Message: updated XML parsing to reflect new object creation method Index: Sensor.h =================================================================== RCS file: /cvsroot/opal/opal/src/Sensor.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Sensor.h 21 Feb 2005 15:54:39 -0000 1.6 --- Sensor.h 25 Feb 2005 06:40:26 -0000 1.7 *************** *** 45,54 **** virtual ~Sensor(); - /// Returns true if the Sensor is enabled. - virtual bool OPAL_CALL isEnabled()const; - /// Sets whether the Sensor can update its measurements. If the /// Sensor has not yet been initialized, this will have no effect. ! virtual void OPAL_CALL setEnabled(bool e); /// Set the user data pointer to some external data. The user data --- 45,54 ---- virtual ~Sensor(); /// Sets whether the Sensor can update its measurements. If the /// Sensor has not yet been initialized, this will have no effect. ! virtual void OPAL_CALL setEnabled(bool e) = 0; ! ! /// Returns true if the Sensor is enabled. ! virtual bool OPAL_CALL isEnabled()const = 0; /// Set the user data pointer to some external data. The user data *************** *** 60,63 **** --- 60,69 ---- virtual void* OPAL_CALL getUserData(); + /// Sets the Sensor's name. + virtual void OPAL_CALL setName(const std::string& name) = 0; + + /// Returns the Sensor's name. + virtual const std::string& OPAL_CALL getName()const = 0; + /// Called regularly to update the Sensor. This does nothing if the /// Sensor is disabled. *************** *** 69,73 **** protected: /// True if the Sensor is enabled. ! bool mEnabled; /// Pointer to user data. This is totally user-managed (i.e. OPAL --- 75,79 ---- protected: /// True if the Sensor is enabled. ! //bool mEnabled; /// Pointer to user data. This is totally user-managed (i.e. OPAL Index: BlueprintManager.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintManager.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** BlueprintManager.cpp 23 Feb 2005 03:58:23 -0000 1.25 --- BlueprintManager.cpp 25 Feb 2005 06:40:26 -0000 1.26 *************** *** 27,30 **** --- 27,37 ---- #include "BlueprintManager.h" + #include "BoxShapeData.h" + #include "SphereShapeData.h" + #include "CapsuleShapeData.h" + #include "PlaneShapeData.h" + #include "RayShapeData.h" + #include "MotorData.h" + #include "SensorData.h" [...1616 lines suppressed...] #endif } - - Blueprint* BlueprintManager::getBlueprint(const std::string& name) - { - if (!blueprintExists(name)) - { - std::cout << "Error in opal::BlueprintManager::getBlueprint: \ - Invalid blueprint requested" - << std::endl; - return NULL; - } - else - { - return mBlueprintMap[name]; - } - } } } --- 944,947 ---- Index: opal.h =================================================================== RCS file: /cvsroot/opal/opal/src/opal.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** opal.h 23 Feb 2005 03:58:23 -0000 1.16 --- opal.h 25 Feb 2005 06:40:26 -0000 1.17 *************** *** 59,62 **** --- 59,73 ---- /// Creates a Simulator. OPAL_EXPORT Simulator* OPAL_CALL createSimulator(); + + /// Loads a Blueprint from an OPAL XML file. + OPAL_EXPORT void OPAL_CALL loadFile(Blueprint& bp, + const std::string& filename); + { + BlueprintManager::instance().loadFile(bp, filename); + } + + /// Saves a Blueprint in an OPAL XML file. + //OPAL_EXPORT void OPAL_CALL saveFile(const Blueprint& bp, + // const std::string& filename); } Index: Joint.h =================================================================== RCS file: /cvsroot/opal/opal/src/Joint.h,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** Joint.h 23 Feb 2005 04:56:49 -0000 1.55 --- Joint.h 25 Feb 2005 06:40:26 -0000 1.56 *************** *** 76,80 **** /// Returns all data describing the Joint. ! virtual const JointData& OPAL_CALL getJointData(); /// Returns the Joint type. --- 76,86 ---- /// Returns all data describing the Joint. ! virtual const JointData& OPAL_CALL getJointData()const; ! ! /// Sets the Joint's name. ! virtual void OPAL_CALL setName(const std::string& name); ! ! /// Returns the Joint's name. ! virtual const std::string& OPAL_CALL getName()const; /// Returns the Joint type. *************** *** 103,107 **** ///// Returns the limits for the given axis. ! //virtual const JointLimits& OPAL_CALL getLimits(int axisNum); /// Sets the Joint's limit angles in degrees. No limits are applied --- 109,113 ---- ///// Returns the limits for the given axis. ! //virtual const JointLimits& OPAL_CALL getLimits(int axisNum)const; /// Sets the Joint's limit angles in degrees. No limits are applied *************** *** 113,121 **** /// Returns the low limit for a given axis (angle in degrees for /// rotational Joints, distance for linear Joints). ! virtual real OPAL_CALL getLowLimit(int axisNum); /// Returns the high limit for a given axis (angle in degrees for /// rotational Joints, distance for linear Joints). ! virtual real OPAL_CALL getHighLimit(int axisNum); /// Sets the hardness for the given axis' limits. Hardness --- 119,127 ---- /// Returns the low limit for a given axis (angle in degrees for /// rotational Joints, distance for linear Joints). ! virtual real OPAL_CALL getLowLimit(int axisNum)const; /// Returns the high limit for a given axis (angle in degrees for /// rotational Joints, distance for linear Joints). ! virtual real OPAL_CALL getHighLimit(int axisNum)const; /// Sets the hardness for the given axis' limits. Hardness *************** *** 126,130 **** /// Returns the hardness for the given axis' limits. ! virtual real OPAL_CALL getLimitHardness(int axisNum); /// Sets the bounciness for the given axis' limits. Bounciness --- 132,136 ---- /// Returns the hardness for the given axis' limits. ! virtual real OPAL_CALL getLimitHardness(int axisNum)const; /// Sets the bounciness for the given axis' limits. Bounciness *************** *** 135,139 **** /// Returns the bounciness for the given axis' limits. ! virtual real OPAL_CALL getLimitBounciness(int axisNum); /// Returns the current state (angle in degrees for rotational --- 141,145 ---- /// Returns the bounciness for the given axis' limits. ! virtual real OPAL_CALL getLimitBounciness(int axisNum)const; /// Returns the current state (angle in degrees for rotational *************** *** 168,172 **** /// Returns the anchor point. ! virtual const Point3r& OPAL_CALL getAnchor(); /// Returns the number of axes used by this Joint. --- 174,178 ---- /// Returns the anchor point. ! virtual const Point3r& OPAL_CALL getAnchor()const; /// Returns the number of axes used by this Joint. Index: SConscript =================================================================== RCS file: /cvsroot/opal/opal/src/SConscript,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** SConscript 22 Feb 2005 04:28:11 -0000 1.9 --- SConscript 25 Feb 2005 06:40:26 -0000 1.10 *************** *** 5,8 **** --- 5,9 ---- headers = Split(""" AttractorMotor.h + AttractorMotorData.h Blueprint.h BlueprintManager.h *************** *** 12,19 **** --- 13,24 ---- EventHandler.h GearedMotor.h + GearedMotorData.h Joint.h + JointData.h + Logger.h Matrix44r.h MeshShapeData.h Motor.h + MotorData.h opal.h OpalMath.h *************** *** 25,29 **** --- 30,36 ---- RayShapeData.h Sensor.h + SensorData.h ServoMotor.h + ServoMotorData.h ShapeData.h Simulator.h *************** *** 34,38 **** --- 41,47 ---- SphereShapeData.h SpringMotor.h + SpringMotorData.h ThrusterMotor.h + ThrusterMotorData.h Vec3r.h """) *************** *** 45,48 **** --- 54,58 ---- GearedMotor.cpp Joint.cpp + Logger.cpp Motor.cpp Sensor.cpp *************** *** 50,53 **** --- 60,64 ---- Simulator.cpp Solid.cpp + SolidData.cpp SpringMotor.cpp ThrusterMotor.cpp --- NEW FILE: SolidData.cpp --- /************************************************************************* * * * Open Physics Abstraction Layer * * Copyright (C) 2004-2005 * * Alan Fischer ala...@gm... * * Andres Reinot an...@re... * * Tyler Streeter tyl...@gm... * * All rights reserved. * * Web: opal.sourceforge.net * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of EITHER: * * (1) The GNU Lesser General Public License as published by the Free * * Software Foundation; either version 2.1 of the License, or (at * * your option) any later version. The text of the GNU Lesser * * General Public License is included with this library in the * * file license-LGPL.txt. * * (2) The BSD-style license that is included with this library in * * the file license-BSD.txt. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * * license-LGPL.txt and license-BSD.txt for more details. * * * *************************************************************************/ #include "SolidData.h" #include "BoxShapeData.h" #include "SphereShapeData.h" #include "CapsuleShapeData.h" #include "PlaneShapeData.h" #include "RayShapeData.h" #include "MeshShapeData.h" namespace opal { SolidData::SolidData() { enabled = defaults::solid::enabled; name = ""; sleeping = defaults::solid::sleeping; sleepiness = defaults::solid::sleepiness; isStatic = defaults::solid::isStatic; // Leave the transform as an identity matrix. // "globalLinearVel" is already initialized in its constructor. // "globalAngularVel" is already initialized in its constructor. linearDamping = defaults::linearDamping; angularDamping = defaults::angularDamping; // The Shape list doesn't need to be initialized. } SolidData::SolidData(const SolidData& data) { (*this) = data; } SolidData::~SolidData() { destroyShapes(); } void SolidData::addShape(const ShapeData& data) { ShapeData* newShape = NULL; switch(data.getType()) { case BOX_SHAPE: { newShape = new BoxShapeData((BoxShapeData&)data); break; } case SPHERE_SHAPE: { newShape = new SphereShapeData((SphereShapeData&)data); break; } case CAPSULE_SHAPE: { newShape = new CapsuleShapeData((CapsuleShapeData&)data); break; } case PLANE_SHAPE: { newShape = new PlaneShapeData((PlaneShapeData&)data); break; } case RAY_SHAPE: { newShape = new RayShapeData((RayShapeData&)data); break; } case MESH_SHAPE: { newShape = new MeshShapeData((MeshShapeData&)data); break; } default: assert(false); } mShapes.push_back(newShape); } int SolidData::getNumShapes()const { return (int)(mShapes.size()); } ShapeData* SolidData::getShapeData(unsigned int i)const { return mShapes.at(i); } void SolidData::destroyShapes() { while (!mShapes.empty()) { delete mShapes.back(); mShapes.pop_back(); } } void SolidData::operator=(const SolidData& data) { enabled = data.enabled; name = data.name; sleeping = data.sleeping; sleepiness = data.sleepiness; isStatic = data.isStatic; transform = data.transform; globalLinearVel = data.globalLinearVel; globalAngularVel = data.globalAngularVel; linearDamping = data.linearDamping; angularDamping = data.angularDamping; // First remove the old Shapes. destroyShapes(); // Allocate copies of the new Shapes. for (unsigned int i=0; i<data.mShapes.size(); ++i) { addShape(*(data.mShapes[i])); } } } --- NEW FILE: Logger.h --- #ifndef OPAL_LOGGER_H #define OPAL_LOGGER_H #include <iomanip> #include <stdlib.h> #include <string> #include <ostream> #include <iostream> #include <map> #include <iosfwd> #include <stdexcept> namespace opal { /// This class is used to log any events, errors, or warnings that may /// come up. Calls to this class should replace all cout << statements /// in the form: Logger::stream("myStreamName") << ... /// where myStreamName was registered as a cout stream or file stream /// using the setStream function. class Logger { public: Logger(); ~Logger(); /// Register a new stream for later use. static void setStream(const std::string& name, std::ostream *stream, const std::string& prefix="", char mark='\0'); //static void silenceStream(const std::string& name); //static void unsilenceStream(const std::string& name); static std::ostream &stream(const std::string& name); private: struct Stream { std::ostream *nullStream; std::ostream *stream; bool silent; char mark; std::string prefix; }; static void init(); //static bool mInitCalled; static std::map<std::string, Stream> mStreams; }; } #endif Index: Simulator.h =================================================================== RCS file: /cvsroot/opal/opal/src/Simulator.h,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** Simulator.h 23 Feb 2005 06:35:46 -0000 1.74 --- Simulator.h 25 Feb 2005 06:40:26 -0000 1.75 *************** *** 44,47 **** --- 44,49 ---- namespace opal { + class BlueprintInstance; + /// A data structure containing information about a specific /// intersection from a ray cast. *************** *** 62,107 **** }; - /// Contains maps of string names to object pointers for Solids, Joints, - /// Motors, and Sensors. - struct BlueprintInstance - { - ~BlueprintInstance() - { - solidMap.clear(); - jointMap.clear(); - } - - /// Convenience function for finding a Solid pointer by name. - /// Returns NULL if the pointer is not found. - Solid* getSolid(const std::string& name) - { - if (solidMap.end() == solidMap.find(name)) - { - return NULL; - } - else - { - return solidMap[name]; - } - } - - /// Convenience function for finding a Joint pointer by name. - /// Returns NULL if the pointer is not found. - Joint* getJoint(const std::string& name) - { - if (jointMap.end() == jointMap.find(name)) - { - return NULL; - } - else - { - return jointMap[name]; - } - } - - std::map<std::string, Solid*> solidMap; - std::map<std::string, Joint*> jointMap; - }; - /// A Simulator is an environment that contains simulated objects. /// It performs collision detection and physical simulation. It is --- 64,67 ---- *************** *** 128,140 **** virtual void OPAL_CALL setStepSize(real stepSize); ! //virtual NamedObjectCollection OPAL_CALL instantiateBlueprint( ! // const Blueprint& bp); /// A convenient volume collision check function. TODO: replace /// with a Sensor. TODO: the vector pointer here is bad because /// memory is allocated within the DLL and deallocated on the ! /// user's side ! virtual void OPAL_CALL collide(const Solid* solid, ! std::vector<Solid*>* solids) = 0; /// A convenient ray casting function. TODO: replace with a --- 88,103 ---- virtual void OPAL_CALL setStepSize(real stepSize); ! /// Creates instances of all objects in a Blueprint and fills the ! /// given BlueprintInstance with pointers of the named objects. ! virtual void OPAL_CALL instantiateBlueprint( ! BlueprintInstance& instance, const Blueprint& bp); /// A convenient volume collision check function. TODO: replace /// with a Sensor. TODO: the vector pointer here is bad because /// memory is allocated within the DLL and deallocated on the ! /// user's side; make a VolumeCollisionReport object with an ! /// add function ! //virtual void OPAL_CALL collide(const Solid* solid, ! // std::vector<Solid*>* solids) = 0; /// A convenient ray casting function. TODO: replace with a *************** *** 149,155 **** virtual Vec3r OPAL_CALL getGravity()const = 0; ! virtual void OPAL_CALL setSleepiness(real value); ! virtual real OPAL_CALL getSleepiness()const; /// Sets the accuracy level used by the physics engine's constraint --- 112,118 ---- virtual Vec3r OPAL_CALL getGravity()const = 0; ! //virtual void OPAL_CALL setDefaultSleepiness(real value); ! //virtual real OPAL_CALL getDefaultSleepiness()const; /// Sets the accuracy level used by the physics engine's constraint *************** *** 204,208 **** /// Returns all Solids in the Simulator. ! virtual const std::vector<Solid*>& OPAL_CALL getSolids()const; // JOINTS --- 167,171 ---- /// Returns all Solids in the Simulator. ! //virtual const std::vector<Solid*>& OPAL_CALL getSolids()const; // JOINTS *************** *** 309,313 **** // ranges from 0.0 to 1.0; TODO: make this per-Solid ! real mSleepiness; /// The accuracy level used internally by the physics engine's --- 272,276 ---- // ranges from 0.0 to 1.0; TODO: make this per-Solid ! //real mSleepiness; /// The accuracy level used internally by the physics engine's Index: Sensor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Sensor.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Sensor.cpp 21 Feb 2005 15:54:38 -0000 1.3 --- Sensor.cpp 25 Feb 2005 06:40:26 -0000 1.4 *************** *** 32,36 **** Sensor::Sensor() { ! mEnabled = false; mInitCalled = false; setUserData(NULL); --- 32,37 ---- Sensor::Sensor() { ! // "mData" is initialized in its own constructor. ! //mEnabled = false; mInitCalled = false; setUserData(NULL); *************** *** 41,59 **** } - bool Sensor::isEnabled()const - { - return mEnabled; - } - - void Sensor::setEnabled(bool e) - { - if (!mInitCalled) - { - return; - } - - mEnabled = e; - } - void Sensor::setUserData(void* data) { --- 42,45 ---- Index: GearedMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotor.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** GearedMotor.h 23 Feb 2005 03:58:23 -0000 1.6 --- GearedMotor.h 25 Feb 2005 06:40:26 -0000 1.7 *************** *** 62,66 **** /// Returns all data describing the Motor. ! virtual const GearedMotorData& OPAL_CALL getMotorData(); virtual bool OPAL_CALL isEnabled()const; --- 62,70 ---- /// Returns all data describing the Motor. ! virtual const GearedMotorData& OPAL_CALL getMotorData()const; ! ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; virtual bool OPAL_CALL isEnabled()const; Index: GearedMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotorData.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** GearedMotorData.h 23 Feb 2005 03:58:23 -0000 1.1 --- GearedMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 *************** *** 64,67 **** --- 64,68 ---- mType = data.mType; enabled = data.enabled; + name = data.name; joint = data.joint; jointAxisNum = data.jointAxisNum; Index: BlueprintManager.h =================================================================== RCS file: /cvsroot/opal/opal/src/BlueprintManager.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** BlueprintManager.h 22 Feb 2005 01:25:55 -0000 1.14 --- BlueprintManager.h 25 Feb 2005 06:40:26 -0000 1.15 *************** *** 46,80 **** virtual ~BlueprintManager(); ! //virtual void OPAL_CALL loadFile(const std::string& filename); ! virtual void OPAL_CALL addBlueprint(Blueprint* bp); ! virtual Blueprint* OPAL_CALL getBlueprint( const std::string& filename); ! virtual bool OPAL_CALL blueprintExists(const std::string& name); ! private: ! //SolidData loadSolid(const TiXmlNode* nodePtr, ! // const std::string& filename); ! JointData loadJoint(const TiXmlNode* nodePtr, ! const std::string& filename); ! Matrix44r loadOffset(const TiXmlNode* nodePtr, const std::string& filename); ! //ShapeData loadShape(const TiXmlNode* nodePtr, ! // const std::string& filename); ! // helper function; returns false if the attribute doesn't exist real getAttributeReal(const TiXmlNode* nodePtr, ! const std::string& name); ! // helper function; returns false if the attribute doesn't exist std::string getAttributeString(const TiXmlNode* nodePtr, ! const std::string& name); ! ! std::map<std::string, Blueprint*> mBlueprintMap; }; } --- 46,111 ---- virtual ~BlueprintManager(); ! /// Loads a Blueprint from an OPAL XML file. The file should ! /// contain a single OpalBlueprint element (additional ones ! /// will be ignored). The Blueprint can contain any number ! /// of Solids, Joints, Motors, and Sensors. Most of the ! /// object parameters are optional, in which case the usual, ! /// default values will be used. The only required ! /// parameters are references to other objects (i.e. the ! /// "References" elements in an XML file. For example, ! /// a Joint refers to two Solids; if either of those Solids ! /// are not in the file, the Joint will be ignored. For a ! /// particular element, all attributes are always required. ! virtual void OPAL_CALL loadFile(Blueprint& bp, ! const std::string& filename); ! /// Saves a Blueprint to an OPAL XML file. ! //virtual void OPAL_CALL saveFile(const Blueprint& bp, ! // const std::string& filename); ! private: ! /// Helper function for parsing Solid XML elements. Allocates ! /// and returns a pointer to a new SolidData object. Returns ! /// NULL if the element could not be loaded. ! SolidData* loadSolid(const TiXmlNode* nodePtr, const std::string& filename); ! /// Helper function for parsing Joint XML elements. Allocates ! /// and returns a pointer to a new JointData object. Returns ! /// NULL if the element could not be loaded. ! JointData* loadJoint(const TiXmlNode* nodePtr, ! const Blueprint& bp, const std::string& filename); ! /// Helper function for parsing Motor XML elements. Allocates ! /// and returns a pointer to a new MotorData object. Returns ! /// NULL if the element could not be loaded. ! MotorData* loadMotor(const TiXmlNode* nodePtr, ! const Blueprint& bp, const std::string& filename); ! /// Helper function for parsing Sensor XML elements. Allocates ! /// and returns a pointer to a new SensorData object. Returns ! /// NULL if the element could not be loaded. ! SensorData* loadSensor(const TiXmlNode* nodePtr, ! const Blueprint& bp, const std::string& filename); ! /// Helper function for parsing Shape XML elements. Allocates ! /// and returns a pointer to a new ShapeData object. Returns ! /// NULL if the element could not be loaded. ! ShapeData* loadShape(const TiXmlNode* nodePtr, const std::string& filename); ! /// Helper function for parsing offset XML elements. ! void loadOffset(Matrix44r& offset, const TiXmlNode* nodePtr, ! const std::string& filename); ! /// Helper function; returns 0 if the attribute doesn't ! /// exist. real getAttributeReal(const TiXmlNode* nodePtr, ! const std::string& name)const; ! /// Helper function; returns false if the attribute doesn't ! /// exist. std::string getAttributeString(const TiXmlNode* nodePtr, ! const std::string& name)const; }; } Index: SpringMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/SpringMotor.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SpringMotor.h 23 Feb 2005 03:58:23 -0000 1.6 --- SpringMotor.h 25 Feb 2005 06:40:26 -0000 1.7 *************** *** 56,60 **** /// Returns all data describing the Motor. ! virtual const SpringMotorData& OPAL_CALL getMotorData(); virtual bool OPAL_CALL isEnabled()const; --- 56,64 ---- /// Returns all data describing the Motor. ! virtual const SpringMotorData& OPAL_CALL getMotorData()const; ! ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; virtual bool OPAL_CALL isEnabled()const; *************** *** 79,86 **** /// Returns the damping constant for linear mode. ! virtual real OPAL_CALL getLinearKd(); /// Returns the spring constant for linear mode. ! virtual real OPAL_CALL getLinearKs(); /// Sets the damping constant for angular mode. --- 83,90 ---- /// Returns the damping constant for linear mode. ! virtual real OPAL_CALL getLinearKd()const; /// Returns the spring constant for linear mode. ! virtual real OPAL_CALL getLinearKs()const; /// Sets the damping constant for angular mode. *************** *** 91,98 **** /// Returns the damping constant for angular mode. ! virtual real OPAL_CALL getAngularKd(); /// Returns the spring constant for angular mode. ! virtual real OPAL_CALL getAngularKs(); virtual void OPAL_CALL internal_update(); --- 95,102 ---- /// Returns the damping constant for angular mode. ! virtual real OPAL_CALL getAngularKd()const; /// Returns the spring constant for angular mode. ! virtual real OPAL_CALL getAngularKs()const; virtual void OPAL_CALL internal_update(); Index: ServoMotorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/ServoMotorData.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ServoMotorData.h 23 Feb 2005 03:58:23 -0000 1.1 --- ServoMotorData.h 25 Feb 2005 06:40:26 -0000 1.2 *************** *** 78,81 **** --- 78,82 ---- mType = data.mType; enabled = data.enabled; + name = data.name; joint = data.joint; mode = data.mode; Index: SensorData.h =================================================================== RCS file: /cvsroot/opal/opal/src/SensorData.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SensorData.h 23 Feb 2005 04:56:49 -0000 1.2 --- SensorData.h 25 Feb 2005 06:40:26 -0000 1.3 *************** *** 49,52 **** --- 49,54 ---- // class will never be instantiated. mType = VELOCITY_SENSOR; + enabled = defaults::sensor::enabled; + name = ""; } *************** *** 61,64 **** --- 63,72 ---- } + /// True if the Motor is enabled. + bool enabled; + + /// An identifier for the Sensor. + std::string name; + protected: /// The Sensor type. Index: ThrusterMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/ThrusterMotor.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ThrusterMotor.h 23 Feb 2005 03:58:23 -0000 1.6 --- ThrusterMotor.h 25 Feb 2005 06:40:26 -0000 1.7 *************** *** 55,59 **** /// Returns all data describing the Motor. ! virtual const ThrusterMotorData& OPAL_CALL getMotorData(); virtual bool OPAL_CALL isEnabled()const; --- 55,63 ---- /// Returns all data describing the Motor. ! virtual const ThrusterMotorData& OPAL_CALL getMotorData()const; ! ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; virtual bool OPAL_CALL isEnabled()const; --- NEW FILE: BlueprintInstance.cpp --- /************************************************************************* * * * Open Physics Abstraction Layer * * Copyright (C) 2004-2005 * * Alan Fischer ala...@gm... * * Andres Reinot an...@re... * * Tyler Streeter tyl...@gm... * * All rights reserved. * * Web: opal.sourceforge.net * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of EITHER: * * (1) The GNU Lesser General Public License as published by the Free * * Software Foundation; either version 2.1 of the License, or (at * * your option) any later version. The text of the GNU Lesser * * General Public License is included with this library in the * * file license-LGPL.txt. * * (2) The BSD-style license that is included with this library in * * the file license-BSD.txt. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * * license-LGPL.txt and license-BSD.txt for more details. * * * *************************************************************************/ #include "BlueprintInstance.h" #include "Solid.h" #include "Joint.h" #include "Motor.h" #include "Sensor.h" namespace opal { BlueprintInstance::BlueprintInstance() { } BlueprintInstance::~BlueprintInstance() { mSolidMap.clear(); mJointMap.clear(); mMotorMap.clear(); mSensorMap.clear(); } Solid* BlueprintInstance::getSolid(const std::string& name)const { std::map<std::string, Solid*>::const_iterator iter = mSolidMap.find(name); if (mSolidMap.end() == iter) { return NULL; } else { return (*iter).second; } } Joint* BlueprintInstance::getJoint(const std::string& name)const { std::map<std::string, Joint*>::const_iterator iter = mJointMap.find(name); if (mJointMap.end() == iter) { return NULL; } else { return (*iter).second; } } Motor* BlueprintInstance::getMotor(const std::string& name)const { std::map<std::string, Motor*>::const_iterator iter = mMotorMap.find(name); if (mMotorMap.end() == iter) { return NULL; } else { return (*iter).second; } } Sensor* BlueprintInstance::getSensor(const std::string& name)const { std::map<std::string, Sensor*>::const_iterator iter = mSensorMap.find(name); if (mSensorMap.end() == iter) { return NULL; } else { return (*iter).second; } } void BlueprintInstance::internal_addSolidPtr(Solid* s) { if (NULL == s) { return; } std::string name = s->getName(); if (name.empty()) { return; } mSolidMap[name] = s; } void BlueprintInstance::internal_addJoint(Joint* j) { if (NULL == j) { return; } std::string name = j->getName(); if (name.empty()) { return; } mJointMap[name] = j; } void BlueprintInstance::internal_addMotor(Motor* m) { if (NULL == m) { return; } std::string name = m->getName(); if (name.empty()) { return; } mMotorMap[name] = m; } void BlueprintInstance::internal_addSensor(Sensor* s) { if (NULL == s) { return; } std::string name = s->getName(); if (name.empty()) { return; } mSensorMap[name] = s; } //void Blueprint::addSolid(const SolidData& data) //{ // if (solidExists(data.name)) // { // Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " // << data.name << " already exists in this Blueprint. \ // Ignoring the new one." << std::endl; // } // else // { // SolidData* newData = new SolidData(data); // mSolidList.push_back(newData); // } //} //void Blueprint::addJoint(const JointData& data) //{ // if (jointExists(data.name)) // { // Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " // << data.name << " already exists in this Blueprint. \ // Ignoring the new one." << std::endl; // } // else // { // JointData* newData = new JointData(data); // mJointList.push_back(newData); // } //} //void Blueprint::addMotor(const MotorData& data) //{ // if (motorExists(data.name)) // { // Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " // << data.name << " already exists in this Blueprint. \ // Ignoring the new one." << std::endl; // } // else // { // MotorData* newData = new MotorData(data); // mMotorList.push_back(newData); // } //} //void Blueprint::addSensor(const SensorData& data) //{ // if (sensorExists(data.name)) // { // Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " // << data.name << " already exists in this Blueprint. \ // Ignoring the new one." << std::endl; // } // else // { // SensorData* newData = new SensorData(data); // mSensorList.push_back(newData); // } //} //bool Blueprint::solidExists(const std::string& name) //{ // /// Ignore empty name strings. // if (name.empty()) // { // return false; // } // std::vector<SolidData*>::iterator iter; // for (iter = mSolidList.begin(); iter != mSolidList.end(); ++iter) // { // if ((*iter)->name == name) // { // return true; // } // } // return false; //} //bool Blueprint::jointExists(const std::string& name) //{ // /// Ignore empty name strings. // if (name.empty()) // { // return false; // } // std::vector<JointData*>::iterator iter; // for (iter = mJointList.begin(); iter != mJointList.end(); ++iter) // { // if ((*iter)->name == name) // { // return true; // } // } // return false; //} //bool Blueprint::motorExists(const std::string& name) //{ // /// Ignore empty name strings. // if (name.empty()) // { // return false; // } // std::vector<MotorData*>::iterator iter; // for (iter = mMotorList.begin(); iter != mMotorList.end(); ++iter) // { // if ((*iter)->name == name) // { // return true; // } // } // return false; //} //bool Blueprint::sensorExists(const std::string& name) //{ // /// Ignore empty name strings. // if (name.empty()) // { // return false; // } // std::vector<SensorData*>::iterator iter; // for (iter = mSensorList.begin(); iter != mSensorList.end(); ++iter) // { // if ((*iter)->name == name) // { // return true; // } // } // return false; //} //int Blueprint::internal_getSolidIndex(const std::string& name)const //{ // if (name.empty()) // { // return -1; // } // for (unsigned int i=0; i<mSolidList.size(); ++i) // { // if (mSolidList[i]->name == name) // { // return (int)i; // } // } // return -1; //} } Index: Joint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Joint.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Joint.cpp 23 Feb 2005 03:58:23 -0000 1.20 --- Joint.cpp 25 Feb 2005 06:40:26 -0000 1.21 *************** *** 52,60 **** } ! const JointData& Joint::getJointData() { return mData; } JointType Joint::getType()const { --- 52,70 ---- } ! const JointData& Joint::getJointData()const { return mData; } + void Joint::setName(const std::string& name) + { + mData.name = name; + } + + const std::string& Joint::getName()const + { + return mData.name; + } + JointType Joint::getType()const { *************** *** 106,110 **** //} ! //const Joint::JointLimits& getLimits(int axisNum) //{ // assert(axisNum >= 0 && axisNum < mNumAxes); --- 116,120 ---- //} ! //const Joint::JointLimits& getLimits(int axisNum)const //{ // assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 120,124 **** } ! real Joint::getLowLimit(int axisNum) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 130,134 ---- } ! real Joint::getLowLimit(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 126,130 **** } ! real Joint::getHighLimit(int axisNum) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 136,140 ---- } ! real Joint::getHighLimit(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 139,143 **** } ! real Joint::getLimitHardness(int axisNum) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 149,153 ---- } ! real Joint::getLimitHardness(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 152,156 **** } ! real Joint::getLimitBounciness(int axisNum) { assert(axisNum >= 0 && axisNum < mNumAxes); --- 162,166 ---- } ! real Joint::getLimitBounciness(int axisNum)const { assert(axisNum >= 0 && axisNum < mNumAxes); *************** *** 172,176 **** if (!f.singleStep) { ! f.timeLeft = duration; } --- 182,186 ---- if (!f.singleStep) { ! f.duration = duration; } *************** *** 199,203 **** if (!f.singleStep) { ! f.timeLeft = duration; } --- 209,213 ---- if (!f.singleStep) { ! f.duration = duration; } *************** *** 256,260 **** } ! const Point3r& Joint::getAnchor() { return mData.anchor; --- 266,270 ---- } ! const Point3r& Joint::getAnchor()const { return mData.anchor; *************** *** 310,317 **** switch(mData.breakMode) { ! case UNBREAKABLE: //nothing to do break; ! case THRESHOLD: { if (currentStress >= mData.breakThresh) --- 320,327 ---- switch(mData.breakMode) { ! case UNBREAKABLE_MODE: //nothing to do break; ! case THRESHOLD_MODE: { if (currentStress >= mData.breakThresh) *************** *** 321,325 **** break; } ! case ACCUMULATED: { if (currentStress >= mData.accumThresh) --- 331,335 ---- break; } ! case ACCUMULATED_MODE: { if (currentStress >= mData.accumThresh) Index: Motor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Motor.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Motor.cpp 23 Feb 2005 03:58:23 -0000 1.13 --- Motor.cpp 25 Feb 2005 06:40:26 -0000 1.14 *************** *** 32,36 **** Motor::Motor() { ! //mEnabled = false; mIsCustom = false; mInitCalled = false; --- 32,36 ---- Motor::Motor() { ! // "mData" is initialized in its own constructor. mIsCustom = false; mInitCalled = false; Index: SolidData.h =================================================================== RCS file: /cvsroot/opal/opal/src/SolidData.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SolidData.h 23 Feb 2005 06:35:46 -0000 1.5 --- SolidData.h 25 Feb 2005 06:40:26 -0000 1.6 *************** *** 31,40 **** #include "Defines.h" #include "ShapeData.h" - #include "BoxShapeData.h" - #include "SphereShapeData.h" - #include "CapsuleShapeData.h" - #include "PlaneShapeData.h" - #include "RayShapeData.h" - #include "MeshShapeData.h" namespace opal --- 31,34 ---- *************** *** 44,168 **** { public: ! SolidData() ! { ! enabled = defaults::solid::enabled; ! sleeping = defaults::solid::sleeping; ! isStatic = defaults::solid::isStatic; ! // Leave the transform as an identity matrix. ! // "globalLinearVel" is already initialized in its constructor. ! // "globalAngularVel" is already initialized in its constructor. ! linearDamping = defaults::linearDamping; ! angularDamping = defaults::angularDamping; ! // The Shape list doesn't need to be initialized. ! } ! ///// Copy constructor. ! //SolidData(const SolidData& data) ! //{ ! // (*this) = data; ! //} ! virtual ~SolidData() ! { ! destroyShapes(); ! } /// Adds a new Shape to the SolidData. This automatically /// allocates the right ShapeData type. ! virtual void OPAL_CALL addShape(const ShapeData& data) ! { ! ShapeData* newShape = NULL; ! ! switch(data.getType()) ! { ! case BOX_SHAPE: ! { ! newShape = new BoxShapeData((BoxShapeData&)data); ! break; ! } ! case SPHERE_SHAPE: ! { ! newShape = new SphereShapeData((SphereShapeData&)data); ! break; ! } ! case CAPSULE_SHAPE: ! { ! newShape = new CapsuleShapeData((CapsuleShapeData&)data); ! break; ! } ! case PLANE_SHAPE: ! { ! newShape = new PlaneShapeData((PlaneShapeData&)data); ! break; ! } ! case RAY_SHAPE: ! { ! newShape = new RayShapeData((RayShapeData&)data); ! break; ! } ! case MESH_SHAPE: ! { ! newShape = new MeshShapeData((MeshShapeData&)data); ! break; ! } ! default: ! assert(false); ! } ! ! mShapes.push_back(newShape); ! } /// Returns the number of Shapes in this SolidData. ! virtual int OPAL_CALL getNumShapes()const ! { ! return (int)(mShapes.size()); ! } /// Returns a pointer to the ShapeData at the given index. ! virtual ShapeData* OPAL_CALL getShapeData(unsigned int i)const ! { ! return mShapes.at(i); ! } /// Destroys all Shapes in the SolidData. ! virtual void OPAL_CALL destroyShapes() ! { ! while (!mShapes.empty()) ! { ! delete mShapes.back(); ! mShapes.pop_back(); ! } ! } ! ! ///// Makes a deep copy. ! //virtual void OPAL_CALL operator=(const SolidData& data) ! //{ ! // enabled = data.enabled; ! // sleeping = data.sleeping; ! // isStatic = data.isStatic; ! // transform = data.transform; ! // globalLinearVel = data.globalLinearVel; ! // globalAngularVel = data.globalAngularVel; ! // linearDamping = data.linearDamping; ! // angularDamping = data.angularDamping; ! // shapes.clear(); ! // for (unsigned int i=0; i<data.shapes.size(); ++i) ! // { ! // // TODO: need an actual ShapeData allocated here, but it ! // // must be the right type. ! // shapes.push_back(data.shapes[i]); ! // } ! //} bool enabled; bool sleeping; bool isStatic; Matrix44r transform; Vec3r globalLinearVel; Vec3r globalAngularVel; real linearDamping; real angularDamping; protected: std::vector<ShapeData*> mShapes; --- 38,97 ---- { public: ! SolidData(); ! /// Copy constructor. ! SolidData(const SolidData& data); ! virtual ~SolidData(); /// Adds a new Shape to the SolidData. This automatically /// allocates the right ShapeData type. ! virtual void OPAL_CALL addShape(const ShapeData& data); /// Returns the number of Shapes in this SolidData. ! virtual int OPAL_CALL getNumShapes()const; ! /// Returns a pointer to the ShapeData at the given index. ! virtual ShapeData* OPAL_CALL getShapeData(unsigned int i)const; /// Destroys all Shapes in the SolidData. ! virtual void OPAL_CALL destroyShapes(); ! /// Makes a deep copy. ! virtual void OPAL_CALL operator=(const SolidData& data); + /// Determines whether the Solid is enabled. bool enabled; + + /// An identifier for the Solid. + std::string name; + + /// Determines whether the Solid is sleeping. bool sleeping; + + /// The Solid's sleepiness level which determines how fast the + /// Solid falls asleep. + real sleepiness; + + /// Determines whether the Solid is static. bool isStatic; + + /// The Solid's transform relative to the global origin. Matrix44r transform; + + /// The Solid's linear velocity in global coordinates. Vec3r globalLinearVel; + + /// The Solid's angular velocity in global coordinates. Vec3r globalAngularVel; + + /// The amount of damping applied to the Solid's linear motion. real linearDamping; + + /// The amount of damping applied to the Solid's angular motion. real angularDamping; protected: + /// Pointers to the Solid's Shape data. std::vector<ShapeData*> mShapes; Index: GearedMotor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/GearedMotor.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** GearedMotor.cpp 23 Feb 2005 03:58:23 -0000 1.6 --- GearedMotor.cpp 25 Feb 2005 06:40:26 -0000 1.7 *************** *** 56,64 **** } ! const GearedMotorData& GearedMotor::getMotorData() { return mData; } bool GearedMotor::isEnabled()const { --- 56,74 ---- } ! const GearedMotorData& GearedMotor::getMotorData()const { return mData; } + void GearedMotor::setName(const std::string& name) + { + mData.name = name; + } + + const std::string& GearedMotor::getName()const + { + return mData.name; + } + bool GearedMotor::isEnabled()const { Index: ServoMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/ServoMotor.h,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** ServoMotor.h 23 Feb 2005 03:58:23 -0000 1.20 --- ServoMotor.h 25 Feb 2005 06:40:26 -0000 1.21 *************** *** 58,62 **** /// Returns all data describing the Motor. ! virtual const ServoMotorData& OPAL_CALL getMotorData(); virtual bool OPAL_CALL isEnabled()const; --- 58,66 ---- /// Returns all data describing the Motor. ! virtual const ServoMotorData& OPAL_CALL getMotorData()const; ! ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; virtual bool OPAL_CALL isEnabled()const; *************** *** 74,78 **** /// Gets the desired position, a value between the Joint axis' /// limits. ! virtual real OPAL_CALL getDesiredPos(); /// Sets the desired velocity. --- 78,82 ---- /// Gets the desired position, a value between the Joint axis' /// limits. ! virtual real OPAL_CALL getDesiredPos()const; /// Sets the desired velocity. *************** *** 80,84 **** /// Returns the desired velocity. ! virtual real OPAL_CALL getDesiredVel(); /// Sets the maximum amount of force/torque this Motor can use. --- 84,88 ---- /// Returns the desired velocity. ! virtual real OPAL_CALL getDesiredVel()const; /// Sets the maximum amount of force/torque this Motor can use. *************** *** 86,90 **** /// Returns the maximum amount of force/torque this Motor can use. ! virtual real OPAL_CALL getMaxForce(); /// Sets the restore speed, the parameter used to scale how fast --- 90,94 ---- /// Returns the maximum amount of force/torque this Motor can use. ! virtual real OPAL_CALL getMaxForce()const; /// Sets the restore speed, the parameter used to scale how fast *************** *** 94,98 **** /// Returns the restore speed. ! virtual real OPAL_CALL getRestoreSpeed(); virtual void OPAL_CALL internal_update(); --- 98,102 ---- /// Returns the restore speed. ! virtual real OPAL_CALL getRestoreSpeed()const; virtual void OPAL_CALL internal_update(); Index: AttractorMotor.h =================================================================== RCS file: /cvsroot/opal/opal/src/AttractorMotor.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** AttractorMotor.h 23 Feb 2005 03:58:23 -0000 1.22 --- AttractorMotor.h 25 Feb 2005 06:40:26 -0000 1.23 *************** *** 57,61 **** /// Returns all data describing the Motor. ! virtual const AttractorMotorData& OPAL_CALL getMotorData(); virtual bool OPAL_CALL isEnabled()const; --- 57,65 ---- /// Returns all data describing the Motor. ! virtual const AttractorMotorData& OPAL_CALL getMotorData()const; ! ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; virtual bool OPAL_CALL isEnabled()const; Index: ThrusterMotor.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/ThrusterMotor.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ThrusterMotor.cpp 23 Feb 2005 03:58:23 -0000 1.5 --- ThrusterMotor.cpp 25 Feb 2005 06:40:26 -0000 1.6 *************** *** 54,62 **** } ! const ThrusterMotorData& ThrusterMotor::getMotorData() { return mData; } bool ThrusterMotor::isEnabled()const { --- 54,72 ---- } ! const ThrusterMotorData& ThrusterMotor::getMotorData()const { return mData; } + void ThrusterMotor::setName(const std::string& name) + { + mData.name = name; + } + + const std::string& ThrusterMotor::getName()const + { + return mData.name; + } + bool ThrusterMotor::isEnabled()const { Index: Blueprint.cpp =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Blueprint.cpp 23 Feb 2005 03:58:23 -0000 1.13 --- Blueprint.cpp 25 Feb 2005 06:40:26 -0000 1.14 *************** *** 27,30 **** --- 27,34 ---- #include "Blueprint.h" + #include "SolidData.h" + #include "JointData.h" + #include "MotorData.h" + #include "SensorData.h" namespace opal *************** *** 36,134 **** Blueprint::~Blueprint() { ! mSolidMap.clear(); ! mJointMap.clear(); ! mSpaceList.clear(); ! } ! void Blueprint::setName(const std::string& name) ! { ! mName = name; } ! const std::string& Blueprint::getName()const { ! return mName; } ! //void Blueprint::addSolid(const SolidDescription& sd) ! //{ ! // if (solidExists(sd.name)) ! // { ! // std::cout << "Warning in opal::Blueprint::addSolid: Solid " << sd.name ! // << " already exists in Blueprint " << mName ! // << "; ignoring Solid" << std::endl; ! // } ! // else ! // { ! // mSolidMap[sd.name] = sd; ! // } ! //} ! ! //void Blueprint::addJoint(const JointData& data) ! //{ ! // if (jointExists(data.name)) ! // { ! // std::cout << "Warning in opal::Blueprint::addJoint: Joint " << ! // data.name << " already exists in Blueprint " << mName ! // << "; ignoring Joint" << std::endl; ! // } ! // else ! // { ! // mJointMap[data.name] = data; ! // } ! //} ! ! void Blueprint::addSpace(const SpaceDescription& sd) { ! mSpaceList.push_back(sd); } ! int Blueprint::getNumSolids()const { ! return (int)mSolidMap.size(); } ! int Blueprint::getNumJoints()const { ! return (int)mJointMap.size(); } ! const std::map<std::string, SolidData>& Blueprint::getSolidMap()const { ! return mSolidMap; } ! const std::map<std::string, JointData>& Blueprint::getJointMap()const { ! return mJointMap; } ! const std::vector<SpaceDescription>& Blueprint::getSpaceList()const { ! return mSpaceList; } ! bool Blueprint::solidExists(const std::string& name) { ! if (mSolidMap.end() == mSolidMap.find(name)) { return false; } ! else { ! return true; } } ! bool Blueprint::jointExists(const std::string& name) { ! if (mJointMap.end() == mJointMap.find(name)) { ! return false; } ! else { ! return true; } } } --- 40,224 ---- Blueprint::~Blueprint() { ! while (!mSolidList.empty()) ! { ! delete mSolidList.back(); ! mSolidList.pop_back(); ! } ! while (!mJointList.empty()) ! { ! delete mJointList.back(); ! mJointList.pop_back(); ! } ! ! while (!mMotorList.empty()) ! { ! delete mMotorList.back(); ! mMotorList.pop_back(); ! } ! ! while (!mSensorList.empty()) ! { ! delete mSensorList.back(); ! mSensorList.pop_back(); ! } } ! void Blueprint::addSolid(const SolidData& data) { ! if (solidExists(data.name)) ! { ! Logger::stream("warning") << "opal::Blueprint::addSolid: Solid " ! << data.name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; ! } ! else ! { ! SolidData* newData = new SolidData(data); ! mSolidList.push_back(newData); ! } } ! void Blueprint::addJoint(const JointData& data) { ! if (jointExists(data.name)) ! { ! Logger::stream("warning") << "opal::Blueprint::addJoint: Joint " ! << data.name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; ! } ! else ! { ! JointData* newData = new JointData(data); ! mJointList.push_back(newData); ! } } ! void Blueprint::addMotor(const MotorData& data) { ! if (motorExists(data.name)) ! { ! Logger::stream("warning") << "opal::Blueprint::addMotor: Motor " ! << data.name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; ! } ! else ! { ! MotorData* newData = new MotorData(data); ! mMotorList.push_back(newData); ! } } ! void Blueprint::addSensor(const SensorData& data) { ! if (sensorExists(data.name)) ! { ! Logger::stream("warning") << "opal::Blueprint::addSensor: Sensor " ! << data.name << " already exists in this Blueprint. \ ! Ignoring the new one." << std::endl; ! } ! else ! { ! SensorData* newData = new SensorData(data); ! mSensorList.push_back(newData); ! } } ! bool Blueprint::solidExists(const std::string& name) { ! /// Ignore empty name strings. ! if (name.empty()) ! { ! return false; ! } ! ! std::vector<SolidData*>::iterator iter; ! for (iter = mSolidList.begin(); iter != mSolidList.end(); ++iter) ! { ! if ((*iter)->name == name) ! { ! return true; ! } ! } ! ! return false; } ! bool Blueprint::jointExists(const std::string& name) { ! /// Ignore empty name strings. ! if (name.empty()) ! { ! return false; ! } ! ! std::vector<JointData*>::iterator iter; ! for (iter = mJointList.begin(); iter != mJointList.end(); ++iter) ! { ! if ((*iter)->name == name) ! { ! return true; ! } ! } ! ! return false; } ! bool Blueprint::motorExists(const std::string& name) { ! /// Ignore empty name strings. ! if (name.empty()) ! { ! return false; ! } ! ! std::vector<MotorData*>::iterator iter; ! for (iter = mMotorList.begin(); iter != mMotorList.end(); ++iter) ! { ! if ((*iter)->name == name) ! { ! return true; ! } ! } ! ! return false; } ! bool Blueprint::sensorExists(const std::string& name) { ! /// Ignore empty name strings. ! if (name.empty()) { return false; } ! ! std::vector<SensorData*>::iterator iter; ! for (iter = mSensorList.begin(); iter != mSensorList.end(); ++iter) { ! if ((*iter)->name == name) ! { ! return true; ! } } + + return false; } ! int Blueprint::internal_getSolidIndex(const std::string& name)const { ! if (name.empty()) { ! return -1; } ! ! for (unsigned int i=0; i<mSolidList.size(); ++i) { ! if (mSolidList[i]->name == name) ! { ! return (int)i; ! } } + + return -1; } } Index: Blueprint.h =================================================================== RCS file: /cvsroot/opal/opal/src/Blueprint.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Blueprint.h 23 Feb 2005 03:58:23 -0000 1.21 --- Blueprint.h 25 Feb 2005 06:40:26 -0000 1.22 *************** *** 35,42 **** namespace opal { /// Blueprints are useful for saving and loading systems of Solids, /// Joints, Motors, and/or Sensors. They are not guaranteed to yield /// perfect repeatability after a save/restore sequence. - class Blueprint { --- 35,46 ---- namespace opal { + class SolidData; + class JointData; + class MotorData; + class SensorData; + /// Blueprints are useful for saving and loading systems of Solids, /// Joints, Motors, and/or Sensors. They are not guaranteed to yield /// perfect repeatability after a save/restore sequence. class Blueprint { *************** *** 46,79 **** virtual ~Blueprint(); ! virtual void OPAL_CALL setName(const std::string& name); ! ! virtual const std::string& OPAL_CALL getName()const; ! ! //virtual void OPAL_CALL addSolid(const SolidDescription& data); ! ! //virtual void OPAL_CALL addJoint(const JointData& data); ! ! virtual void OPAL_CALL addSpace(const SpaceDescription& sd); ! ! virtual int OPAL_CALL getNumSolids()const; ! virtual int OPAL_CALL getNumJoints()const; ! virtual const std::map<std::string, SolidData>& OPAL_CALL getSolidMap()const; ! virtual const std::map<std::string, JointData>& OPAL_CALL getJointMap()const; ! virtual const std::vector<SpaceDescription>& OPAL_CALL getSpaceList()const; private: bool solidExists(const std::string& name); bool jointExists(const std::string& name); ! std::string mName; ! std::map<std::string, SolidData> mSolidMap; ! std::map<std::string, JointData> mJointMap; ! std::vector<SpaceDescription> mSpaceList; }; } --- 50,99 ---- virtual ~Blueprint(); ! /// Adds a new SolidData object to the Blueprint. Makes a ! /// deep copy of the given data. ! virtual void OPAL_CALL addSolid(const SolidData& data); ! /// Adds a new JointData object to the Blueprint. Makes a ! /// deep copy of the given data. ! virtual void OPAL_CALL addJoint(const JointData& data); ! /// Adds a new MotorData object to the Blueprint. Makes a ! /// deep copy of the given data. ! virtual void OPAL_CALL addMotor(const MotorData& data); ! /// Adds a new SensorData object to the Blueprint. Makes a ! /// deep copy of the given data. ! virtual void OPAL_CALL addSensor(const SensorData& data); ! /// Returns the index of the given Solid name in the Blueprint's ! /// list of SolidData. Returns -1 if the Solid name is not found ! /// or if the given name is an empty string. ! int internal_getSolidIndex(const std::string& name)const; private: + /// Helper function that returns true if a Solid of the given + /// name already exists in the Blueprint. Ignores empty name + /// strings. bool solidExists(const std::string& name); + /// Helper function that returns true i... [truncated message content] |