@@ -214,16 +214,67 @@ public override void RemoveAllChildrenWithCleanup(bool cleanup)
214214 m_pobTextureAtlas . RemoveAllQuads ( ) ;
215215 }
216216
217+ // Quick sort taken from http://snipd.net/quicksort-in-c
218+ public static void Quicksort ( CCNode [ ] elements , int left , int right )
219+ {
220+ int i = left , j = right ;
221+ CCNode pivot = elements [ ( left + right ) / 2 ] ;
222+
223+ while ( i <= j )
224+ {
225+ /*
226+ (pivot.m_nZOrder < elements[i].m_nZOrder ||
227+ (pivot.m_nZOrder == elements[i].m_nZOrder && pivot.m_uOrderOfArrival < elements[i].m_uOrderOfArrival)))
228+ */
229+ while ( ( elements [ i ] . m_nZOrder < pivot . m_nZOrder ||
230+ ( pivot . m_nZOrder == elements [ i ] . m_nZOrder && elements [ i ] . m_uOrderOfArrival < pivot . m_uOrderOfArrival ) ) )
231+ {
232+ i ++ ;
233+ }
234+
235+ while ( ( elements [ j ] . m_nZOrder > pivot . m_nZOrder ||
236+ ( pivot . m_nZOrder == elements [ j ] . m_nZOrder && elements [ j ] . m_uOrderOfArrival > pivot . m_uOrderOfArrival ) ) )
237+ {
238+ j -- ;
239+ }
240+
241+ if ( i <= j )
242+ {
243+ // Swap
244+ CCNode tmp = elements [ i ] ;
245+ elements [ i ] = elements [ j ] ;
246+ elements [ j ] = tmp ;
247+
248+ i ++ ;
249+ j -- ;
250+ }
251+ }
252+
253+ // Recursive calls
254+ if ( left < j )
255+ {
256+ Quicksort ( elements , left , j ) ;
257+ }
258+
259+ if ( i < right )
260+ {
261+ Quicksort ( elements , i , right ) ;
262+ }
263+ }
264+
217265 //override sortAllChildren
218266 public override void SortAllChildren ( )
219267 {
220268 if ( m_bReorderChildDirty )
221269 {
222270 int j = 0 , count = m_pChildren . count ;
223271 CCNode [ ] elements = m_pChildren . Elements ;
224- CCNode tempItem ;
272+ // CCNode tempItem;
273+
274+ //insertion sort - change to qsort per RIQ
275+ Quicksort ( elements , 0 , count - 1 ) ;
225276
226- //insertion sort
277+ /*
227278 for (int i = 1; i < count; i++)
228279 {
229280 tempItem = elements[i];
@@ -240,6 +291,7 @@ public override void SortAllChildren()
240291
241292 elements[j + 1] = tempItem;
242293 }
294+ */
243295
244296 //sorted now check all children
245297 if ( count > 0 )
0 commit comments