void SetKeepHighlighting(bool bKeep) { foreach (GameObject LRObj in _HighlightLRObjs) { if (LRObj.activeInHierarchy) { Animator anim = LRObj.GetComponent <Animator> (); anim.SetBool("Keep", bKeep); } } }
public static void NoRecursQuickSort(T[] _items, int l, int r) // Быстрая сортировка { var curLR = new LRObj() { L = l, R = r }; while (true) { #region QS T temp; T x = _items[curLR.L + (curLR.R - curLR.L) / 2]; //запись эквивалентна (l+r)/2, //но не вызввает переполнения на больших данных int i = curLR.L; int j = curLR.R; //код в while обычно выносят в процедуру particle while (i <= j) { while (_items[i].CompareTo(x) < 0) { i++; } while (_items[j].CompareTo(x) > 0) { j--; } if (i <= j) { temp = _items[i]; _items[i] = _items[j]; _items[j] = temp; i++; j--; } } #endregion #region CalcLeftRight LRObj left = null; LRObj right = null; if (i < curLR.R) { left = new LRObj() { L = i, R = curLR.R }; } if (curLR.L < j) { right = new LRObj() { L = curLR.L, R = j }; } #endregion #region ReplaceThisToLeftRight if (left != null) { left.Prev = curLR.Prev; left.Next = right; if (left.Next == null) { left.Next = curLR.Next; } } if (right != null) { right.Next = curLR.Next; right.Prev = left; if (right.Prev == null) { right.Prev = curLR.Prev; } } if (left != null || right != null) { if (curLR.Prev != null) { curLR.Prev.Next = (left == null) ? right : left; } if (curLR.Next != null) { curLR.Next.Prev = (right == null) ? left : right; } } else { if (curLR.Prev != null) { curLR.Prev.Next = curLR.Next; } if (curLR.Next != null) { curLR.Next.Prev = curLR.Prev; } } #endregion #region SetupNextIteration if (left != null) { curLR = left; continue; } if (curLR.Prev != null) { curLR = curLR.Prev; continue; } if (right != null) { curLR = right; continue; } if (curLR.Next != null) { curLR = curLR.Next; continue; } #endregion break; } }