/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
***************************************************************************/

#pragma once

#include "glmPathDefinitions.h"
#include <glmVector2.h>

namespace glm
{
	/**
	* \brief Compute Navigation Mesh functor
	*
	* \ingroup NavMesh3
	*
	* \author Golaem <dev@golaem.com>
	*/
	struct NavigationMesh3CreatorParameters_v2_4;
	class GLM_SDK_API NavigationMesh3CreatorParameters
	{
	public:

		NavigationMesh3CreatorParameters();
		~NavigationMesh3CreatorParameters();

		/**
		* \name MinimumRadius
		* \brief Among agents that will use the generated navigation mesh, the minium of their radii.
		*/
		float _minimumRadius;

		/**
		* \name MinimumConnexZoneSurface
		* \brief The minimum surface for a connex navigable zone to be considered.
		*/
		float _minimumConnexZoneSurface;

		/**
		* \name MaximumStepHeight
		* \brief The maximum step height for the accessibility relationship.
		*
		* Default value is 0.41.
		*/
		float _maximumStepHeight;
		
		/**
		* \name KeepingOnlyGreatestConnexZone
		* \brief Boolean telling if only the greatest connex navigable is to be considered
		*/
		bool _keepingOnlyGreatestConnexZone;

		/**
		* \name BoundingBox
		*/
		//@{
		Vector2 _boundingBoxLowerBound;
		Vector2 _boundingBoxUpperBound;
		//@}

		unsigned int _computationThreadsCount;
	};
}
