void BaseNode::detachNodeSwap( int nChild ) { if ( nChild >= 0 && nChild < (int)m_Children.size() ) { updateVersion(); BaseNode * pChild = m_Children[ nChild ]; if ( pChild != NULL ) { // inform the child it is being detached pChild->onDetaching(); // inform ourselves onDetach( pChild ); // null the parent pointer and remove from the child list pChild->m_pParent = NULL; } removeSwapIndex( m_Children, nChild ); // notify this object that a child object has been detached onChildDetached(); } }
void BaseNode::detachAllNodes() { updateVersion(); for(size_t i=0;i<m_Children.size();i++) { BaseNode * pChild = m_Children[ i ]; if (! pChild ) continue; // inform the child it is being detached pChild->onDetaching(); // inform ourselves onDetach( pChild ); // set the parent pointer to NULL pChild->m_pParent = NULL; } m_Children.clear(); // notify this object that a child object has been detached onChildDetached(); }
void BaseNode::detachNode( int child ) { ASSERT( this != NULL ); if ( child >= 0 && child < (int)m_Children.size() ) { updateVersion(); BaseNode * pChild = m_Children[ child ]; if ( pChild != NULL ) { // inform the child it is being detached pChild->onDetaching(); // inform ourselves onDetach( pChild ); // null the parent pointer and remove from the child list pChild->m_pParent = NULL; } m_Children.erase( m_Children.begin() + child ); // notify this object that a child object has been detached onChildDetached(); } }