// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2023 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file  m_bbox.c
/// \brief bounding boxes

#include "doomtype.h"
#include "m_bbox.h"
/**	\brief	The M_ClearBox function

	\param	box	a fixed_t array of 4 to be cleaned

	\return	void


*/

void M_ClearBox(fixed_t *box)
{
	box[BOXTOP] = box[BOXRIGHT] = INT32_MIN;
	box[BOXBOTTOM] = box[BOXLEFT] = INT32_MAX;
}
/**	\brief	The M_AddToBox function

	\param	box	a fixed_t array of 4 to be added with
	\param	x	x of box
	\param	y	y of box

	\return	void


*/

void M_AddToBox(fixed_t *box, fixed_t x, fixed_t y)
{
	if (x < box[BOXLEFT])
		box[BOXLEFT] = x;
	if (x > box[BOXRIGHT])
		box[BOXRIGHT] = x;

	if (y < box[BOXBOTTOM])
		box[BOXBOTTOM] = y;
	if (y > box[BOXTOP])
		box[BOXTOP] = y;
}
/**	\brief	The M_PointInBox function

	\param	box	a fixed_t array of 4 to be checked with
	\param	x	x of box
	\param	y	y of box

	\return	if it's in the box


*/

boolean M_PointInBox(fixed_t *box, fixed_t x, fixed_t y)
{
	if (x < box[BOXLEFT])
		return false;
	if (x > box[BOXRIGHT])
		return false;
	if (y < box[BOXBOTTOM])
		return false;
	if (y > box[BOXTOP])
		return false;

	return true;
}
/**	\brief	The M_CircleTouchBox function

	\param	box	a parameter of type fixed_t *
	\param	circlex	a parameter of type fixed_t
	\param	circley	a parameter of type fixed_t
	\param	circleradius	a parameter of type fixed_t

	\return	boolean


*/

boolean M_CircleTouchBox(fixed_t *box, fixed_t circlex, fixed_t circley, fixed_t circleradius)
{
	if (box[BOXLEFT] - circleradius > circlex)
		return false;
	if (box[BOXRIGHT] + circleradius < circlex)
		return false;
	if (box[BOXBOTTOM] - circleradius > circley)
		return false;
	if (box[BOXTOP] + circleradius < circley)
		return false;
	return true;
}
