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