public AKN_Graph_Base(Guid _guid, string _label) : base(_guid, _label) { _m_NodeDict = new Dictionary <Guid, AKN_Node_Base>(); _m_DicoEdge = new Dictionary <Guid, AKN_GraphEdge>(); _m_linkinNode = null; }
/// \fn public void MAddNode(AKN_Node_Base _node) /// /// \brief Adds a node. /// /// \attention modified as virtual by paulhiac.cyrille /// \author Cedric Plessiet Inrev Paris Viii /// \author [email protected] /// \date 24/12/2009 /// /// \param _node The node. virtual public AKN_Status MAddNode(AKN_Node_Base _node) //GON_MOD: public void MAddNode(AKN_Node_Base _node) { if (_m_NodeDict.ContainsKey(_node.m_id)) { return(AKN_Status.m_Failure); } _m_NodeDict.Add(_node.m_id, _node); return(AKN_Status.m_Success); }
public AKN_Status MDisconnectNode(AKN_Node_Base _nodeToConnect1) { if (MNodeIsConnectedTo(_nodeToConnect1)) { _nodeToConnect1.m_ConnectedNodeDict.Remove(m_id); m_ConnectedNodeDict.Remove(_nodeToConnect1.m_id); return(AKN_Status.m_Success); } return(AKN_Status.m_Failure); }
/// \fn public void MAddNodeToCurrent(AKN_Node_Base _node) /// /// \brief Adds a node to the current observed node . /// /// \author cedric plessiet /// \date 24/05/2010 /// /// \param _node The node. /// /// FIXME: A MCreateNodeObserver needs to be created to have this function working!(selon Cédric) public AKN_Status MAddNodeToCurrent(AKN_Node_Base _node) { if (_m_NodeDict.ContainsKey(_node.m_id)) { return(AKN_Status.m_Failure); } _m_NodeDict[_node.m_id] = _node; return(AKN_Status.m_Success); }
/// \fn public AKN_GraphEdge(AKN_Node_Base _node1, AKN_Node_Base _node2, float _cost) /// /// \brief Constructor. /// /// \author Alexandre Sambo /// \date 01/06/2010 /// /// \param _node1 The first node. /// \param _node2 The second node. /// \param _cost The cost. public AKN_GraphEdge(AKN_Node_Base _node1, AKN_Node_Base _node2, float _cost) : this(_node1, _node2, _cost, "") { //AKN_Debug.MSetLogMode(AKN_Debug.eLogMode.kVerboseLogMode); //AKN_Debug.MSetOutputMode(AKN_Debug.eOutputMode.kConsoleOutputMode); if (_node1.MNodeIsConnectedTo(_node2)) { m_cost = _cost; } }
/// \fn public AKN_GraphEdge(AKN_Node_Base _node1, AKN_Node_Base _node2, float _cost, /// String _label) /// /// \brief Constructor. /// /// \author Alexandre Sambo /// \date 01/06/2010 /// /// \param _node1 The first node. /// \param _node2 The second node. /// \param _cost The cost. /// \param _label The label. public AKN_GraphEdge(AKN_Node_Base _node1, AKN_Node_Base _node2, float _cost, String _label) : base(_label) { //AKN_Debug.MSetLogMode(AKN_Debug.eLogMode.kVerboseLogMode); //AKN_Debug.MSetOutputMode(AKN_Debug.eOutputMode.kConsoleOutputMode); if (_node1.MNodeIsConnectedTo(_node2)) { m_cost = _cost; } }
/// \fn public AKN_Status MAddNode(AKN_Node_Base _node) /// /// \brief Adds a node. /// /// \author Ze Taupe /// \date 25/08/2012 /// /// \param _node The node. /// /// \return The calculated node. public AKN_Status MAddNode(AKN_Node_Base _node) { if (!_m_ConnectedNodeDict.ContainsKey(_node.m_id)) { _m_ConnectedNodeDict.Add(_node.m_id, _node); return(AKN_Status.m_Success); } else { return(AKN_Status.m_Failure); } }
/// \fn MBiConnectNode(AKN_Node_Base _nodeToConnect) /// /// \brief connect a node to another and vice versa /// /// \author Cedric Plessiet Inrev Paris Viii /// \date 21/11/2009 /// /// \param _NodeToConnect the node to connect public AKN_Status MBiConnectNode(AKN_Node_Base _nodeToConnect1) { if (!MConnectNode(_nodeToConnect1)) { return(AKN_Status.m_Failure); } if (!_nodeToConnect1.MConnectNode(this)) { return(AKN_Status.m_Failure); } return(AKN_Status.m_Success); }
/// \fn MConnectNode(AKN_Node_Base _nodeToConnect) /// /// \brief connect a node to another /// /// \author Cedric Plessiet Inrev Paris Viii /// \date 21/11/2009 /// /// \param _NodeToConnect the node to connect public AKN_Status MConnectNode(AKN_Node_Base _nodeToConnect) { if (!MNodeIsConnectedTo(_nodeToConnect)) { _m_ConnectedNodeDict.Add(_nodeToConnect.m_id, _nodeToConnect); _nodeToConnect._m_InputConnectedNodeDict[m_id] = this; _nodeToConnect._m_hasInputConnection = true; _m_isConnected = true; return(AKN_Status.m_Success); } else { return(AKN_Status.m_Failure); } }
/// \fn public AKN_Status MBiConnectNode(AKN_Node_Base _nodeToConnect1, float _cost, out AKN_GraphEdge _graphEdge) /// /// \brief /// /// \author Alexandre Sambo /// \date 27/05/2010 /// /// \param _nodeToConnect1 The node to connect. /// \param _cost cost of connection (can be time, distance, ...) /// \param _graphEdge return created graphEdge /// /// \return return if the connection success or note public AKN_Status MBiConnectNode(AKN_Node_Base _nodeToConnect1, float _cost, out AKN_GraphEdge _graphEdge) { AKN_Status newStatus = AKN_Status.m_Success; if (!MConnectNode(_nodeToConnect1)) { newStatus = AKN_Status.m_Failure; } if (!_nodeToConnect1.MConnectNode(this)) { newStatus = AKN_Status.m_Failure; } if (_cost < 0f) { newStatus = AKN_Status.m_Failure; } _graphEdge = new AKN_GraphEdge(this, _nodeToConnect1, _cost, "edge_" + this.m_label + "_" + _nodeToConnect1.m_label); m_linkedEdge[_graphEdge.m_id] = _graphEdge; _nodeToConnect1.m_linkedEdge[_graphEdge.m_id] = _graphEdge; return(newStatus); }
/// \fn MConnectNode(AKN_Node_Base _nodeToConnect) /// /// \brief connect a node to another /// /// \author Cedric Plessiet Inrev Paris Viii /// \date 21/11/2009 /// /// \param _NodeToConnect the node to connect public AKN_Status MAddChildNode(AKN_Node_Base _nodeToConnect) { MConnectNode(_nodeToConnect); _nodeToConnect._m_parent = this; return(AKN_Status.m_Success); }
public bool MNodeIsConnectedTo(AKN_Node_Base _NodeToConnect) { return(_m_ConnectedNodeDict.ContainsKey(_NodeToConnect.m_id)); }
/// \fn public AKN_Status MAddAsLinkinNode(AKN_Node_Base _node) /// /// \brief Adds as linkin node. /// /// \author Alexandre Sambo /// \date 04/06/2010 /// /// \param _node The node. /// /// \return The calculated as linkin node. //FIXME: WTF?????? public AKN_Status MAddAsLinkinNode(AKN_Node_Base _node) { _m_linkinNode = _node; return(MAddNode(_node)); }
/// \fn public bool MIsInsideGraph(AKN_Node_Base _toCheck) /// /// \brief Is inside graph. /// /// \author Cedric Plessiet Inrev Paris Viii /// \date 24/12/2009 /// /// \param _toCheck to check. /// /// \return true if inside graph, false if not. public bool MIsInsideGraph(AKN_Node_Base _toCheck) { return(_m_NodeDict.ContainsKey(_toCheck.m_id)); }
/// \class AKN_GraphEdge /// /// \brief Itk graph edge. ///, /// \author Samy /// \date 23/04/2010 /// \Constructor public AKN_GraphEdge(AKN_Node_Base _NodeToConnect1, AKN_Node_Base _NodeToConnect2) : this(_NodeToConnect1, _NodeToConnect2, 0f) { //AKN_Debug.MSetLogMode(AKN_Debug.eLogMode.kVerboseLogMode); //AKN_Debug.MSetOutputMode(AKN_Debug.eOutputMode.kConsoleOutputMode); }
public void MEdgeConnect(AKN_Node_Base _nodeToConnect1, AKN_Node_Base _nodeToConnect2) { _nodeToConnect1.MConnectNode(_nodeToConnect2); _m_NodeTo = _nodeToConnect2;; }