Irrlicht中對於場景節點的管理
作者:華亮 http://blog.csdn.net/cedricporter
ISceneNode
當我們創建一個場景節點ISceneNode的時候,它的引用計數爲1,此時如果我們需要從場景中刪除一個節點的話,我們使用remove()函數,它就會將引用計數減一,所以引用計數爲1的節點將自動被刪除。
我們不能直接將場景中的節點的引用計數drop到0,因爲drop到0後,他會被delete,而此時他還在場景樹裏面,這時會crash。
ISceneNode::addAnimator
//! Adds an animator which should animate this node.
/** \param animator A pointer to the new animator. */
virtual void addAnimator(ISceneNodeAnimator* animator)
{
if (animator)
{
Animators.push_back(animator);
animator->grab();
}
}
添加Animator進ISceneNode時,ISceneNode會將Animator的引用計數加一,闡明自己正在使用這個Animator。所以一個新創建出來的且以後其他地方不用的Animator加入ISceneNode後,要Drop,以保證引用計數的正確性。