예제 #1
0
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 );
			}
		}
	}
}
예제 #2
0
 virtual bool pre(const scene::INodePtr& node)
 {
   if(Node_isPrimitive(node) && m_index-- == 0)
   {
     m_path.push(node);
   }
   return false;
 }
예제 #3
0
	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;
}
예제 #5
0
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);
		}
	}
}