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