int _SetChildIndex(GObject child, int oldIndex, int index)
{
int cnt = _children.Count;
if (index > cnt)
index = cnt;
if (oldIndex == index)
return oldIndex;
_children.RemoveAt(oldIndex);
if (index >= cnt)
_children.Add(child);
else
_children.Insert(index, child);
if (child.inContainer)
{
int displayIndex = 0;
if (_childrenRenderOrder == ChildrenRenderOrder.Ascent)
{
for (int i = 0; i < index; i++)
{
GObject g = _children[i];
if (g.inContainer)
displayIndex++;
}
container.SetChildIndex(child.displayObject, displayIndex);
}
else if (_childrenRenderOrder == ChildrenRenderOrder.Descent)
{
for (int i = cnt - 1; i > index; i--)
{
GObject g = _children[i];
if (g.inContainer)
displayIndex++;
}
container.SetChildIndex(child.displayObject, displayIndex);
}
else
{
UpdateContext.OnBegin -= _buildDelegate;
UpdateContext.OnBegin += _buildDelegate;
}
SetBoundsChangedFlag();
}
return index;
}