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(©Module); 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; }