public void Draw(ISpriteBatch spriteBatch) { if (IsScissorTestEnabled) { Rectangle scissorRectangle = ScissorRectangle; scissorRectangle.X += (int)WorldPosition.X; scissorRectangle.Y += (int)WorldPosition.Y; spriteBatch.PushScissorRectangle(scissorRectangle); } _bufferCount = 0; for (int i = 0; i < Children.Count; i++) { Push(Children[i]); } if (HasChildrenChanged()) { //Console.WriteLine("Sort!"); _indexList.Sort(_zIndexComparer); } for (int i = 0; i < _indexList.Count; i++) { INode node = _buffer[_indexList[i]]; ISprite sprite = node as ISprite; if (sprite != null) { sprite.Draw(spriteBatch); } } if (IsScissorTestEnabled) { spriteBatch.PopScissorRectangle(); } }