public int Query(AABB aabb, object[] userData, int maxCount)
{
ushort[] lowerValues;
ushort[] upperValues;
ComputeBounds(out lowerValues, out upperValues, aabb);
int lowerIndex, upperIndex;
Query(out lowerIndex, out upperIndex, lowerValues[0], upperValues[0], _bounds[0], 2 * _proxyCount, 0);
Query(out lowerIndex, out upperIndex, lowerValues[1], upperValues[1], _bounds[1], 2 * _proxyCount, 1);
Box2DXDebug.Assert(_queryResultCount < Settings.MaxProxies);
int count = 0;
for (int i = 0; i < _queryResultCount && count < maxCount; ++i, ++count)
{
Box2DXDebug.Assert(_queryResults[i] < Settings.MaxProxies);
Proxy proxy = _proxyPool[_queryResults[i]];
Box2DXDebug.Assert(proxy.IsValid);
userData[i] = proxy.UserData;
}
// Prepare for next query.
_queryResultCount = 0;
IncrementTimeStamp();
return count;
}