public void Remove(PQHandle handle) { Debug.Assert(_initialized); int hCurr = handle._handle; Debug.Assert(hCurr >= 1 && hCurr <= _max && _handles[hCurr]._key != null); int curr = _handles[hCurr]._node; _nodes[curr] = _nodes[_size]; _handles[_nodes[curr]]._node = curr; if (curr <= --_size) { if (curr <= 1 || _leq(_handles[_nodes[curr >> 1]]._key, _handles[_nodes[curr]]._key)) { FloatDown(curr); } else { FloatUp(curr); } } _handles[hCurr]._key = null; _handles[hCurr]._node = _freeList; _freeList = hCurr; }
public void Reset(IPool pool) { _prev = _next = null; _anEdge = null; _coords = Vec3.Zero; _s = new DeterministicFloat(0); _t = new DeterministicFloat(0); _pqHandle = new PQHandle(); _n = 0; _data = null; }
public override void Reset() { _prev = (_next = null); _anEdge = null; _coords = Vec3.Zero; _s = 0f; _t = 0f; _pqHandle = default(PQHandle); _n = 0; _data = null; }
public void Remove(PQHandle handle) { int handle2 = handle._handle; if (handle2 >= 0) { _heap.Remove(handle); } else { handle2 = -(handle2 + 1); _keys[handle2] = null; while (_size > 0 && _keys[_order[_size - 1]] == null) { _size--; } } }
public PQHandle Insert(TValue value) { int num = ++_size; if (num * 2 > _max) { _max <<= 1; Array.Resize(ref _nodes, _max + 1); Array.Resize(ref _handles, _max + 1); } int num2; if (_freeList == 0) { num2 = num; } else { num2 = _freeList; _freeList = _handles[num2]._node; } _nodes[num] = num2; if (_handles[num2] == null) { _handles[num2] = new HandleElem { _key = value, _node = num }; } else { _handles[num2]._node = num; _handles[num2]._key = value; } if (_initialized) { FloatUp(num); } PQHandle result = default(PQHandle); result._handle = num2; return(result); }
public PQHandle Insert(TValue value) { if (_initialized) { return(_heap.Insert(value)); } int size = _size; if (++_size >= _max) { _max <<= 1; Array.Resize(ref _keys, _max); } _keys[size] = value; PQHandle result = default(PQHandle); result._handle = -(size + 1); return(result); }
public void Remove(PQHandle handle) { Debug.Assert(_initialized); int curr = handle._handle; if (curr >= 0) { _heap.Remove(handle); return; } curr = -(curr + 1); Debug.Assert(curr < _max && _keys[curr] != null); _keys[curr] = null; while (_size > 0 && _keys[_order[_size - 1]] == null) { --_size; } }
public void Remove(PQHandle handle) { int handle2 = handle._handle; int node = _handles[handle2]._node; _nodes[node] = _nodes[_size]; _handles[_nodes[node]]._node = node; if (node <= --_size) { if (node <= 1 || _leq(_handles[_nodes[node >> 1]]._key, _handles[_nodes[node]]._key)) { FloatDown(node); } else { FloatUp(node); } } _handles[handle2]._key = null; _handles[handle2]._node = _freeList; _freeList = handle2; }
public void Remove(PQHandle handle) { Debug.Assert(_initialized); int hCurr = handle._handle; Debug.Assert(hCurr >= 1 && hCurr <= _max && _handles[hCurr]._key != null); int curr = _handles[hCurr]._node; _nodes[curr] = _nodes[_size]; _handles[_nodes[curr]]._node = curr; if (curr <= --_size) { if (curr <= 1 || Geom.VertLeq(_handles[_nodes[curr >> 1]]._key, _handles[_nodes[curr]]._key)) { FloatDown(curr); } else { FloatUp(curr); } } _handles[hCurr]._key = null; _handles[hCurr]._node = _freeList; _freeList = hCurr; }