Revision: 8418
http://playerstage.svn.sourceforge.net/playerstage/?rev=8418&view=rev
Author: natepak
Date: 2009-11-18 18:17:29 +0000 (Wed, 18 Nov 2009)
Log Message:
-----------
Fixed static visualizations
Modified Paths:
--------------
code/gazebo/trunk/server/Entity.cc
code/gazebo/trunk/server/Model.cc
code/gazebo/trunk/server/Simulator.cc
code/gazebo/trunk/server/Simulator.hh
code/gazebo/trunk/server/controllers/ControllerFactory.cc
code/gazebo/trunk/server/physics/Geom.cc
code/gazebo/trunk/server/rendering/OgreAdaptor.cc
code/gazebo/trunk/server/rendering/OgreAdaptor.hh
code/gazebo/trunk/server/rendering/OgreVisual.cc
Modified: code/gazebo/trunk/server/Entity.cc
===================================================================
--- code/gazebo/trunk/server/Entity.cc 2009-11-18 00:51:19 UTC (rev 8417)
+++ code/gazebo/trunk/server/Entity.cc 2009-11-18 18:17:29 UTC (rev 8418)
@@ -321,8 +321,11 @@
// Handle a change of pose
void Entity::PoseChange(bool notify)
{
+ if (Simulator::Instance()->GetState() == Simulator::RUN)
+ this->visualNode->SetDirty(true, this->relativePose);
+ else
+ this->visualNode->SetPose(this->relativePose);
- this->visualNode->SetDirty(true, this->relativePose);
if (notify)
{
this->OnPoseChange();
Modified: code/gazebo/trunk/server/Model.cc
===================================================================
--- code/gazebo/trunk/server/Model.cc 2009-11-18 00:51:19 UTC (rev 8417)
+++ code/gazebo/trunk/server/Model.cc 2009-11-18 18:17:29 UTC (rev 8418)
@@ -176,7 +176,6 @@
{
// Delete the existing one (this should only be reached when called
// via the factory interface).
- printf("Queuing duplicate model %s (%p) for deletion\n",
scopedName.c_str(), dup);
World::Instance()->DeleteEntity(scopedName.c_str());
}
}
@@ -203,7 +202,9 @@
pose.rot = **this->rpyP;
if (this->IsStatic())
+ {
this->SetRelativePose( pose );
+ }
if (this->type == "physical")
this->LoadPhysical(node);
Modified: code/gazebo/trunk/server/Simulator.cc
===================================================================
--- code/gazebo/trunk/server/Simulator.cc 2009-11-18 00:51:19 UTC (rev
8417)
+++ code/gazebo/trunk/server/Simulator.cc 2009-11-18 18:17:29 UTC (rev
8418)
@@ -131,6 +131,8 @@
/// Any error that reach this level must make the simulator exit
void Simulator::Load(const std::string &worldFileName, unsigned int serverId )
{
+ this->state = LOAD;
+
if (loaded)
{
this->Close();
@@ -234,12 +236,15 @@
this->loaded=true;
+ //OgreAdaptor::Instance()->PrintSceneGraph();
}
////////////////////////////////////////////////////////////////////////////////
/// Initialize the simulation
void Simulator::Init()
{
+ this->state = INIT;
+
//Initialize the world
try
{
@@ -325,6 +330,8 @@
/// Main simulation loop, when this loop ends the simulation finish
void Simulator::MainLoop()
{
+ this->state = RUN;
+
double currTime = 0;
double lastTime = 0;
double freq = 80.0;
@@ -725,4 +732,9 @@
return this->mutex;
}
-
+////////////////////////////////////////////////////////////////////////////////
+/// Get the state of the simulation
+Simulator::State Simulator::GetState() const
+{
+ return this->state;
+}
Modified: code/gazebo/trunk/server/Simulator.hh
===================================================================
--- code/gazebo/trunk/server/Simulator.hh 2009-11-18 00:51:19 UTC (rev
8417)
+++ code/gazebo/trunk/server/Simulator.hh 2009-11-18 18:17:29 UTC (rev
8418)
@@ -62,6 +62,8 @@
*/
class Simulator : public SingletonT<Simulator>
{
+ public: enum State {LOAD, INIT, RUN};
+
/// \brief Private constructor
private: Simulator();
@@ -167,6 +169,9 @@
/// \brief Get the simulator mutex
public:boost::recursive_mutex *GetMRMutex();
+ /// \brief Get the state of the simulation
+ public: State GetState() const;
+
/// \brief Function to run gui. Used by guiThread
private: void PhysicsLoop();
@@ -230,6 +235,8 @@
private: boost::recursive_mutex *mutex;
+ private: State state;
+
//Singleton implementation
private: friend class DestroyerT<Simulator>;
private: friend class SingletonT<Simulator>;
Modified: code/gazebo/trunk/server/controllers/ControllerFactory.cc
===================================================================
--- code/gazebo/trunk/server/controllers/ControllerFactory.cc 2009-11-18
00:51:19 UTC (rev 8417)
+++ code/gazebo/trunk/server/controllers/ControllerFactory.cc 2009-11-18
18:17:29 UTC (rev 8418)
@@ -73,7 +73,8 @@
void ControllerFactory::LoadPlugin(const std::string &plugin, const
std::string &classname)
{
#ifdef HAVE_LTDL
-
+
+ std::cout << "Load Plugin[" << plugin << "] Classname[" << classname <<
"]\n";
static bool init_done = false;
if (!init_done)
@@ -82,7 +83,8 @@
if (errors)
{
std::ostringstream stream;
- stream << "Error(s) initializing dynamic loader (" <<
errors << ", " << lt_dlerror() << ")";
+ stream << "Error(s) initializing dynamic loader ("
+ << errors << ", " << lt_dlerror() << ")";
gzthrow(stream.str());
}
else
Modified: code/gazebo/trunk/server/physics/Geom.cc
===================================================================
--- code/gazebo/trunk/server/physics/Geom.cc 2009-11-18 00:51:19 UTC (rev
8417)
+++ code/gazebo/trunk/server/physics/Geom.cc 2009-11-18 18:17:29 UTC (rev
8418)
@@ -132,11 +132,12 @@
if (visual)
{
visual->Load(childNode);
- visual->SetIgnorePoseUpdates(true);
+ //visual->SetIgnorePoseUpdates(true);
this->visuals.push_back(visual);
visual->SetCastShadows(true);
}
+
if (this->IsStatic())
visual->MakeStatic();
Modified: code/gazebo/trunk/server/rendering/OgreAdaptor.cc
===================================================================
--- code/gazebo/trunk/server/rendering/OgreAdaptor.cc 2009-11-18 00:51:19 UTC
(rev 8417)
+++ code/gazebo/trunk/server/rendering/OgreAdaptor.cc 2009-11-18 18:17:29 UTC
(rev 8418)
@@ -537,3 +537,26 @@
{
this->cameras.push_back( cam );
}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Print scene graph
+void OgreAdaptor::PrintSceneGraph()
+{
+ this->PrintSceneGraphHelper("", this->sceneMgr->getRootSceneNode());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Print scene graph
+void OgreAdaptor::PrintSceneGraphHelper(std::string prefix,
+ Ogre::Node *node)
+{
+ std::cout << prefix << node->getName() << std::endl;
+
+ prefix += " ";
+ for (unsigned int i=0; i < node->numChildren(); i++)
+ {
+ this->PrintSceneGraphHelper( prefix, node->getChild(i) );
+ }
+}
+
+
Modified: code/gazebo/trunk/server/rendering/OgreAdaptor.hh
===================================================================
--- code/gazebo/trunk/server/rendering/OgreAdaptor.hh 2009-11-18 00:51:19 UTC
(rev 8417)
+++ code/gazebo/trunk/server/rendering/OgreAdaptor.hh 2009-11-18 18:17:29 UTC
(rev 8418)
@@ -108,6 +108,12 @@
/// \brief Register a user camera
public: void RegisterCamera( OgreCamera *cam );
+ public: void PrintSceneGraph();
+
+ /// \brief Print scene graph
+ private: void PrintSceneGraphHelper(std::string prefix,
+ Ogre::Node *node);
+
private: void LoadPlugins();
private: void SetupResources();
private: void SetupRenderSystem();
Modified: code/gazebo/trunk/server/rendering/OgreVisual.cc
===================================================================
--- code/gazebo/trunk/server/rendering/OgreVisual.cc 2009-11-18 00:51:19 UTC
(rev 8417)
+++ code/gazebo/trunk/server/rendering/OgreVisual.cc 2009-11-18 18:17:29 UTC
(rev 8418)
@@ -351,14 +351,22 @@
if (!this->staticGeom)
this->staticGeom =
OgreAdaptor::Instance()->sceneMgr->createStaticGeometry(this->sceneNode->getName()
+ "_Static");
- // Detach the scene node from the parent. Prevents double rendering
- this->sceneNode->getParent()->removeChild(this->sceneNode);
+ //this->staticGeom->setRegionDimensions(Ogre::Vector3(1,1,1));
+ //this->staticGeom->setOrigin(Ogre::Vector3(2,2,1));
+ //this->sceneNode->setVisible(true);
+
// Add the scene node to the static geometry
this->staticGeom->addSceneNode(this->sceneNode);
// Build the static geometry
this->staticGeom->build();
+
+ // Detach the scene node from the parent. Prevents double rendering
+ this->sceneNode->setVisible(false);
+ /*if (this->sceneNode->getParent())
+ this->sceneNode->getParent()->removeChild(this->sceneNode);
+ */
}
////////////////////////////////////////////////////////////////////////////////
@@ -668,6 +676,17 @@
return;
this->sceneNode->setPosition(pos.x, pos.y, pos.z);
+
+ if (this->IsStatic())
+ {
+ //this->sceneNode->setParent( this->owner->GetVisu
+ //this->staticGeom->reset();
+ //this->MakeStatic();
+ }
+ else
+ {
+ //std::cout << "Dynamic SceneNodePos[" <<
this->sceneNode->_getDerivedPosition() << "] [" << pos << "]\n";
+ }
}
////////////////////////////////////////////////////////////////////////////////
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit