本文整理汇总了C++中scene::INodePtr::getParent方法的典型用法代码示例。如果您正苦于以下问题:C++ INodePtr::getParent方法的具体用法?C++ INodePtr::getParent怎么用?C++ INodePtr::getParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scene::INodePtr
的用法示例。
在下文中一共展示了INodePtr::getParent方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pre
bool pre(const scene::INodePtr& node) {
// Don't traverse hidden nodes
if (!node->visible()) {
return false;
}
SelectablePtr selectable = Node_getSelectable(node);
// ignore worldspawn
Entity* entity = Node_getEntity(node);
if (entity != NULL) {
if (entity->getKeyValue("classname") == "worldspawn") {
return true;
}
}
bool selected = false;
if (selectable != NULL && node->getParent() != NULL && !node->isRoot()) {
for (std::size_t i = 0; i < _count; ++i) {
// Check if the selectable passes the AABB test
if (policy.evaluate(_aabbs[i], node)) {
selectable->setSelected(true);
selected = true;
break;
}
}
}
// Only traverse the children of this node, if the node itself couldn't be selected
return !selected;
}
示例2: visit
/* SelectionSystem::Visitor implementation */
void visit(const scene::INodePtr& node) const
{
// Check for selected nodes whose parent is not NULL and are not root
if (node->getParent() != NULL && !node->isRoot())
{
// Found a candidate
_eraseList.insert(node);
}
}
示例3: post
void post(const scene::INodePtr& node)
{
if (node->isRoot())
{
return;
}
if (Node_isSelected(node))
{
// Clone the current node
scene::INodePtr clone = map::Node_Clone(node);
// Add the cloned node and its parent to the list
_cloned.insert(Map::value_type(clone, node->getParent()));
// Insert this node in the root
_cloneRoot->addChildNode(clone);
}
}
示例4: post
void post(const scene::INodePtr& node) {
if (!node->visible()) {
return;
}
Brush* brush = Node_getBrush(node);
if (brush != NULL && !Node_isSelected(node))
{
BrushNodePtr brushNode = std::dynamic_pointer_cast<BrushNode>(node);
// Get the parent of this brush
scene::INodePtr parent = node->getParent();
assert(parent != NULL); // parent should not be NULL
BrushPtrVector buffer[2];
std::size_t swap = 0;
BrushNodePtr original = std::dynamic_pointer_cast<BrushNode>(brushNode->clone());
//Brush* original = new Brush(*brush);
buffer[swap].push_back(original);
// Iterate over all selected brushes
for (BrushPtrVector::const_iterator i(_brushlist.begin()); i != _brushlist.end(); ++i)
{
for (BrushPtrVector::iterator j(buffer[swap].begin());
j != buffer[swap].end(); ++j)
{
if (Brush_subtract(*j, (*i)->getBrush(), buffer[1 - swap]))
{
// greebo: Delete not necessary, nodes get deleted automatically by clear() below
// delete (*j);
}
else
{
buffer[1 - swap].push_back(*j);
}
}
buffer[swap].clear();
swap = 1 - swap;
}
BrushPtrVector& out = buffer[swap];
if (out.size() == 1 && out.back() == original)
{
// greebo: shared_ptr is taking care of this
//delete original;
}
else
{
_before++;
for (BrushPtrVector::const_iterator i = out.begin(); i != out.end(); ++i)
{
_after++;
scene::INodePtr newBrush = GlobalBrushCreator().createBrush();
parent->addChildNode(newBrush);
// Move the new Brush to the same layers as the source node
newBrush->assignToLayers(node->getLayers());
(*i)->getBrush().removeEmptyFaces();
ASSERT_MESSAGE(!(*i)->getBrush().empty(), "brush left with no faces after subtract");
Node_getBrush(newBrush)->copy((*i)->getBrush());
}
_deleteList.push_back(node);
}
}
}