1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		05/2008
5 */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_CustomLayerNode.h"
9 
10 namespace MyGUI
11 {
12 
CustomLayerNode(ILayer * _layer,ILayerNode * _parent)13 	CustomLayerNode::CustomLayerNode(ILayer* _layer, ILayerNode* _parent) :
14 		Base(_layer, _parent),
15 		mLocalDepth(0),
16 		mInheritsDepth(0)
17 	{
18 	}
19 
createChildItemNode()20 	ILayerNode* CustomLayerNode::createChildItemNode()
21 	{
22 		ILayerNode* layer = new CustomLayerNode(mLayer, this);
23 		mChildItems.push_back(layer);
24 
25 		mOutOfDate = true;
26 
27 		return layer;
28 	}
29 
getNodeDepth()30 	float CustomLayerNode::getNodeDepth()
31 	{
32 		float result = Base::getNodeDepth();
33 
34 		return result + mInheritsDepth + mLocalDepth;
35 	}
36 
setDepth(float _value)37 	void CustomLayerNode::setDepth(float _value)
38 	{
39 		mLocalDepth = _value;
40 
41 		invalidateAll();
42 	}
43 
invalidateAll()44 	void CustomLayerNode::invalidateAll()
45 	{
46 		mOutOfDate = true;
47 
48 		for (VectorRenderItem::iterator iter = mFirstRenderItems.begin(); iter != mFirstRenderItems.end(); ++iter)
49 			(*iter)->outOfDate();
50 
51 		for (VectorRenderItem::iterator iter = mSecondRenderItems.begin(); iter != mSecondRenderItems.end(); ++iter)
52 			(*iter)->outOfDate();
53 
54 		for (VectorILayerNode::iterator iter = mChildItems.begin(); iter != mChildItems.end(); ++iter)
55 			(*iter)->castType<CustomLayerNode>()->updateInheritsDepth(mInheritsDepth + mLocalDepth);
56 	}
57 
updateInheritsDepth(float _value)58 	void CustomLayerNode::updateInheritsDepth(float _value)
59 	{
60 		mInheritsDepth = _value;
61 
62 		invalidateAll();
63 	}
64 
65 }
66