Box2DX.Collision.PairManager.RemovePair C# (CSharp) Метод

RemovePair() приватный Метод

private RemovePair ( int proxyId1, int proxyId2 ) : object
proxyId1 int
proxyId2 int
Результат object
		private object RemovePair(int proxyId1, int proxyId2)
		{
			Box2DXDebug.Assert(_pairCount > 0);

			if (proxyId1 > proxyId2) 
				Common.Math.Swap<int>(ref proxyId1, ref proxyId2);

			int hash = (int)(Hash((uint)proxyId1, (uint)proxyId2) & PairManager.TableMask);

			//uint16* node = &m_hashTable[hash];
			ushort node = _hashTable[hash];
			bool ion = false;
			int ni = 0;
			while (node != PairManager.NullPair)
			{
				if (Equals(_pairs[node], proxyId1, proxyId2))
				{
					//uint16 index = *node;
					//*node = m_pairs[*node].next;

					ushort index = node;
					node = _pairs[node].Next;										
					if (ion)
						_pairs[ni].Next = node;
					else
					{
						_hashTable[hash] = node;
					}

					Pair pair = _pairs[index];
					object userData = pair.UserData;

					// Scrub
					pair.Next = _freePair;
					pair.ProxyId1 = PairManager.NullProxy;
					pair.ProxyId2 = PairManager.NullProxy;
					pair.UserData = null;
					pair.Status = 0;

					_freePair = index;
					--_pairCount;
					return userData;
				}
				else
				{
					//node = &m_pairs[*node].next;
					ni = node;
					node = _pairs[ni].Next;
					ion = true;
				}
			}

			Box2DXDebug.Assert(false);
			return null;
		}