#pragma once

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN		// Windows 헤더에서 거의 사용되지 않는 내용을 제외시킵니다.
#endif

// 아래 지정된 플랫폼보다 우선하는 플랫폼을 대상으로 하는 경우 다음 정의를 수정하십시오.
// 다른 플랫폼에 사용되는 해당 값의 최신 정보는 MSDN을 참조하십시오.
#ifndef WINVER				// Windows 95 및 Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
#define WINVER 0x0400		// Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
#endif

#ifndef _WIN32_WINNT		// Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
#define _WIN32_WINNT 0x0400		// Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
#endif						

#ifndef _WIN32_WINDOWS		// Windows 98 이후 버전에서만 기능을 사용할 수 있습니다.
#define _WIN32_WINDOWS 0x0410 // Windows Me 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
#endif

#ifndef _WIN32_IE			// IE 4.0 이후 버전에서만 기능을 사용할 수 있습니다.
#define _WIN32_IE 0x0501	// IE 5.0 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
#endif

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// 일부 CString 생성자는 명시적으로 선언됩니다.

// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 핵심 및 표준 구성 요소
#include <afxext.h>         // MFC 익스텐션
#include <afxdisp.h>        // MFC 자동화 클래스

#include <afxdtctl.h>		// Internet Explorer 4 공용 컨트롤에 대한 MFC 지원
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>			// Windows 공용 컨트롤에 대한 MFC 지원
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxtempl.h>

#include <afxmt.h>      // MFC Multi-threading support
#include <shlobj.h>     // IShellFolder support
#include <lm.h>         // WNet support
#include <afxpriv.h>    // Undocumented MFC

#ifndef _DX9
#define _DX9
#endif

#pragma warning( disable: 4702 4267 )

#pragma warning( push, 3 )

#include <dinput.h>

#include <MMSystem.h>
#include <NiLog.h>
#include <NiD3DDefines.h>
#include <NiActorManager.h>
#include <NiAlphaAccumulator.h>
#include <NiAlphaProperty.h>
#include <NiAmbientLight.h>
#include <NiAnimation.h>
#include <NiAnimationMetrics.h>
#include <NiAudio.h>
#include <NiAudioSource.h>
#include <NiMilesAudio.h>
#include <NiBackToFrontAccumulator.h>
#include <NiBillboardNode.h>
#include <NiBinaryShader.h>
#include <NiBoneLODController.h>
#include <NiBuildConfiguration.h>
#include <NiCamera.h>
#include <NiCloningProcess.h>
#include <NiCollision.h>
#include <NiColor.h>
#include <NiControllerManager.h>
#include <NiControllerSequence.h>
#include <NiCullingProcess.h>
#include <NiDirectXVersion.h>
#include <NiD3DRendererHeaders.h>
#include <NiD3DShaderProgramFactory.h>
#include <NiDX9PersistentSrcTextureRendererData.h>
#include <NiDX9Renderer.h>
#include <NiDX9SystemDesc.h>
#include <NiDevImageConverter.h>
#include <NiDirectionalLight.h>
#include <NiDrawSceneUtility.h>
#include <NiDynamicEffectState.h>
#include <NiFilename.h>
#include <NiFogProperty.h>
#include <NiFont.h>
#include <NiGeomMorpherController.h>
#include <NiGeometry.h>
#include <NiGeometryBufferData.h>
#include <NiKFMTool.h>
#include <NiLines.h>
#include <NiMaterialProperty.h>
#include <NiMessagebox.h>
#include <NiNode.h>
#include <NiParticle.h>
#include <NiPointLight.h>
#include <NiPropertyState.h>
#include <NiRefObject.h>
#include <NiRenderedTexture.h>
#include <NiScreenTexture.h>
#include <NiShaderFactory.h>
#include <NiShaderLibrary.h>
#include <NiShaderLibraryDesc.h>
#include <NiSourceTexture.h>
#include <NiSpotLight.h>
#include <NiStaticDataManager.h>
#include <NiStencilProperty.h>
#include <NiStream.h>
#include <NiOldString2D.h>
#include <NiTObjectList.h>
#include <NiTextKeyMatch.h>
#include <NiTexturePalette.h>
#include <NiTexturingProperty.h>
#include <NiTriBasedGeom.h>
#include <NiTriShape.h>
#include <NiTriStrips.h>
#include <NiUniversalTypes.h>
#include <NiVertexColorProperty.h>
#include <NiWireframeProperty.h>
#include <NiZBufferProperty.h>
#pragma warning (pop)

NiSmartPointer(NiFont);
NiSmartPointer(NiOldString2D);

#include <assert.h>
#include "BasicString.h"
#include "Algorithm.h"
#include "Hasher.h"
#include "Functor.h"
#include "PriorityQueue.h"
#include "Pool.h"
#include "Array.h"
#include "List.h"
#include "Set.h"
#include "Map.h"
#include "HashSet.h"
#include "HashMap.h"
#include "Lexer.h"
#include "Parser.h"
#include "PointerList.h"
#include "PointerHashMap.h"
#include "PointerArray.h"

#include "Console.h"
#include "File.h"
#include "FileLoader.h"
#include "FileSaver.h"

#include "Tokenizer.h"
#include "TargaImage.h"

#define STRSAFE_NO_DEPRECATE
#define STRSAFE_LIB
#include <STRSAFE.H> 
#include <afxdhtml.h>

#define SAFE_DELETE(x) if(x) { delete x; x = NULL; }
#define SAFE_DELETE_ARRAY(x) if(x) { delete[] x; x = NULL; }
#define SAFE_NIDELETE(x) if(x) { NiDelete x; x = NULL; }

#pragma warning( disable: 4201 )
#pragma warning( disable: 4258 )


