/** @file luanav.h
 *  An implementation of navigation using LUA
 *	@author Chris Burns (cburns@ea.com)
 *
 *	UX
 *	(c) 2012 Electronic Arts Inc. 
 */

#ifndef EANAV_LUANAV_H
#define EANAV_LUANAV_H

#include "EABaseTypes/autoref.h"

extern "C"
{
struct lua_State;
}

namespace EA
{
	namespace Types
	{
		EABASETYPES_FORWARD_DECLARATION(class, Function)
		EABASETYPES_FORWARD_DECLARATION(class, Object)
	};
}

namespace EA
{
	namespace Nav
	{
		namespace LuaNav
		{
			/*!
			*	Asynchronously create a LUA implementation of INav
			*	@param callback		The callback to call with the implementation (an EA::Types::Object)
			*	@param implFileName	The name of the file containing the nav implementation
			*	@param rootFileName	The name of the root .nav file to load
			*	@param let			Initial constants for Nav
			*/
			void Create(lua_State *L, EA::Types::FunctionIn callback, const char *implFileName, const char* rootFileName, EA::Types::ObjectIn let);
		};
	}
}

#endif /* EANAV_LUANAV_H */
