Ejemplo n.º 1
0
//-------------------------------------------------------------------------------------
void EntityCoordinateNode::onRemove()
{
	for (std::vector<CoordinateNode*>::size_type i = 0; i < watcherNodes_.size(); ++i)
	{
		CoordinateNode* pCoordinateNode = watcherNodes_[i];

		if (!pCoordinateNode)
			continue;

		// 先设置为NULL, 在后面update时进行删除
		// 此处不能对watcherNodes_做大小做修改,因为可能由EntityCoordinateNode::update()中导致该处调用
		// 那么可能导致EntityCoordinateNode::update()在循环watcherNodes_中被修改而出错。
		watcherNodes_[i] = NULL;
		++delWatcherNodeNum_;

		pCoordinateNode->onParentRemove(this);
	}

	CoordinateNode::onRemove();
}