Revision: 7018
          http://playerstage.svn.sourceforge.net/playerstage/?rev=7018&view=rev
Author:   natepak
Date:     2008-09-10 03:51:13 +0000 (Wed, 10 Sep 2008)

Log Message:
-----------
Added a Common class for ease of processing parameters

Modified Paths:
--------------
    code/gazebo/trunk/server/Entity.cc
    code/gazebo/trunk/server/Entity.hh
    code/gazebo/trunk/server/Param.cc
    code/gazebo/trunk/server/SConscript
    code/gazebo/trunk/server/gui/GLWindow.cc
    code/gazebo/trunk/server/gui/Toolbar.cc
    code/gazebo/trunk/server/gui/Toolbar.hh
    code/gazebo/trunk/server/physics/Geom.cc
    code/gazebo/trunk/server/physics/Geom.hh
    code/gazebo/trunk/server/physics/Joint.cc
    code/gazebo/trunk/server/physics/Joint.hh
    code/gazebo/trunk/server/rendering/OgreVisual.cc
    code/gazebo/trunk/server/rendering/OgreVisual.hh

Added Paths:
-----------
    code/gazebo/trunk/server/Common.cc
    code/gazebo/trunk/server/Common.hh

Added: code/gazebo/trunk/server/Common.cc
===================================================================
--- code/gazebo/trunk/server/Common.cc                          (rev 0)
+++ code/gazebo/trunk/server/Common.cc  2008-09-10 03:51:13 UTC (rev 7018)
@@ -0,0 +1,101 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/* Desc: Base class shared by all classes in Gazebo.
+ * Author: Nate Koenig
+ * Date: 09 Sept. 2008
+ * SVN: $Id:$
+ */
+
+#include "Common.hh"
+#include "GazeboMessage.hh"
+
+using namespace gazebo;
+
+unsigned int Common::idCounter = 0;
+
+////////////////////////////////////////////////////////////////////////////////
+/// Constructor
+Common::Common()
+{
+  this->id = ++idCounter;
+
+  Param::Begin(&this->parameters);
+  this->nameP = new ParamT<std::string>("name","noname",1);
+  Param::End();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Destructor
+Common::~Common()
+{
+  delete this->nameP;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set the name of the entity
+void Common::SetName(const std::string &name)
+{
+  this->nameP->SetValue( name );
+}
+  
+////////////////////////////////////////////////////////////////////////////////
+/// Return the name of the entity
+std::string Common::GetName() const
+{
+  return this->nameP->GetValue();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get the parameters 
+std::vector<Param*> *Common::GetParams()
+{
+  return &this->parameters;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get a parameter by name
+Param *Common::GetParam(const std::string &key) const
+{
+  std::vector<Param*>::const_iterator iter;
+  Param *result = NULL;
+
+  for (iter = this->parameters.begin(); iter != this->parameters.end(); iter++)
+  {
+    if ((*iter)->GetKey() == key)
+    {
+      result = *iter;
+      break;
+    }
+  }
+
+  if (result == NULL)
+    gzerr(0) << "Unable to find Param using key[" << key << "]\n";
+
+  return result;
+}
+   
+////////////////////////////////////////////////////////////////////////////////
+/// Return the ID of this entity. This id is unique
+int Common::GetId() const
+{
+  return this->id;
+}

Added: code/gazebo/trunk/server/Common.hh
===================================================================
--- code/gazebo/trunk/server/Common.hh                          (rev 0)
+++ code/gazebo/trunk/server/Common.hh  2008-09-10 03:51:13 UTC (rev 7018)
@@ -0,0 +1,80 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/* Desc: Base class shared by all classes in Gazebo.
+ * Author: Nate Koenig
+ * Date: 09 Sept. 2008
+ * SVN: $Id:$
+ */
+
+#ifndef COMMON_HH
+#define COMMON_HH
+
+#include <vector>
+#include <string>
+
+#include "Param.hh"
+
+namespace gazebo
+{
+
+  class Common
+  {
+    /// \brief Constructor
+    public: Common();
+
+    /// \brief Destructor
+    public: virtual ~Common();
+
+    /// \brief Set the name of the entity
+    /// \param name Body name
+    public: void SetName(const std::string &name);
+  
+    /// \brief Return the name of the entity
+    /// \return Name of the entity
+    public: std::string GetName() const;
+
+    /// \brief Get the parameters 
+    public: std::vector<Param*> *GetParams();
+
+    /// \brief Get a parameter by name
+    public: Param *GetParam(const std::string &key) const;
+   
+    /// \brief Return the ID of this entity. This id is unique
+    /// \return Integer ID
+    public: int GetId() const;
+   
+    /// \brief This entities ID
+    private: unsigned int id;
+  
+    /// \brief Used to automaticaly chose a unique ID on creation
+    private: static unsigned int idCounter;
+ 
+    ///  Name of the entity
+    protected: ParamT<std::string> *nameP;
+
+    /// List of all the parameters
+    protected: std::vector<Param*> parameters;
+  };
+}
+
+#endif
+

Modified: code/gazebo/trunk/server/Entity.cc
===================================================================
--- code/gazebo/trunk/server/Entity.cc  2008-09-09 23:48:33 UTC (rev 7017)
+++ code/gazebo/trunk/server/Entity.cc  2008-09-10 03:51:13 UTC (rev 7018)
@@ -34,16 +34,14 @@
 #include "Entity.hh"
 
 using namespace gazebo;
-unsigned int Entity::idCounter = 0;
 
 
+////////////////////////////////////////////////////////////////////////////////
+// Constructor
 Entity::Entity(Entity *parent)
-: parent(parent),
-  id(++idCounter),
-  visualNode(0)
+: Common(), parent(parent), visualNode(0)
 {
   Param::Begin(&this->parameters);
-  this->nameP = new ParamT<std::string>("name","",1);
   this->staticP = new ParamT<bool>("static",false,0);
   //this->staticP->Callback( &Entity::SetStatic, this);
   Param::End();
@@ -65,39 +63,38 @@
   World::Instance()->GetPhysicsEngine()->AddEntity(this);
 }
 
+////////////////////////////////////////////////////////////////////////////////
+// Destructor
 Entity::~Entity()
 {
-  delete this->nameP;
   delete this->staticP;
 
   GZ_DELETE(this->visualNode);
   World::Instance()->GetPhysicsEngine()->RemoveEntity(this);
 }
 
-int Entity::GetId() const
-{
-  return this->id;
-}
-
+////////////////////////////////////////////////////////////////////////////////
 // Return the ID of the parent
 int Entity::GetParentId() const
 {
   return this->parent == NULL ? 0 : this->parent->GetId();
 }
 
-
+////////////////////////////////////////////////////////////////////////////////
 // Set the parent
 void Entity::SetParent(Entity *parent)
 {
   this->parent = parent;
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // Get the parent
 Entity *Entity::GetParent() const
 {
   return this->parent;
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // Add a child to this entity
 void Entity::AddChild(Entity *child)
 {
@@ -108,18 +105,21 @@
   this->children.push_back(child);
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // Get all children
 std::vector< Entity* > &Entity::GetChildren() 
 {
   return this->children;
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // Return this entitie's sceneNode
 OgreVisual *Entity::GetVisualNode() const
 {
   return this->visualNode;
 }
 
+////////////////////////////////////////////////////////////////////////////////
 // Set the scene node
 void Entity::SetVisualNode(OgreVisual *visualNode)
 {
@@ -127,21 +127,6 @@
 }
 
 
////////////////////////////////////////////////////////////////////////////////
-// Set the name of the body
-void Entity::SetName(const std::string &name)
-{
-  this->nameP->SetValue( name );
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Return the name of the body
-std::string Entity::GetName() const
-{
-  return this->nameP->GetValue();
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
 // Set whether this entity is static: immovable
 void Entity::SetStatic(const bool &s)
 {
@@ -198,32 +183,3 @@
 {
   return ent.GetName() == this->GetName();
 }
-
-////////////////////////////////////////////////////////////////////////////////
-/// Get the parameters 
-std::vector<Param*> *Entity::GetParams()
-{
-  return &this->parameters;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-/// Get a parameter by name
-Param *Entity::GetParam(const std::string &key) const
-{
-  std::vector<Param*>::const_iterator iter;
-  Param *result = NULL;
-
-  for (iter = this->parameters.begin(); iter != this->parameters.end(); iter++)
-  {
-    if ((*iter)->GetKey() == key)
-    {
-      result = *iter;
-      break;
-    }
-  }
-
-  if (result == NULL)
-    gzerr(0) << "Unable to find Param using key[" << key << "]\n";
-
-  return result;
-}

Modified: code/gazebo/trunk/server/Entity.hh
===================================================================
--- code/gazebo/trunk/server/Entity.hh  2008-09-09 23:48:33 UTC (rev 7017)
+++ code/gazebo/trunk/server/Entity.hh  2008-09-10 03:51:13 UTC (rev 7018)
@@ -18,8 +18,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
-
-/* Desc: External interfaces for Gazebo
+/* Desc: Base class for all physical entities
  * Author: Nate Koenig
  * Date: 03 Apr 2007
  * SVN: $Id$
@@ -32,6 +31,7 @@
 #include <string>
 #include <ode/ode.h>
 
+#include "Common.hh"
 #include "Param.hh"
 
 namespace gazebo
@@ -46,7 +46,7 @@
   /*
    * Facilitates meshing of physics engine with rendering engine
    */
-  class Entity
+  class Entity : public Common
   {
     /// \brief Constructor
     /// \param parent Parent of the entity.
@@ -54,11 +54,7 @@
   
     /// \brief Destructor
     public: virtual ~Entity();
-  
-    /// \brief Return the ID of this entity. This id is unique
-    /// \return Integer ID
-    public: int GetId() const;
-  
+ 
     /// \brief Return the ID of the parent
     /// \return Integer ID
     public: int GetParentId() const;
@@ -86,15 +82,7 @@
     /// \brief Set the scene node
     /// \param sceneNode Ogre scene node
     public: void SetVisualNode(OgreVisual *visualNode);
-  
-    /// \brief Set the name of the entity
-    /// \param name Body name
-    public: void SetName(const std::string &name);
-  
-    /// \brief Return the name of the entity
-    /// \return Name of the entity
-    public: std::string GetName() const;
-  
+ 
     /// \brief Set whether this entity is static: immovable
     /// \param s Bool, true = static
     public: void SetStatic(const bool &s);
@@ -113,24 +101,12 @@
     /// \brief Returns true if the entities are the same. Checks only the name
     public: bool operator==(const Entity &ent) const;
 
-    /// \brief Get the parameters 
-    public: std::vector<Param*> *GetParams();
-
-    /// \brief Get a parameter by name
-    public: Param *GetParam(const std::string &key) const;
- 
     /// \brief Parent of this entity
     protected: Entity *parent;
   
     /// \brief Children of this entity
     protected: std::vector< Entity* > children;
   
-    /// \brief This entities ID
-    private: unsigned int id;
-  
-    /// \brief Used to automaticaly chose a unique ID on creation
-    private: static unsigned int idCounter;
-  
     // is this an static entity
     protected: ParamT<bool> *staticP;
   
@@ -140,14 +116,7 @@
     /// \brief ODE Stuff (should be go somewhere else)
     public: dSpaceID spaceId;
   
-    /// \brief Name of the entity
-    protected: ParamT<std::string> *nameP;
-
-    /// List of all the parameters
-    protected: std::vector<Param*> parameters;
-  
     private: bool selected;
-  
   };
   
   /// \}

Modified: code/gazebo/trunk/server/Param.cc
===================================================================
--- code/gazebo/trunk/server/Param.cc   2008-09-09 23:48:33 UTC (rev 7017)
+++ code/gazebo/trunk/server/Param.cc   2008-09-10 03:51:13 UTC (rev 7018)
@@ -1,3 +1,29 @@
+/*
+ *  Gazebo - Outdoor Multi-Robot Simulator
+ *  Copyright (C) 2003  
+ *     Nate Koenig & Andrew Howard
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+/* Desc: Parameter class
+ * Author: Nate Koenig
+ * Date: 14 Aug 2008
+ * SVN: $Id:$
+ */
+
 #include "GazeboError.hh"
 #include "Param.hh"
 

Modified: code/gazebo/trunk/server/SConscript
===================================================================
--- code/gazebo/trunk/server/SConscript 2008-09-09 23:48:33 UTC (rev 7017)
+++ code/gazebo/trunk/server/SConscript 2008-09-10 03:51:13 UTC (rev 7018)
@@ -7,6 +7,7 @@
   SConscript('%s/SConscript' % subdir)
 
 sources = ['main.cc',
+           'Common.cc',
            'Vector3.cc', 
            'Vector4.cc', 
            'Quatern.cc',

Modified: code/gazebo/trunk/server/gui/GLWindow.cc
===================================================================
--- code/gazebo/trunk/server/gui/GLWindow.cc    2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/gui/GLWindow.cc    2008-09-10 03:51:13 UTC (rev 
7018)
@@ -351,8 +351,6 @@
 {
   this->keys[keyNum] = 0;
 
-  Simulator* sim = Simulator::Instance();
-
   // Handle all toggle keys
   switch (keyNum)
   {

Modified: code/gazebo/trunk/server/gui/Toolbar.cc
===================================================================
--- code/gazebo/trunk/server/gui/Toolbar.cc     2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/gui/Toolbar.cc     2008-09-10 03:51:13 UTC (rev 
7018)
@@ -30,13 +30,17 @@
 #include <FL/Fl_Input.H>
 #include <FL/Fl_Button.H>
 
+#include <boost/lexical_cast.hpp>
+
 #include "World.hh"
 #include "Body.hh"
 #include "Geom.hh"
 #include "Entity.hh"
+#include "Common.hh"
 #include "Model.hh"
 #include "Simulator.hh"
 #include "CameraManager.hh"
+#include "OgreVisual.hh"
 #include "OgreCamera.hh"
 #include "Toolbar.hh"
 #include "Global.hh"
@@ -127,6 +131,16 @@
           value = "@[EMAIL PROTECTED]@s  -Geom:[EMAIL PROTECTED]@[EMAIL 
PROTECTED]" + giter->second->GetName();
           this->AddToParamBrowser(value);
           this->AddEntityToParamBrowser( giter->second, "    " );
+
+          for (unsigned int i=0; i < giter->second->GetVisualCount(); i++)
+          {
+            OgreVisual *vis = giter->second->GetVisual(i);
+            std::ostringstream stream;
+            stream << vis->GetId();
+            value = "@[EMAIL PROTECTED]@s    -Visual:[EMAIL PROTECTED]@[EMAIL 
PROTECTED]" + stream.str();
+            this->AddToParamBrowser(value);
+            this->AddEntityToParamBrowser( vis, "      " );
+          }
         }
       }
     }
@@ -190,8 +204,10 @@
   Model *model = 
dynamic_cast<Model*>(Simulator::Instance()->GetSelectedEntity());
   Body *body = NULL;
   Geom *geom = NULL;
-  std::string geomName, bodyName, value, label;
+  OgreVisual *vis = NULL;
 
+  std::string geomName, bodyName, visNum, value, label;
+
   // Make sure we have a valid model
   if (!model)
   {
@@ -215,6 +231,8 @@
       geomName = lineText.substr( lastAmp, lineText.size()-lastAmp );
     else if (lineText.find("-Body:") != std::string::npos && bodyName.empty())
       bodyName = lineText.substr( lastAmp, lineText.size()-lastAmp );
+    else if (lineText.find("-Visual:") != std::string::npos && visNum.empty())
+      visNum = lineText.substr( lastAmp, lineText.size()-lastAmp );
       
     selected--;
   }
@@ -227,9 +245,14 @@
   if (!geomName.empty() && body)
     geom = body->GetGeom(geomName);
 
+  if (!visNum.empty() && geom)
+    vis = geom->GetVisualById(boost::lexical_cast<int>(visNum));
+
   // Get the parameter
   Param *param = NULL;
-  if (geom)
+  if (vis)
+    param = vis->GetParam(label);
+  else if (geom)
     param = geom->GetParam(label);
   else if (body)
     param = body->GetParam(label);
@@ -256,7 +279,7 @@
 
 
////////////////////////////////////////////////////////////////////////////////
 // Add entity to browser
-void Toolbar::AddEntityToParamBrowser(Entity *entity, std::string prefix)
+void Toolbar::AddEntityToParamBrowser(Common *entity, std::string prefix)
 {
   std::vector<Param*> *parameters;
   std::vector<Param*>::iterator iter;

Modified: code/gazebo/trunk/server/gui/Toolbar.hh
===================================================================
--- code/gazebo/trunk/server/gui/Toolbar.hh     2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/gui/Toolbar.hh     2008-09-10 03:51:13 UTC (rev 
7018)
@@ -37,7 +37,7 @@
 
 namespace gazebo
 {
-  class Entity;
+  class Common;
 
   /// \brief Toolbar
   class Toolbar : public Fl_Group
@@ -61,7 +61,7 @@
     public: static void EntityBrowserCB( Fl_Widget *w, void *data );
 
     /// \brief Add an entity ot the param browser
-    private: void AddEntityToParamBrowser(Entity *ent, std::string prefix);
+    private: void AddEntityToParamBrowser(Common *ent, std::string prefix);
 
     /// \brief Add a line to the param browser
     private: void AddToParamBrowser(const std::string &line);

Modified: code/gazebo/trunk/server/physics/Geom.cc
===================================================================
--- code/gazebo/trunk/server/physics/Geom.cc    2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/physics/Geom.cc    2008-09-10 03:51:13 UTC (rev 
7018)
@@ -517,3 +517,32 @@
   this->body->UpdateCoM();
 }
 
+////////////////////////////////////////////////////////////////////////////////
+/// Get the number of visuals
+unsigned int Geom::GetVisualCount() const
+{
+  return this->visuals.size();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get a visual
+OgreVisual *Geom::GetVisual(unsigned int index) const
+{
+  if (index < this->visuals.size())
+    return this->visuals[index];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Get a visual
+OgreVisual *Geom::GetVisualById(int id) const
+{
+  std::vector<OgreVisual*>::const_iterator iter;
+
+  for (iter = this->visuals.begin(); iter != this->visuals.end(); iter++)
+  {
+    if ( (*iter)->GetId() == id)
+      return *iter;
+  }
+
+  return NULL;
+}

Modified: code/gazebo/trunk/server/physics/Geom.hh
===================================================================
--- code/gazebo/trunk/server/physics/Geom.hh    2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/physics/Geom.hh    2008-09-10 03:51:13 UTC (rev 
7018)
@@ -143,6 +143,15 @@
     /// \brief Set the mass
     public: void SetMass(const double &mass);
 
+    /// \brief Get the number of visuals
+    public: unsigned int GetVisualCount() const;
+
+    /// \brief Get a visual
+    public: OgreVisual *GetVisual(unsigned int index) const; 
+
+    /// \brief Get a visual by id
+    public: OgreVisual *GetVisualById( int id ) const;
+
     ///  Contact parameters
     public: ContactParams *contact; 
   

Modified: code/gazebo/trunk/server/physics/Joint.cc
===================================================================
--- code/gazebo/trunk/server/physics/Joint.cc   2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/physics/Joint.cc   2008-09-10 03:51:13 UTC (rev 
7018)
@@ -36,12 +36,12 @@
 //////////////////////////////////////////////////////////////////////////////
 // Constructor
 Joint::Joint()
+  : Common()
 {
   this->visual = NULL;
   this->model = NULL;
 
   Param::Begin(&this->parameters);
-  this->nameP = new ParamT<std::string>("name","",1);
   this->erpP = new ParamT<double>("erp",0.4,0);
   this->cfmP = new ParamT<double>("cfm",10e-3,0);
   this->suspensionCfmP = new ParamT<double>("suspensionCfm",0.0,0);
@@ -59,7 +59,6 @@
 Joint::~Joint()
 {
   dJointDestroy( this->jointId );
-  delete this->nameP;
   delete this->erpP;
   delete this->cfmP;
   delete this->suspensionCfmP;

Modified: code/gazebo/trunk/server/physics/Joint.hh
===================================================================
--- code/gazebo/trunk/server/physics/Joint.hh   2008-09-09 23:48:33 UTC (rev 
7017)
+++ code/gazebo/trunk/server/physics/Joint.hh   2008-09-10 03:51:13 UTC (rev 
7018)
@@ -29,6 +29,7 @@
 
 #include <ode/ode.h>
 
+#include "Common.hh"
 #include "Param.hh"
 #include "Vector3.hh"
 
@@ -45,7 +46,7 @@
   class OgreVisual; 
 
   /// \brief Base class for all joints
-  class Joint
+  class Joint : public Common
   {
     /// \brief Type of joint
     public: enum Type {SLIDER, HINGE, HINGE2, BALL, UNIVERSAL};
@@ -153,7 +154,6 @@
     private: Body *body2;
 
     /// Name of this joint
-    private: ParamT<std::string> *nameP;
     private: ParamT<double> *erpP;
     private: ParamT<double> *cfmP;
     private: ParamT<double> *suspensionCfmP;
@@ -166,8 +166,6 @@
     /// Feedback data for this joint
     private: dJointFeedback *feedback;
 
-    protected: std::vector<Param*> parameters;
-
     private: OgreVisual *visual;
 
     private: Model *model;

Modified: code/gazebo/trunk/server/rendering/OgreVisual.cc
===================================================================
--- code/gazebo/trunk/server/rendering/OgreVisual.cc    2008-09-09 23:48:33 UTC 
(rev 7017)
+++ code/gazebo/trunk/server/rendering/OgreVisual.cc    2008-09-10 03:51:13 UTC 
(rev 7018)
@@ -39,6 +39,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 // Constructor
 OgreVisual::OgreVisual(OgreVisual *node, Entity *owner)
+  : Common()
 {
   std::ostringstream stream;
 
@@ -60,10 +61,19 @@
 
   Param::Begin(&this->parameters);
   this->xyzP = new ParamT<Vector3>("xyz", Vector3(0,0,0), 0);
+  this->xyzP->Callback( &OgreVisual::SetPosition, this );
+
   this->rpyP = new ParamT<Quatern>("rpy", Quatern(1,0,0,0), 0);
+  this->rpyP->Callback( &OgreVisual::SetRotation, this );
+
   this->meshNameP = new ParamT<std::string>("mesh","",1);
+
   this->materialNameP = new ParamT<std::string>("material",std::string(),0);
+  this->materialNameP->Callback( &OgreVisual::SetMaterial, this );
+
   this->castShadowsP = new ParamT<bool>("castShadows",true,0);
+  this->castShadowsP->Callback( &OgreVisual::SetCastShadows, this );
+
   this->scaleP = new ParamT<Vector3>("scale", Vector3(1,1,1), 0);
   this->sizeP = new ParamT<Vector3>("size", Vector3(1,1,1), 0);
   Param::End();
@@ -277,7 +287,10 @@
 
   // Clone the material. This will allow us to change the look of each geom
   // individually.
-  this->myMaterial = this->origMaterial->clone(myMaterialName);
+  if (Ogre::MaterialManager::getSingleton().resourceExists(myMaterialName))
+    this->myMaterial = 
(Ogre::MaterialPtr)(Ogre::MaterialManager::getSingleton().getByName(myMaterialName));
+  else
+    this->myMaterial = this->origMaterial->clone(myMaterialName);
 
   Ogre::Material::TechniqueIterator techniqueIt = 
this->myMaterial->getTechniqueIterator ();
 
@@ -421,7 +434,7 @@
 
 
////////////////////////////////////////////////////////////////////////////////
 /// Set whether the visual should cast shadows
-void OgreVisual::SetCastShadows(bool shadows)
+void OgreVisual::SetCastShadows(const bool &shadows)
 {
   for (int i=0; i < this->sceneNode->numAttachedObjects(); i++)
   {
@@ -566,5 +579,3 @@
   if (node)
     node->showBoundingBox(value);
 }
-
-

Modified: code/gazebo/trunk/server/rendering/OgreVisual.hh
===================================================================
--- code/gazebo/trunk/server/rendering/OgreVisual.hh    2008-09-09 23:48:33 UTC 
(rev 7017)
+++ code/gazebo/trunk/server/rendering/OgreVisual.hh    2008-09-10 03:51:13 UTC 
(rev 7018)
@@ -33,6 +33,7 @@
 #include "Pose3d.hh"
 #include "Quatern.hh"
 #include "Vector3.hh"
+#include "Common.hh"
 #include "Param.hh"
 
 namespace gazebo
@@ -42,7 +43,7 @@
   class Entity;
 
   /// \brief Ogre Visual Object
-  class OgreVisual : public Ogre::UserDefinedObject
+  class OgreVisual : public Common, public Ogre::UserDefinedObject
   {
     /// \brief Constructor
     public: OgreVisual (OgreVisual *node, Entity *owner = NULL);
@@ -82,7 +83,7 @@
     public: void SetHighlight( bool highlight);
 
     /// \brief Set whether the visual should cast shadows
-    public: void SetCastShadows(bool shadows);
+    public: void SetCastShadows(const bool &shadows);
 
     /// \brief Set whether the visual is visible
     /// \param visible set this node visible
@@ -123,7 +124,6 @@
     //         user selection
     public: void ShowSelectionBox( bool value );
 
-
     private: Ogre::MaterialPtr origMaterial;
     private: Ogre::MaterialPtr myMaterial;
     private: Ogre::SceneBlendType sceneBlendType;
@@ -147,7 +147,6 @@
     private: ParamT<bool> *castShadowsP;
     private: ParamT<Vector3> *sizeP;
     private: ParamT<Vector3> *scaleP;
-    private: std::vector<Param*> parameters;
   };
 }
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Playerstage-commit mailing list
Playerstage-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to