// WorldCreator.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "WorldCreator.h" #include "MainFrm.h" #include "WorldCreatorDoc.h" #include "WorldCreatorView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorApp BEGIN_MESSAGE_MAP(CWorldCreatorApp, CWinApp) //{{AFX_MSG_MAP(CWorldCreatorApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorApp construction void SetBasePath() { //·¹Áö½ºÆ®¸®¿¡ ¼³Ä¡µÈ °æ·Î¸¦ Àоî¿È. char szPath[256]; HKEY hMPClientReg; DWORD dwReadType,dwReadLens; dwReadType=0; dwReadLens=256; if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\GamaSoft\\MP-Client",0,KEY_READ,&hMPClientReg)==ERROR_SUCCESS && RegQueryValueEx(hMPClientReg, "Folder", 0, &dwReadType, (LPBYTE)szPath,&dwReadLens)==ERROR_SUCCESS) { sprintf( INITVALUEFILE, "%s\\Mp.INI", szPath ); //Character DataSet Path// sprintf( CHARACTERDATAPATH, "%s\\Character\\Data\\", szPath ); sprintf( CHARACTERMESHTEX, "%s\\Character\\Data\\meshtex.htable", szPath ); sprintf( CHARACTERANIPACK, "%s\\Character\\Data\\ani\\APack.ntable", szPath ); sprintf( CHARACTERLODMESH, "%s\\Character\\Data\\mesh\\LODMesh.ntable", szPath ); sprintf( CHARACTERTEXPIECE, "%s\\Character\\Data\\tex\\Texpiece.ntable", szPath ); sprintf( CHARACTERATTACHMENTMESH, "%s\\Character\\Data\\Amesh\\amesh.ntable", szPath ); sprintf( CHARACTERTEXTURE, "%s\\Character\\Data\\Texture\\texture.ntable", szPath ); //Original Texutre Path// sprintf( ORIGINALTEXUTREINTERFACEPATH, "%s\\RawTexture\\Interface", szPath ); sprintf( ORIGINALTEXUTRELIGHTMAPPATH, "%s\\RawTexture\\Lightmap", szPath ); sprintf( ORIGINALTEXUTRENATUREPATH, "%s\\RawTexture\\NatureObject", szPath ); sprintf( ORIGINALTEXTUREOBJECTPATH, "%s\\RawTexture\\Object", szPath ); sprintf( ORIGINALTEXTURETERRAINPATH, "%s\\RawTexture\\Terrain", szPath ); sprintf( ORIGINALTEXTUREWIDEPATH, "%s\\RawTexture\\WideTexture", szPath ); sprintf( ORIGINALTEXTUREFXPATH, "%s\\Texture\\FX", szPath ); //Object Path Define// sprintf( HOUSEOBJECTPATH, "%s\\Objects\\House\\", szPath ); sprintf( LIGHTOBJECTPATH, "%s\\Objects\\Object\\", szPath ); sprintf( TREEOBJECTPATH, "%s\\Objects\\NatureObject\\", szPath ); sprintf( OBJECTPATH, "%s\\Objects\\Object\\", szPath ); sprintf( INSTANCEOBJECTPATH, "%s\\Objects\\Instance\\", szPath ); //Texture Path Define// sprintf( TERRAINTEXTUREPATH, "%s\\Texture\\Terrain", szPath ); sprintf( OBJECTTEXTUREPATH, "%s\\Texture\\Object", szPath ); sprintf( NATURETEXTUREPATH, "%s\\Texture\\NatureObject", szPath ); sprintf( WIDETEXTUREPATH, "%s\\Texture\\WideTexture", szPath ); sprintf( INTERFACETEXTUREPATH, "%s\\Texture\\Interface", szPath ); sprintf( FXTEXTUREPATH, "%s\\Texture\\FX", szPath ); sprintf( BSPTEXTUREPATH, "%s\\Texture\\BSP", szPath ); // LightMap Path Define// sprintf( LIGHTMAPTEXTUREPATH, "%s\\Texture\\Lightmap", szPath ); //VertexShader Path Define// sprintf( TERRAINVERTEXSHADEROATH, "%s\\VertexShader\\LayerFog\\LayerFogTerrain.vsh", szPath ); sprintf( SHADERPATH, "%s\\Shader\\", szPath ); //Save Data Path Define// sprintf( WEATHERPATH, "%s\\WeatherColorTable.dat", szPath ); //Octree Path Define// sprintf( OCTREEPATH, "%s\\Octree", szPath ); //Sector Scene Map Path Define// sprintf( SECTORMAPPATH, "%s\\Map", szPath ); //Sound Path// sprintf( SOUNDFILEPATH, "%s\\Sound\\", szPath ); sprintf( EFFECTPATH, "%s\\Effect\\", szPath ); RegCloseKey(hMPClientReg); } } CWorldCreatorApp::CWorldCreatorApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance //SetBasePath(); } ///////////////////////////////////////////////////////////////////////////// // The one and only CWorldCreatorApp object CWorldCreatorApp theApp; ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorApp initialization BOOL CWorldCreatorApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. // Change the registry key under which our settings are stored. // TODO: You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(0); // Load standard INI file options (including MRU) // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CWorldCreatorDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CWorldCreatorView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd->UpdateWindow(); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) // No message handlers //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CWorldCreatorApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CWorldCreatorApp message handlers BOOL CWorldCreatorApp::OnIdle(LONG lCount) { // TODO: Add your specialized code here and/or call the base class CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; if(mf->GetFocus()->GetSafeHwnd()==((CWorldCreatorView*)mf->GetActiveView())->GetSafeHwnd()) ((CWorldCreatorView*)mf->GetActiveView())->Render(); CWinApp::OnIdle(lCount); return TRUE; }