void AddMetaNodeExecutor::execute_server() { int count, id; QString name, edgeName; float x, y, z; *stream >> name; Data::Graph* currentGraph = Manager::GraphManager::getInstance()->getActiveGraph(); QMap<qlonglong, osg::ref_ptr<Data::Node> >* nodes = currentGraph -> getNodes(); *stream >> x >> y >> z; osg::ref_ptr<Data::Node> metaNode = currentGraph->addNode( name, currentGraph->getNodeMetaType(), osg::Vec3( x,y,z ) ); *stream >> edgeName; *stream >> count; QLinkedList<osg::ref_ptr<Data::Node> >* selectedNodes = new QLinkedList<osg::ref_ptr<Data::Node> >(); for ( int i = 0; i < count; i++ ) { *stream >> id; if ( nodes->contains( id ) ) { currentGraph->addEdge( edgeName, *nodes->find( id ), metaNode, currentGraph->getEdgeMetaType(), true ); selectedNodes->append( *nodes->find( id ) ); } } Server* server = Server::getInstance(); server->sendAddMetaNode( metaNode,selectedNodes,edgeName,osg::Vec3( x,y,z ) ); if ( ( ( QOSG::CoreWindow* )server->getCoreWindowReference() )->playing() ) { server->getLayoutThread()->play(); } }
void CoreWindow::addMetaNode() { Data::Graph * currentGraph = Manager::GraphManager::getInstance()->getActiveGraph(); if (currentGraph != NULL) { osg::Vec3 position = viewerWidget->getPickHandler()->getSelectionCenter(true); osg::ref_ptr<Data::Node> metaNode = currentGraph->addNode("metaNode", currentGraph->getNodeMetaType(), position); QLinkedList<osg::ref_ptr<Data::Node> > * selectedNodes = viewerWidget->getPickHandler()->getSelectedNodes(); QLinkedList<osg::ref_ptr<Data::Node> >::const_iterator i = selectedNodes->constBegin(); while (i != selectedNodes->constEnd()) { Data::Edge * e = currentGraph->addEdge("metaEdge", (*i), metaNode, currentGraph->getEdgeMetaType(), true); e->setCamera(viewerWidget->getCamera()); ++i; } if (isPlaying) layout->play(); } }
void AddMetaNodeExecutor::execute_client() { int count, metaNodeId, id_edge, id_node; QString name, edgeName; float x, y, z; *stream >> metaNodeId >> name; Data::Graph * currentGraph = Manager::GraphManager::getInstance()->getActiveGraph(); QMap<qlonglong, osg::ref_ptr<Data::Node> >* nodes = currentGraph -> getNodes(); *stream >> x >> y >> z; osg::ref_ptr<Data::Node> metaNode = currentGraph->addNode(metaNodeId, name, currentGraph->getNodeMetaType(), osg::Vec3(x,y,z)); *stream >> edgeName; *stream >> count; for (int i = 0; i < count; i++) { *stream >> id_edge >> id_node; if (nodes->contains(id_node)) { currentGraph->addEdge(id_edge, edgeName, *nodes->find(id_node), metaNode, currentGraph->getEdgeMetaType(), true); } } }