
// zlib open source license
//
// Copyright (c) 2010 to 2014 David Forsgren Piuva
// 
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
// 
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
// 
//    1. The origin of this software must not be misrepresented; you must not
//    claim that you wrote the original software. If you use this software
//    in a product, an acknowledgment in the product documentation would be
//    appreciated but is not required.
// 
//    2. Altered source versions must be plainly marked as such, and must not be
//    misrepresented as being the original software.
// 
//    3. This notice may not be removed or altered from any source
//    distribution.

#pragma once

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers
#endif

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER				// Allow use of features specific to Windows XP or later.
#define WINVER 0x0501		// Change this to the appropriate value to target other versions of Windows.
#endif

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit

#include <afxctl.h>         // MFC support for ActiveX Controls
#include <afxext.h>         // MFC extensions
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>		// MFC support for Internet Explorer 4 Comon Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>			// MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

// Link DirectX
#pragma comment(lib, "../DirectX11_Include_Feb2010/Lib/x86/dsound.lib") // Direct sound
#pragma comment(lib, "../DirectX11_Include_Feb2010/Lib/x86/dxguid.lib") // Direct sound
#pragma comment(lib, "../DirectX11_Include_Feb2010/Lib/x86/d3dcompiler.lib") // ¤¤¤¤ Try to upgrade
#pragma comment(lib, "../DirectX11_Include_Feb2010/Lib/x86/d3dx11.lib") // Image loading
#pragma comment(lib, "../DirectX11_Include_Feb2010/Lib/x86/d3d11.lib")

// Direct sound includes
#include <mmsystem.h>
#include "../DirectX11_Include_Feb2010/Include/dsound.h"

// Direct3D11 includes
#include "../DirectX11_Include_Feb2010/Include/d3d11.h"
#include "../DirectX11_Include_Feb2010/Include/d3dCompiler.h" // ¤¤¤¤ Try to upgrade
#include "../DirectX11_Include_Feb2010/Include/d3dx11.h" // Image loading

// Link bullet libraries
#pragma comment(lib, "../Bullet/lib/LinearMath.lib")
#pragma comment(lib, "../Bullet/lib/BulletCollision.lib")
#pragma comment(lib, "../Bullet/lib/BulletDynamics.lib")

// Include bullet headers
#pragma warning(push)
#pragma warning(disable:4311) //Ignore the pointer truncation in Bullet
	#include "../Bullet/src/LinearMath/btTransform.h"
	#include "../Bullet/src/LinearMath/btVector3.h"
	#include "../Bullet/src/LinearMath/btScalar.h"
	#include "../Bullet/src/btBulletCollisionCommon.h"
	#include "../Bullet/src/btBulletDynamicsCommon.h"
	#include "../Bullet/src/BulletDynamics/Dynamics/btRigidBody.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h"
	#include "../Bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h"
	#include "../Bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h"
	#include "../Bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h"
	#include "../Bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h"
	#include "../Bullet/src/BulletCollision/CollisionShapes/btShapeHull.h"
	#include "../Bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h"
	#include "../Bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h"
	#include "../Bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h"
	#include "../Bullet/src/LinearMath/btTransformUtil.h"
	#include "../Bullet/src/LinearMath/btIDebugDraw.h"
#pragma warning(pop)

// Math
#include "Engine/MathMethods.h"

// Include headers that should be reached from everywhere
#include "Engine/LanguageMacros.h"
#include "Engine/StringMethods.h"
#include "Engine/CommonDeclarations.h"
#include "Engine/ByteArray.h"
#include "DoubleLinkList.h"
#include "Engine/BitWise.h"
