void post( const scene::Path& path, scene::Instance& instance ) const { Selectable *selectable = Instance_getSelectable( instance ); if ( selectable && selectable->isSelected() ) { Entity* entity = Node_getEntity( path.top() ); if ( entity == 0 && Node_isPrimitive( path.top() ) ) { NodeSmartReference child( path.top().get() ); NodeSmartReference parent( path.parent().get() ); if ( path.size() >= 3 && parent != worldspawn ) { NodeSmartReference parentparent( path[path.size() - 3].get() ); Node_getTraversable( parent )->erase( child ); Node_getTraversable( group )->insert( child ); if ( Node_getTraversable( parent )->empty() ) { //deleteme.push(DeletionPair(parentparent, parent)); Node_getTraversable( parentparent )->erase( parent ); } } else { Node_getTraversable( parent )->erase( child ); Node_getTraversable( group )->insert( child ); } } } }
virtual bool pre(const scene::INodePtr& node) { if(Node_isPrimitive(node) && m_index-- == 0) { m_path.push(node); } return false; }
bool pre(const scene::INodePtr& node) { if (Node_isPrimitive(node)) { // Have we found the node? if (_node == node) { // Yes, found, set needle to NULL _node = scene::INodePtr(); } // As long as the needle is non-NULL, increment the counter if (_node != NULL) { ++_count; } } return true; }
LayerUsageBreakdown LayerUsageBreakdown::CreateFromScene(bool includeHidden) { LayerUsageBreakdown bd; InitialiseVector(bd); GlobalSceneGraph().foreachNode([&](const scene::INodePtr& node) { // Filter out any hidden nodes, unless we want them if (!includeHidden && !node->visible()) return false; // Consider only entities and primitives if (!Node_isPrimitive(node) && !Node_isEntity(node)) return true; addNodeMapping(bd, node); return true; }); return bd; }
void GetSelectionIndex(std::size_t& ent, std::size_t& brush) { if (GlobalSelectionSystem().countSelected() != 0) { scene::INodePtr node = GlobalSelectionSystem().ultimateSelected(); scene::INodePtr parent = node->getParent(); if (Node_isEntity(node)) { // Selection is an entity, find its index EntityFindIndexWalker walker(node, ent); Node_traverseSubgraph(GlobalSceneGraph().root(), walker); } else if (Node_isPrimitive(node)) { // Node is a primitive, find parent entity and child index EntityFindIndexWalker walker(parent, ent); Node_traverseSubgraph(GlobalSceneGraph().root(), walker); PrimitiveFindIndexWalker brushWalker(node, brush); Node_traverseSubgraph(parent, brushWalker); } } }