コード例 #1
0
ファイル: dirscaner.cpp プロジェクト: ZeRuS04/fileDaemon
int DirScaner::run() {
    int retVal;
    bool reRun = false;
    do {
        retVal = startProcesses();

        syslog(LOG_INFO, "[run] retval %d\n", retVal);
        if (retVal >= 0) // если мы потомок
        {
            bool isInit = true;
            int status = 0;
            while(true) {
                status = scanDir(m_buffer[retVal].dirName.c_str(), isInit);
                if(status)
                    break;
                if(isInit) {
                    syslog(LOG_INFO, "[run] initial map successfull\n");
                    isInit = false;
                }

                if(g_destroySelf) {
                    exit(0);
                }
                sleep(m_buffer[retVal-1].mTime);
            }
            return status;
        } else if(retVal == -1){
            // бесконечный цикл работы
            while(true)
            {
                pause();
                if(g_destroySelf) {
                    destroyAllChildren();
                    exit(0);
                }
                if(g_reloadCfg){
                    destroyAllChildren();
                    loadConfig();
                    g_reloadCfg = false;
                    reRun = true;
                    break;
                }
            }
        }
    } while(reRun);

    return retVal;
}
コード例 #2
0
//!
//! Processes the node's input data to generate the node's output table.
//!
void Model2SceneNode::processScene()
{
	// load the input vtk parameter 
	VTKTableParameter * inputParameter = dynamic_cast<VTKTableParameter*>(getParameter(m_inputVTKTableParameterName));
	if (!inputParameter || !inputParameter->isConnected())
		return;

	// get the source parameter (output of source node) connected to the input parameter
	VTKTableParameter * sourceParameter = dynamic_cast<VTKTableParameter*>(inputParameter->getConnectedParameter());

	inputParameter->setVTKTable(sourceParameter->getVTKTable());

	vtkTable * xyzTable = inputParameter->getVTKTable();

	if (!m_sceneNode)
		createSceneNode();


	if (!m_entity || !xyzTable || !m_sceneNode)
		return;

	//Get columns named "NodeID", "X", "Y" and "Z"
	vtkIdTypeArray *colNodeId = dynamic_cast<vtkIdTypeArray*>(xyzTable->GetColumnByName("NodeId"));
	vtkDoubleArray *colX = dynamic_cast<vtkDoubleArray*>(xyzTable->GetColumnByName("X"));
	vtkDoubleArray *colY = dynamic_cast<vtkDoubleArray*>(xyzTable->GetColumnByName("Y"));
	vtkDoubleArray *colZ = dynamic_cast<vtkDoubleArray*>(xyzTable->GetColumnByName("Z"));

	destroyAllAttachedMovableObjects(m_sceneNode);
	destroyAllChildren(m_sceneNode);

	Ogre::String idPrefix(QString(m_name + ":").toStdString());

	Ogre::SceneManager *sceneManager = OgreManager::getSceneManager();

	for (int i=0; i<xyzTable->GetNumberOfRows(); i++)
	{
		int colIDValue = colNodeId->GetValue(i);
		Ogre::String nodeID(idPrefix + Ogre::StringConverter::toString(colIDValue));

		// create new scene node for each item
		Ogre::SceneNode *sceneItem = sceneManager->createSceneNode(nodeID);

		// create new entity for each item
		Ogre::Entity *entityItem = m_entity->clone(nodeID);
		
		sceneItem->attachObject(entityItem);

		double x = colX->GetValue(i);
		double y = colY->GetValue(i);
		double z = colZ->GetValue(i);
		sceneItem->setPosition(Ogre::Real(x), Ogre::Real(y), Ogre::Real(z));
		sceneItem->setScale(m_size);
		m_sceneNode->addChild(sceneItem);
		
	}
}