From Romain Charbit, "added a getConnectedSelections(Dragger&) method, so we can get which selections are connected to a dragger without make our own multimap, copying the existing _draggerSelectionMap (which is protected with no accessors) ."
This commit is contained in:
parent
95db1ec208
commit
c7b981f0d6
@ -47,6 +47,9 @@ class OSGMANIPULATOR_EXPORT CommandManager : public osg::Referenced
|
||||
/** Add all selections connected to the dragger to the command. */
|
||||
void addSelectionsToCommand(MotionCommand& command, Dragger& dragger);
|
||||
|
||||
/** Returns the selections connected to the dragger */
|
||||
std::list< osg::ref_ptr<Selection> > getConnectedSelections(Dragger& dragger);
|
||||
|
||||
protected:
|
||||
|
||||
virtual ~CommandManager();
|
||||
|
@ -122,3 +122,24 @@ void CommandManager::addSelectionsToCommand(MotionCommand& command, Dragger& dra
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::list< osg::ref_ptr<Selection> > CommandManager::getConnectedSelections(Dragger& dragger)
|
||||
{
|
||||
std::list< osg::ref_ptr<Selection> > selections = std::list< osg::ref_ptr<Selection> >();
|
||||
|
||||
//Test if the dragger is in the list
|
||||
if (_draggerSelectionMap.count(&dragger) > 0)
|
||||
{
|
||||
//Get the iterator range on key 'dragger'
|
||||
std::pair<DraggerSelectionMap::iterator,DraggerSelectionMap::iterator> draggerRange = _draggerSelectionMap.equal_range(&dragger);
|
||||
for (DraggerSelectionMap::iterator selectionsIterator = draggerRange.first;
|
||||
selectionsIterator != draggerRange.second;
|
||||
++selectionsIterator)
|
||||
{
|
||||
//Push in the list all selections connected with the dragger
|
||||
selections.push_back((*selectionsIterator).second);
|
||||
}
|
||||
}
|
||||
return selections;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user