Reverted change of Node::ParentList from being a vector<Node*> back to a vector<Group*>

This commit is contained in:
Robert Osfield
2014-06-03 09:52:55 +00:00
parent 3dde165f14
commit 333a16a88d
6 changed files with 13 additions and 29 deletions

View File

@@ -104,8 +104,7 @@ public:
pitr != parents.end();
++pitr)
{
osg::Node* parent = *pitr;
parent->removeChild(node);
(*pitr)->removeChild(node);
}
}
}

View File

@@ -334,7 +334,7 @@ public:
// particle effect can be inserted into this.
osg::ref_ptr<osg::Node> hitNode = hit.nodePath.back();
osg::Node::ParentList parents = hitNode->getParents();
osg::Node* insertGroup = 0;
osg::Group* insertGroup = 0;
unsigned int numGroupsFound = 0;
for(osg::Node::ParentList::iterator itr=parents.begin();
itr!=parents.end();

View File

@@ -166,7 +166,7 @@ class OSG_EXPORT Node : public Object
virtual void traverse(NodeVisitor& /*nv*/) {}
/** A vector of osg::Group pointers which is used to store the parent(s) of node.*/
typedef std::vector<Node*> ParentList;
typedef std::vector<Group*> ParentList;
/** Get the parent list of node. */
inline const ParentList& getParents() const { return _parents; }
@@ -175,14 +175,14 @@ class OSG_EXPORT Node : public Object
* prevent modification of the parent list.*/
inline ParentList getParents() { return _parents; }
inline Node* getParent(unsigned int i) { return _parents[i]; }
inline Group* getParent(unsigned int i) { return _parents[i]; }
/**
* Get a single const parent of node.
* @param i index of the parent to get.
* @return the parent i.
*/
inline const Node* getParent(unsigned int i) const { return _parents[i]; }
inline const Group* getParent(unsigned int i) const { return _parents[i]; }
/**
* Get the number of parents of node.
@@ -192,20 +192,6 @@ class OSG_EXPORT Node : public Object
/** Provide interface for Composite like Group nodes to implement.*/
virtual unsigned int getNumChildren() const { return 0; }
/** Provide interface for Composite like Group nodes to implement.*/
virtual bool addChild( Node* /*child*/ ) { return false; }
/** Provide interface for Composite like Group nodes to implement.*/
virtual bool removeChild( Node* /*child*/ ) { return false; }
/** Provide interface for Composite like Group nodes to implement.*/
virtual bool replaceChild( Node* /*origChild*/, Node* /*newChild*/ ) { return false; }
/** Get the list of node paths parent paths.
* The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specifed node. */
NodePathList getParentalNodePaths(osg::Node* haltTraversalAtNode=0) const;
@@ -483,8 +469,8 @@ class OSG_EXPORT Node : public Object
mutable BoundingSphere _boundingSphere;
mutable bool _boundingSphereComputed;
void addParent(osg::Node* node);
void removeParent(osg::Node* node);
void addParent(osg::Group* parent);
void removeParent(osg::Group* parent);
ParentList _parents;
friend class osg::Group;

View File

@@ -95,18 +95,18 @@ Node::~Node()
setStateSet(0);
}
void Node::addParent(osg::Node* node)
void Node::addParent(osg::Group* parent)
{
OpenThreads::ScopedPointerLock<OpenThreads::Mutex> lock(getRefMutex());
_parents.push_back(node);
_parents.push_back(parent);
}
void Node::removeParent(osg::Node* node)
void Node::removeParent(osg::Group* parent)
{
OpenThreads::ScopedPointerLock<OpenThreads::Mutex> lock(getRefMutex());
ParentList::iterator pitr = std::find(_parents.begin(),_parents.end(),node);
ParentList::iterator pitr = std::find(_parents.begin(), _parents.end(), parent);
if (pitr!=_parents.end()) _parents.erase(pitr);
}

View File

@@ -316,8 +316,7 @@ void TXPParser::removeEmptyGroups()
osg::Node::ParentList parents = node->getParents();
for (unsigned int j = 0; j < parents.size(); j++)
{
osg::Node* parent = parents[j];
if (parent) parent->removeChild(node);
parents[j]->removeChild(node);
}
}
}

View File

@@ -1387,7 +1387,7 @@ void Optimizer::RemoveEmptyNodesVisitor::removeEmptyNodes()
pitr!=parents.end();
++pitr)
{
osg::Node* parent = *pitr;
osg::Group* parent = *pitr;
if (!dynamic_cast<osg::Sequence*>(parent) &&
!dynamic_cast<osg::Switch*>(parent) &&
strcmp(parent->className(),"MultiSwitch")!=0)