Example #1
0
void CFlowGraphModule::ActivateGraph(IFlowGraph* pGraph, TModuleInstanceId instanceId, TModuleParams const &params) const
{
	if (pGraph)
	{
		IFlowNodeIteratorPtr pNodeIter = pGraph->CreateNodeIterator();
		if (pNodeIter)
		{
			TFlowNodeId    id = InvalidFlowNodeId;
			IFlowNodeData* pData;
			while (pData = pNodeIter->Next(id))
			{
				// Check if its the starting node
				if (m_startNodeTypeId == pData->GetNodeTypeId())
				{
					CFlowModuleStartNode* pNode = (CFlowModuleStartNode*)pData->GetNode();
					pNode->OnActivate(params);
				}

				// Check if its the returning node
				if (m_returnNodeTypeId == pData->GetNodeTypeId())
				{
					CFlowModuleReturnNode* pNode = (CFlowModuleReturnNode*)pData->GetNode();
					pNode->SetModuleId(m_Id, instanceId);
				}
			}
		}
	}
}
Example #2
0
void CFlowGraphModule::CancelInstance(TModuleInstanceId instanceId)
{
	// Find the instance, and request cancel
	TInstanceList::iterator i   = m_instances.begin();
	TInstanceList::iterator end = m_instances.end();
	for (; i != end; ++i)
	{
		if (i->instanceId == instanceId)
		{
			IFlowGraph* pGraph = i->pGraph;
			if (pGraph)
			{
				IFlowNodeIteratorPtr pNodeIter = pGraph->CreateNodeIterator();
				if (pNodeIter)
				{
					TFlowNodeId    id = InvalidFlowNodeId;
					IFlowNodeData* pData;
					while (pData = pNodeIter->Next(id))
					{
						// Check if its the starting node
						if (m_startNodeTypeId == pData->GetNodeTypeId())
						{
							CFlowModuleStartNode* pNode = (CFlowModuleStartNode*)pData->GetNode();
							pNode->OnCancel();

							break;
						}
					}
				}
			}

			break;
		}
	}
}