1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include "Planes.h"
#include "math/Plane3.h"
#include <set>
#include <functional>
#include "selection/SelectedPlaneSet.h"
namespace selection
{
namespace algorithm
{
void testSelectPlanes(Selector& selector, SelectionTest& test, const PlaneCallback& selectedPlaneCallback)
{
GlobalSelectionSystem().foreachSelected([&](const scene::INodePtr& node)
{
// Skip hidden nodes
if (!node->visible()) return;
PlaneSelectablePtr planeSelectable = Node_getPlaneSelectable(node);
if (planeSelectable)
{
planeSelectable->selectPlanes(selector, test, selectedPlaneCallback);
}
});
}
void testSelectReversedPlanes(Selector& selector, const SelectedPlanes& selectedPlanes)
{
GlobalSelectionSystem().foreachSelected([&](const scene::INodePtr& node)
{
// Skip hidden nodes
if (!node->visible()) return;
PlaneSelectablePtr planeSelectable = Node_getPlaneSelectable(node);
if (planeSelectable)
{
planeSelectable->selectReversedPlanes(selector, selectedPlanes);
}
});
}
bool testSelectPlanes(Selector& selector, SelectionTest& test)
{
SelectedPlaneSet selectedPlanes;
testSelectPlanes(selector, test, std::bind(&SelectedPlaneSet::insert, &selectedPlanes, std::placeholders::_1));
testSelectReversedPlanes(selector, selectedPlanes);
return !selectedPlanes.empty();
}
} // namespace
} // namespace
|