Esempio n. 1
0
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();
	}
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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();
	}
}