private static bool CheckPosition(int meshGroupToMoveIndex, List<MeshGroup> allMeshGroups, List<ScaleRotateTranslate> meshTransforms, MeshGroup meshGroupToMove, AxisAlignedBoundingBox meshToMoveBounds, int yStep, int xStep, ref Matrix4X4 transform)
		{
			double xStepAmount = 5;
			double yStepAmount = 5;

			Matrix4X4 positionTransform = Matrix4X4.CreateTranslation(xStep * xStepAmount, yStep * yStepAmount, 0);
			Vector3 newPosition = Vector3.Transform(Vector3.Zero, positionTransform);
			transform = Matrix4X4.CreateTranslation(newPosition);
			AxisAlignedBoundingBox testBounds = meshToMoveBounds.NewTransformed(transform);
			bool foundHit = false;
			for (int i = 0; i < meshGroupToMoveIndex; i++)
			{
				MeshGroup meshToTest = allMeshGroups[i];
				if (meshToTest != meshGroupToMove)
				{
					AxisAlignedBoundingBox existingMeshBounds = GetAxisAlignedBoundingBox(meshToTest, meshTransforms[i].TotalTransform);
					AxisAlignedBoundingBox intersection = AxisAlignedBoundingBox.Intersection(testBounds, existingMeshBounds);
					if (intersection.XSize > 0 && intersection.YSize > 0)
					{
						foundHit = true;
						break;
					}
				}
			}

			if (!foundHit)
			{
				return true;
			}

			return false;
		}