Box2DX.Collision.BroadPhase.AddProxyResult C# (CSharp) Method

AddProxyResult() public method

public AddProxyResult ( ushort proxyId, Proxy proxy, int maxCount, SortKeyFunc sortKey ) : void
proxyId ushort
proxy Proxy
maxCount int
sortKey SortKeyFunc
return void
		public unsafe void AddProxyResult(ushort proxyId, Proxy proxy, int maxCount, SortKeyFunc sortKey)
		{
			float key = sortKey(proxy.UserData);
			//Filter proxies on positive keys
			if (key < 0)
				return;
			//Merge the new key into the sorted list.
			//float32* p = std::lower_bound(m_querySortKeys,m_querySortKeys+m_queryResultCount,key);
			fixed (float* querySortKeysPtr = _querySortKeys)
			{
				float* p = querySortKeysPtr;
				while (*p < key && p < &querySortKeysPtr[_queryResultCount])
					p++;
				int i = (int)(p - &querySortKeysPtr[0]);
				if (maxCount == _queryResultCount && i == _queryResultCount)
					return;
				if (maxCount == _queryResultCount)
					_queryResultCount--;
				//std::copy_backward
				for (int j = _queryResultCount + 1; j > i; --j)
				{
					_querySortKeys[j] = _querySortKeys[j - 1];
					_queryResults[j] = _queryResults[j - 1];
				}
				_querySortKeys[i] = key;
				_queryResults[i] = proxyId;
				_queryResultCount++;
			}
		}
#else