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

ComputeBounds() private method

private ComputeBounds ( ushort &lowerValues, ushort &upperValues, AABB aabb ) : void
lowerValues ushort
upperValues ushort
aabb AABB
return void
		private void ComputeBounds(out ushort[] lowerValues, out ushort[] upperValues, AABB aabb)
		{
			lowerValues = new ushort[2];
			upperValues = new ushort[2];

			Box2DXDebug.Assert(aabb.UpperBound.x >= aabb.LowerBound.x);
			Box2DXDebug.Assert(aabb.UpperBound.y >= aabb.LowerBound.y);

			Vector2 minVertex = Common.Math.Clamp(aabb.LowerBound, _worldAABB.LowerBound, _worldAABB.UpperBound);
			Vector2 maxVertex = Common.Math.Clamp(aabb.UpperBound, _worldAABB.LowerBound, _worldAABB.UpperBound);

			// Bump lower bounds downs and upper bounds up. This ensures correct sorting of
			// lower/upper bounds that would have equal values.
			// TODO_ERIN implement fast float to uint16 conversion.
			lowerValues[0] = (ushort)((ushort)(_quantizationFactor.x * (minVertex.x - _worldAABB.LowerBound.x)) & (BROADPHASE_MAX - 1));
			upperValues[0] = (ushort)((ushort)(_quantizationFactor.x * (maxVertex.x - _worldAABB.LowerBound.x)) | 1);

			lowerValues[1] = (ushort)((ushort)(_quantizationFactor.y * (minVertex.y - _worldAABB.LowerBound.y)) & (BROADPHASE_MAX - 1));
			upperValues[1] = (ushort)((ushort)(_quantizationFactor.y * (maxVertex.y - _worldAABB.LowerBound.y)) | 1);
		}