From: <axl...@us...> - 2008-12-07 15:52:17
|
Revision: 61 http://hgengine.svn.sourceforge.net/hgengine/?rev=61&view=rev Author: axlecrusher Date: 2008-12-07 15:52:14 +0000 (Sun, 07 Dec 2008) Log Message: ----------- update how nodes handle onAdd actions Modified Paths: -------------- Mercury2/src/MercuryNode.cpp Mercury2/src/MercuryNode.h Modified: Mercury2/src/MercuryNode.cpp =================================================================== --- Mercury2/src/MercuryNode.cpp 2008-12-07 15:49:32 UTC (rev 60) +++ Mercury2/src/MercuryNode.cpp 2008-12-07 15:52:14 UTC (rev 61) @@ -26,9 +26,8 @@ m_children.push_back(n); n->m_parent = this; - list< Callback2< MercuryNode*, MercuryNode* > >::iterator i; - for (i = OnAddChild.begin(); i != OnAddChild.end(); ++i ) - (*i)(this, n); + OnAddChild(); + n->OnAdded(); } void MercuryNode::RemoveChild(MercuryNode* n) @@ -38,10 +37,9 @@ { if (*i == n) { - list< Callback2< MercuryNode*, MercuryNode* > >::iterator ic; - for (ic = OnRemoveChild.begin(); ic != OnRemoveChild.end(); ++ic ) - (*ic)(this, n); - + n->OnRemoved(); + OnRemoveChild(); + n->m_parent = NULL; m_children.erase(i); return; } Modified: Mercury2/src/MercuryNode.h =================================================================== --- Mercury2/src/MercuryNode.h 2008-12-07 15:49:32 UTC (rev 60) +++ Mercury2/src/MercuryNode.h 2008-12-07 15:52:14 UTC (rev 61) @@ -40,15 +40,21 @@ virtual void Update(float dTime) {}; void RecursiveUpdate(float dTime); - ///Provides callback ability when a child node is added (parent, child) arguement order - std::list< Callback2< MercuryNode*, MercuryNode* > > OnAddChild; + ///Run on parent when a child is added + virtual void OnAddChild() {}; - ///Provides callback ability when a child node is removed (parent, child) arguement order - std::list< Callback2< MercuryNode*, MercuryNode* > > OnRemoveChild; + ///Run on parent when a child is added + virtual void OnRemoveChild() {}; ///Loads a node from an XMLNode representing itself virtual void LoadFromXML(const XMLNode& node); + + ///Run on a child when added to a parent + virtual void OnAdded() {}; + ///Run on a child when removed from a parent + virtual void OnRemoved() {}; + GENRTTI(MercuryNode); protected: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |