From 533710d1a3f501e203daae5467a8b9fed46eb08e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Mon, 18 May 2009 07:13:29 +0000 Subject: [PATCH] Dennis: Added-bounding-box-node-to-object-data git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@6113 383ad7c9-94d9-4d36-a494-682f7c89f535 --- common/BaseObjectData.cc | 23 +++++++++++++++++++---- common/BaseObjectData.hh | 9 +++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/common/BaseObjectData.cc b/common/BaseObjectData.cc index 883fce65..ad4de516 100644 --- a/common/BaseObjectData.cc +++ b/common/BaseObjectData.cc @@ -55,7 +55,8 @@ BaseObjectData::BaseObjectData(const BaseObjectData& _object) rootNode_(_object.rootNode_), separatorNode_(0), manipulatorNode_(0), - materialNode_(0) + materialNode_(0), + boundingBoxNode_(0) { // We have to create our own visualization nodes as we are a new object init(); @@ -68,7 +69,8 @@ BaseObjectData::BaseObjectData( SeparatorNode* _rootNode ) : rootNode_(_rootNode), separatorNode_(0), manipulatorNode_(0), - materialNode_(0) + materialNode_(0), + boundingBoxNode_(0) { init(); } @@ -91,7 +93,7 @@ void BaseObjectData::cleanup() { separatorNode_ = 0; manipulatorNode_ = 0; materialNode_ = 0; - + boundingBoxNode_ = 0; additionalNodes_.clear(); } @@ -116,8 +118,13 @@ void BaseObjectData::init() { } else std::cerr << "Manipulator Node already exists. this should not happen!" << std::endl; + if ( boundingBoxNode_ == 0) + { + boundingBoxNode_ = new BoundingBoxNode(manipulatorNode(), "New Bounding Box"); + boundingBoxNode_->set_status( ACG::SceneGraph::BaseNode::HideNode ); + } if ( materialNode_ == 0 ) - materialNode_ = new MaterialNode(manipulatorNode(), "New Material"); + materialNode_ = new MaterialNode(boundingBoxNode(), "New Material"); } @@ -140,6 +147,9 @@ void BaseObjectData::setName( QString _name ) { nodename = std::string("ManipulatorNode for object " + _name.toUtf8()); manipulatorNode_->name( nodename ); + nodename = std::string("BoundingBoxNode for object " + _name.toUtf8()); + boundingBoxNode_->name( nodename ); + nodename = std::string(_name.toUtf8() + "'s Material" ); materialNode_->name( nodename ); } @@ -197,6 +207,11 @@ MaterialNode* BaseObjectData::materialNode() { return materialNode_; } +BoundingBoxNode* BaseObjectData::boundingBoxNode() { + return boundingBoxNode_; +} + + void BaseObjectData::setBaseColor(ACG::Vec4f _color) { materialNode_->set_base_color(_color); } diff --git a/common/BaseObjectData.hh b/common/BaseObjectData.hh index 0226870c..72f10871 100644 --- a/common/BaseObjectData.hh +++ b/common/BaseObjectData.hh @@ -58,6 +58,7 @@ #include #include #include +#include #include //== TYPEDEFS ================================================================= @@ -71,6 +72,8 @@ typedef ACG::SceneGraph::QtTranslationManipulatorNode QtTranslationManipulat typedef ACG::SceneGraph::SeparatorNode SeparatorNode; /// Base Node typedef ACG::SceneGraph::BaseNode BaseNode; +/// Bounding box Node +typedef ACG::SceneGraph::BoundingBoxNode BoundingBoxNode; //== CLASS DEFINITION ========================================================= @@ -183,6 +186,9 @@ class DLLEXPORT BaseObjectData : public BaseObject /// get a pointer to the materialnode MaterialNode* materialNode(); + /// get a pointer to the bounding box node + BoundingBoxNode* boundingBoxNode(); + /// Set the color of the object void setBaseColor(ACG::Vec4f _color); @@ -212,6 +218,9 @@ class DLLEXPORT BaseObjectData : public BaseObject /// Scenegraph Material Node for the object MaterialNode* materialNode_; + /// Bounding box node for the object + BoundingBoxNode * boundingBoxNode_; + /** @} */ -- GitLab