//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: darkstar.hpp
//      Краткое описание: главный заголовочный файл движка
//

#ifndef DSE_HPP
#define DSE_HPP

#include <Darkstar/math.hpp>
#include <Darkstar/graphic_system.hpp>
#include <Darkstar/audio system.hpp>
#include <Darkstar/kernel.hpp>
#include <Darkstar/common.hpp>
#include <Darkstar/resourceSystem.hpp>
#include <Darkstar/input.hpp>
#include <Darkstar/nature.hpp>
#include <Darkstar/visual_effects.hpp>

namespace dse
{
	using namespace math;
	using namespace gs;
	using namespace ker;
	using namespace rs;
	using namespace input;
	using namespace ve;
	using namespace nature;
	//using namespace as;

#if _DEBUG
	class MemoryLeakOutput
	{
	public:
		MemoryLeakOutput() {};
		~MemoryLeakOutput()
		{
			FILE* out_leaks;
			fopen_s(&out_leaks, "mem_leaks.txt", "w");
			MemoryManager::outputLeaks(out_leaks);
		};
	};

	MemoryLeakOutput ___mem_leak_out___;
#endif

	void DarkstarInit()
	{
		new Log;
		Log::ptr()->setIsToConsole(false);

		new GraphicDriver;

		new Profiler;

		new InputDriver;
		new Keyboard;
		new Mouse;

		new FileManager;
		new EffectManager;
		new ECCSetter;
		new TextureManager;
		new TextManager;

		new MaterialLoader;
		new ModelLoader;
	};
};

#endif