Esempio n. 1
0
void SceneGraph::updateRoute(Node *eventOutNode, Field *eventOutField)
{
    for (Route *route = getRoutes(); route; route = route->next()) {
        if (route->getEventOutNode() == eventOutNode && route->getEventOutField() == eventOutField) {
            route->update();
            route->getEventInNode()->update();
            updateRoute(route->getEventInNode(), route->getEventInField());
        }
    }
}
void UndoDiagramModuleCutActionFn(void *info)
{
	TransformNode		*dgmNode = ((UndoDiagramModuleCut *)info)->mpDiagramNode;
	CDiagramClipboard	*clipboard = ((UndoDiagramModuleCut *)info)->mpClipboard;

	CDiagram dgm(dgmNode);

	int nModule = clipboard->getNModuleNodes();
	ScriptNode*	(*moduleNode)[2] = new (ScriptNode *[nModule][2]);
	for (int n=0; n<nModule; n++) {
		CModule		orgModule(clipboard->getModuleNode(n));
		CModule		copyModule(orgModule.getModuleType());
		copyModule.setPositionX(orgModule.getPositionX());
		copyModule.setPositionY(orgModule.getPositionY());
		dgm.addModule(&copyModule);
		moduleNode[n][0] = orgModule.getScriptNode();
		moduleNode[n][1] = copyModule.getScriptNode();
	}

	int nRoute = clipboard->getNRoutes();
	for (n=0; n<nRoute; n++) {
		Route	*route = clipboard->getRoute(n);
		ScriptNode	*outModule = (ScriptNode *)route->getEventOutNode();
		for (int i=0; i<nModule; i++) {
			if (moduleNode[i][0] == outModule) {
				outModule = moduleNode[i][1];
				break;
			}
		}
		ScriptNode	*inModule = (ScriptNode *)route->getEventInNode();
		for (i=0; i<nModule; i++) {
			if (moduleNode[i][0] == inModule) {
				inModule = moduleNode[i][1];
				break;
			}
		}
		GetWorld()->getSceneGraph()->addRoute(outModule->getName(), route->getEventOutField()->getName(), inModule->getName(), route->getEventInField()->getName());
	}
	
	delete []moduleNode;

	delete clipboard;
}