|
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.
|