diff --git a/src/tool/N3ME/DTex.cpp b/src/tool/N3ME/DTex.cpp index 3c469cd8..09f54840 100644 --- a/src/tool/N3ME/DTex.cpp +++ b/src/tool/N3ME/DTex.cpp @@ -63,7 +63,7 @@ void CDTex::Init() { // // SetAttr... -// ŸÀÏÇϳª¿¡ ¼Ó¼º Áý¾î ³Ö±â.. +// Inserting properties into one tile... // void CDTex::SetAttr(int x, int y, DTEXATTR attr) { m_Attr[x][y] = attr; diff --git a/src/tool/N3ME/DTexGroup.cpp b/src/tool/N3ME/DTexGroup.cpp index 3fb719c1..2a69c0a5 100644 --- a/src/tool/N3ME/DTexGroup.cpp +++ b/src/tool/N3ME/DTexGroup.cpp @@ -92,12 +92,12 @@ void CDTexGroup::DelAttr(int attr, DTEXTILEATTR tile) { void CDTexGroup::DelAttrByDTexID(int DTexID) { it_DTexTileAttr it; for (int i = DTEX_FULL; i < DTEX_MAX; i++) { - //¸®½ºÆ® µ¹¸é¼­ DTexIndx¿Í °°Àº°Å ³ª¿À¸é ´Ù ¾ø¾Ö¹ö·Á... + //Go through the list and if something like DTexIndx comes up, get rid of it... it = m_Attributes[i].begin(); while (it != m_Attributes[i].end()) { DTEXTILEATTR * pTile = *it; if (pTile->TexID == DTexID) { - //Áö¿ìÀÚ... + //Let's erase... delete (*it); it = m_Attributes[i].erase(it); } else { @@ -108,8 +108,8 @@ void CDTexGroup::DelAttrByDTexID(int DTexID) { } // -// DTexMng¿¡ ÀÖ´Â Á¤º¸µé û¼Ò... -// DTex¿¡ ÀúÀåµÇ¾î ÀÖ´Â ÇöÀç ±×·ì Á¤º¸¸¦ NONEÀ¸·Î ¼ÂÆÃ.. +// Clean the information in DTexMng... +// Set the current group information stored in DTex to NONE.. // void CDTexGroup::ClearDTex() { CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); diff --git a/src/tool/N3ME/DTexGroupMng.cpp b/src/tool/N3ME/DTexGroupMng.cpp index 9787e7c3..713748a0 100644 --- a/src/tool/N3ME/DTexGroupMng.cpp +++ b/src/tool/N3ME/DTexGroupMng.cpp @@ -83,7 +83,7 @@ int CDTexGroupMng::GetBrushSize() { // void CDTexGroupMng::SetGroup(const char * pName) { //^^ - //¼ÂÆÃÇÏ·Á´Â ±×·ìÀÌ ÀÖÀ¸¸é °Á ¸®ÅÏÇØ¹ö·Á.. + //If there is a group to set, just return it. it_DTexGroup it = m_Groups.begin(); int iSize = m_Groups.size(); for (int i = 0; i < iSize; i++, it++) { @@ -100,7 +100,7 @@ void CDTexGroupMng::SetGroup(const char * pName) { wsprintf(pGroup->m_Name, pName); - //»õ·Î¿î idx¸¦ ÁöÁ¤Çϱâ À§Çؼ­ ÀÏ´Ü Á¤·ÄÀ» ÇÏÀÚ.. + //Let’s sort first to specify a new idx. it = m_Groups.begin(); iSize = m_Groups.size(); int * ArrayIdx = new int[iSize]; @@ -127,7 +127,7 @@ void CDTexGroupMng::SetGroup(const char * pName) { // // SetGroupID.. -// ID·Î ±×·ì ³Ö±â.. +// Insert group by ID.. // void CDTexGroupMng::SetGroupID(const char * pName, int id) { CDTexGroup * pGroup = new CDTexGroup; @@ -142,7 +142,7 @@ void CDTexGroupMng::SetGroupID(const char * pName, int id) { } // -// qsort¸¦ À§ÇØ Á¤·ÄÇÏ´Â ÇÔ¼ö... +// Sorting function for qsort... // int CDTexGroupMng::CompareIdx(const void * arg1, const void * arg2) { int a, b; @@ -159,7 +159,7 @@ int CDTexGroupMng::CompareIdx(const void * arg1, const void * arg2) { } // -// ±×·ì Áö¿ì±â.. +// Delete group... // void CDTexGroupMng::DelGroup(int ID) { it_DTexGroup it = m_Groups.begin(); @@ -179,7 +179,7 @@ void CDTexGroupMng::DelGroup(int ID) { } // -// ±×·ì¾È¿¡ ŸÀÏ ³Ö±â.. +// Putting tiles into a group... // void CDTexGroupMng::SetTile(int ID, int attr, __DTexTileAttr tile) { it_DTexGroup it = m_Groups.begin(); diff --git a/src/tool/N3ME/DTexGroupMng.h b/src/tool/N3ME/DTexGroupMng.h index 66a285f4..397f5177 100644 --- a/src/tool/N3ME/DTexGroupMng.h +++ b/src/tool/N3ME/DTexGroupMng.h @@ -16,11 +16,11 @@ typedef typename std::list::iterator it_DTexGroup; class CDTexGroupMng : public CN3Base { public: - std::list m_Groups; //±×·ì Å×ÀÌÅ͵éÀ» °¡Áö°í ÀÖ´Â ¸®½ºÆ®. - CDlgDTexGroupView * m_pGroupView; //½ÇÁ¦ ÀÛ¾÷ÇÒ¶§ ±×·ìµéÀ» º¸¿©Áִ â. + std::list m_Groups; //List containing group data. + CDlgDTexGroupView * m_pGroupView; //A window that shows groups during actual work. - DTEXATTR m_SelectedDTex; //ÀÛ¾÷½Ã ±×·ìâ¿¡¼­ ¼±ÅÃÇÑ ±×·ì°ú ¼Ó¼º. - DTEXTILEATTR m_SelectedDTexTile; //ÀÛ¾÷½Ã ¼±ÅÃÇÑ ½ÇÁ¦ ÅØ½ºÃÄ Å¸ÀÏ. + DTEXATTR m_SelectedDTex; //Group and properties selected in the group window when working. + DTEXTILEATTR m_SelectedDTexTile; //The actual texture tile selected during operation. CMainFrame * m_pMainFrm; diff --git a/src/tool/N3ME/DTexMng.cpp b/src/tool/N3ME/DTexMng.cpp index e7642d0b..8efdc6fd 100644 --- a/src/tool/N3ME/DTexMng.cpp +++ b/src/tool/N3ME/DTexMng.cpp @@ -115,7 +115,7 @@ void CDTexMng::DelDTexByID(int id) { // // Load.. -// DTexÁ¤º¸µé°ú ½ÇÁ¦ ÅØ½ºÃÄ ¼Ò½ºµéÀ» ÀоîµéÀδÙ. +// Read DTex information and actual texture sources. // void CDTexMng::LoadFromFile(CString RealFileName) { Init(m_pMainFrm); @@ -151,13 +151,13 @@ void CDTexMng::LoadFromFile(CString RealFileName) { ProgressBar.StepIt(); - // ½ÇÁ¦ ÅØ½ºÃÄ ¼Ò½º¸¦ Àаí.. + // Read the actual texture source... CDTex * pDTex = new CDTex; pDTex->Init(); pDTex->m_ID = i; pDTex->m_pTex->LoadFromFile(szDTexFileName); - // ±×¿¡ °üÇÑ Å¸ÀÏ Á¤º¸µéÀ» Àаí.. + // Read the tile information about it... char szDir[_MAX_DIR], szFName[_MAX_FNAME]; _splitpath(szDTexFileName, NULL, szDir, szFName, NULL); wsprintf(szDTexInfoFileName, "%s%s%s.dif", s_szPath.c_str(), szDir, szFName); // Texture Information file @@ -209,7 +209,7 @@ void CDTexMng::LoadFromFile(CString RealFileName) { m_NextID = id + 1; } - // ½ÇÁ¦ ÅØ½ºÃÄ ¼Ò½º¸¦ Àаí.. + // Read the actual texture source... CDTex * pDTex = new CDTex; pDTex->Init(); pDTex->m_ID = id; @@ -234,7 +234,7 @@ void CDTexMng::LoadFromFile(CString RealFileName) { } if (version == 1) { - // ±×¿¡ °üÇÑ Å¸ÀÏ Á¤º¸µéÀ» Àаí.. + // Read the tile information about it... char szDir[_MAX_DIR], szFName[_MAX_FNAME]; _splitpath(szDTexFileName, NULL, szDir, szFName, NULL); wsprintf(szDTexInfoFileName, "%s%s%s.dif", s_szPath.c_str(), szDir, @@ -269,7 +269,7 @@ void CDTexMng::LoadFromFile(CString RealFileName) { void CDTexMng::SaveToFile(CString RealFileName) { char szDTexDir[_MAX_PATH]; wsprintf(szDTexDir, "%sDTex", s_szPath.c_str()); - CreateDirectory("dtex", NULL); // °æ·Î ¸¸µé°í.. + CreateDirectory("dtex", NULL); // Create a path... char szDTexInfoFileName[_MAX_PATH]; wsprintf(szDTexInfoFileName, "%sDTEX\\%s.dtx", s_szPath.c_str(), (LPCTSTR)RealFileName); @@ -304,15 +304,15 @@ void CDTexMng::SaveToFile(CString RealFileName) { /* // - // version1 ÀúÀ广½Ä... - // difÆÄÀϸ¸µé±â... + // version1 storage method... + // Create dif file... // char szDir[_MAX_DIR], szFName[_MAX_FNAME]; _splitpath(szDTexFileName, NULL, szDir, szFName, NULL); wsprintf(szDTexInfoFileName, "%s%s%s.dif", s_szPath.c_str(), szDir, szFName); // Texture Information file - // ±×¿¡ °üÇÑ Å¸ÀÏ Á¤º¸µéÀ» Àаí.. + // Read the tile information about it... HANDLE hFile = CreateFile(szDTexInfoFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile != INVALID_HANDLE_VALUE) @@ -332,11 +332,11 @@ void CDTexMng::SaveToFile(CString RealFileName) { } // -// °ÔÀÓ¿¡¼­ ¾µ¼ö Àִ ŸÀÏ ÅØ½ºÃÄ Æ÷¸äÀ¸·Î º¯È¯ÈÄ ÀúÀå.. +// Convert to a tile texture format that can be used in the game and save it. // void CDTexMng::SaveGameTile() { D3DFORMAT Format; - int Size = DTEX_SIZE / NUM_DTEXTILE; //´ÜÀ§ÅؽºÃÄÀÇ ±æÀÌ.. + int Size = DTEX_SIZE / NUM_DTEXTILE; //Length of unit texture... D3DLOCKED_RECT d3dlr; HANDLE hFile; @@ -381,7 +381,7 @@ void CDTexMng::SaveGameTile() { CreateFile(szDTexGameFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); for (ix = 0; ix < NUM_DTEXTILE; ix++) { - //ÅØ½ºÃÄ ¼­ÆäÀ̽º ¸¸µé°í, ÅØ½ºÃÄ Ã¤¿ì°í, Çü½Ä º¯È¯Çϰí, ÀúÀå. + //Create a texture surface, fill the texture, convert format, and save. TileTex.Create(Size, Size, Format, TRUE); TileTex.Get()->LockRect(0, &d3dlrTarget, 0, 0); pSourceImg = (char *)((char *)d3dlr.pBits + (ix * Size * Bits) + (iz * Size * d3dlr.Pitch)); diff --git a/src/tool/N3ME/DTexMng.h b/src/tool/N3ME/DTexMng.h index 7cb41c16..4c660321 100644 --- a/src/tool/N3ME/DTexMng.h +++ b/src/tool/N3ME/DTexMng.h @@ -19,7 +19,7 @@ class CDTexMng : public CN3Base { public: std::list m_pDTex; CMainFrame * m_pMainFrm; - //int m_NumDTex; //dtex¸¦ ´ã°í ÀÖ´Â ¸¶Áö¸· ¹è¿­ + 1...^^ + //int m_NumDTex; //last array containing dtex + 1...^^ //CDTex* m_pDTex[MAX_TILETEXTURE]; public: diff --git a/src/tool/N3ME/DlgAddSoundGroup.cpp b/src/tool/N3ME/DlgAddSoundGroup.cpp index 4c89ae61..74eecaf7 100644 --- a/src/tool/N3ME/DlgAddSoundGroup.cpp +++ b/src/tool/N3ME/DlgAddSoundGroup.cpp @@ -112,7 +112,7 @@ BOOL CDlgAddSoundGroup::OnInitDialog() { void CDlgAddSoundGroup::OnBtnBgeName1() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -125,7 +125,7 @@ void CDlgAddSoundGroup::OnBtnBgeName1() { void CDlgAddSoundGroup::OnBtnBgeName2() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -138,7 +138,7 @@ void CDlgAddSoundGroup::OnBtnBgeName2() { void CDlgAddSoundGroup::OnBtnBgeName3() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -151,7 +151,7 @@ void CDlgAddSoundGroup::OnBtnBgeName3() { void CDlgAddSoundGroup::OnBtnBgeName4() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -164,7 +164,7 @@ void CDlgAddSoundGroup::OnBtnBgeName4() { void CDlgAddSoundGroup::OnBtnBgmName1() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -177,7 +177,7 @@ void CDlgAddSoundGroup::OnBtnBgmName1() { void CDlgAddSoundGroup::OnBtnBgmName2() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -190,7 +190,7 @@ void CDlgAddSoundGroup::OnBtnBgmName2() { void CDlgAddSoundGroup::OnBtnBgmName3() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -203,7 +203,7 @@ void CDlgAddSoundGroup::OnBtnBgmName3() { void CDlgAddSoundGroup::OnBtnBgmName4() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "WaveÆÄÀÏ(*.wav)|*.wav||", NULL); + CFileDialog dlg(TRUE, "wav", NULL, dwFlags, "Wave file(*.wav)|*.wav||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -219,7 +219,7 @@ void CDlgAddSoundGroup::OnOK() { GetDlgItemText(IDC_EDT_GROUPNAME, m_SndInfo.szName, 256); if (m_SndInfo.szName[0] == 0) { - AfxMessageBox("¹­À½À̸§À» ÀÔ·ÂÇÏ¼Å¾ß ÇØ¿ä.\n¾Õ¸Ó¸®¿¡ ¶ç¾î¾²±â ÇÏ¸é ¾ÈµÇ´Â°Å ¾ËÁÒ?^^"); + AfxMessageBox("You must enter the bundle name.\nYou know you shouldn't use spaces at the beginning, right?^^"); return; } diff --git a/src/tool/N3ME/DlgBase.cpp b/src/tool/N3ME/DlgBase.cpp index 61716594..dc4eee69 100644 --- a/src/tool/N3ME/DlgBase.cpp +++ b/src/tool/N3ME/DlgBase.cpp @@ -64,7 +64,7 @@ BOOL CDlgBase::OnInitDialog() { int nH = 0; ///////////////////////////////////// - // Transform µî·Ï Á¤º¸ + // Transform properties m_LPTransform.AddPropItem("Position", "", PIT_EDIT, ""); m_LPTransform.AddPropItem("Rotation", "", PIT_EDIT, ""); m_LPTransform.AddPropItem("Scale", "", PIT_EDIT, ""); @@ -72,31 +72,31 @@ BOOL CDlgBase::OnInitDialog() { m_LPTransform.GetWindowRect(&rc); nH = m_LPTransform.GetItemHeight(0) * m_LPTransform.GetCount() + 4; m_LPTransform.SetWindowPos(NULL, 0, 0, rc.Width(), nH, SWP_NOZORDER | SWP_NOMOVE); - // Transform µî·Ï Á¤º¸ + // Transform properties ///////////////////////////////////// ///////////////////////////////////// - // Camera µî·Ï Á¤º¸ + // Camera properties m_LPCamera.AddPropItem("Eye", "", PIT_EDIT, ""); m_LPCamera.AddPropItem("At", "", PIT_EDIT, ""); m_LPCamera.AddPropItem("Up", "", PIT_EDIT, ""); m_LPCamera.AddPropItem("Field Of View", "", PIT_EDIT, ""); m_LPCamera.AddPropItem("Near Plane", "", PIT_EDIT, ""); m_LPCamera.AddPropItem("Far Plane", "", PIT_EDIT, ""); - m_LPCamera.AddPropItem("¾È°³ »ç¿ë", "", PIT_EDIT, ""); - // m_LPCamera.AddPropItem("¾È°³ ¹Ðµµ", "", PIT_EDIT, ""); - m_LPCamera.AddPropItem("¾È°³ »ö", "", PIT_EDIT, ""); - // m_LPCamera.AddPropItem("¾È°³ ½ÃÀÛ", "", PIT_EDIT, ""); - // m_LPCamera.AddPropItem("¾È°³ ³¡", "", PIT_EDIT, ""); + m_LPCamera.AddPropItem("use fog", "", PIT_EDIT, ""); + // m_LPCamera.AddPropItem("fog density", "", PIT_EDIT, ""); + m_LPCamera.AddPropItem("fog color", "", PIT_EDIT, ""); + // m_LPCamera.AddPropItem("fog starts", "", PIT_EDIT, ""); + // m_LPCamera.AddPropItem("fog end", "", PIT_EDIT, ""); m_LPCamera.GetWindowRect(&rc); nH = m_LPCamera.GetItemHeight(0) * m_LPCamera.GetCount() + 4; m_LPCamera.SetWindowPos(NULL, 0, 0, rc.Width(), nH, SWP_NOZORDER | SWP_NOMOVE); - // Camera µî·Ï Á¤º¸ + // Camera properties ///////////////////////////////////// ///////////////////////////////////// - // Light µî·Ï Á¤º¸ + // Light properties m_LPLight.AddPropItem("On", "", PIT_EDIT, ""); m_LPLight.AddPropItem("Number", "", PIT_EDIT, ""); m_LPLight.AddPropItem("Type", "", PIT_COMBO, "Null|Point|Spot|Directional|"); @@ -112,13 +112,13 @@ BOOL CDlgBase::OnInitDialog() { m_LPLight.GetWindowRect(&rc); nH = m_LPLight.GetItemHeight(0) * m_LPLight.GetCount() + 4; m_LPLight.SetWindowPos(NULL, 0, 0, rc.Width(), nH, SWP_NOZORDER | SWP_NOMOVE); - // Light µî·Ï Á¤º¸ + // Light properties ///////////////////////////////////// CString str, strTmp; ///////////////////////////////////// - // Material µî·Ï Á¤º¸ + // Material properties m_LPMaterial.AddPropItem("Render Flags", "0", PIT_EDIT, "", 0); strTmp = "Null|D3DBLEND_ZERO|D3DBLEND_ONE|D3DBLEND_SRCCOLOR|D3DBLEND_INVSRCCOLOR|D3DBLEND_SRCALPHA|D3DBLEND_INVSRCALPHA|D3DBLEND_DESTALPHA|\ @@ -145,7 +145,7 @@ D3DTOP_BUMPENVMAP|D3DTOP_BUMPENVMAPLUMINANCE|D3DTOP_DOTPRODUCT|D3DTOP_MULTIPLYAD m_LPMaterial.GetWindowRect(&rc); nH = m_LPMaterial.GetItemHeight(0) * m_LPMaterial.GetCount() + 4; m_LPMaterial.SetWindowPos(NULL, 0, 0, rc.Width(), nH, SWP_NOZORDER | SWP_NOMOVE); - // Material µî·Ï Á¤º¸ + // Material properties ///////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -155,20 +155,20 @@ D3DTOP_BUMPENVMAP|D3DTOP_BUMPENVMAPLUMINANCE|D3DTOP_DOTPRODUCT|D3DTOP_MULTIPLYAD // for(int i = 0; i < nPartCount; i++) { strTmp.Format("%d", i); m_CBShapePart.AddString(strTmp); } // m_CBShapePart.SetCurSel(0); - m_LPShape.AddPropItem("¼Ò¼Ó", "", PIT_EDIT, ""); + m_LPShape.AddPropItem("Belong", "", PIT_EDIT, ""); m_LPShape.AddPropItem("Event ID", "", PIT_EDIT, ""); m_LPShape.AddPropItem("Event Type", "", PIT_EDIT, ""); m_LPShape.AddPropItem("NPC ID", "", PIT_EDIT, ""); m_LPShape.AddPropItem("NPC Status", "", PIT_EDIT, ""); - m_LPShape.AddPropItem("Part Add", "Part Ãß°¡", PIT_BUTTON, ""); - m_LPShape.AddPropItem("Part Delete", "Part »èÁ¦", PIT_BUTTON, ""); + m_LPShape.AddPropItem("Part Add", "Part Add¡", PIT_BUTTON, ""); + m_LPShape.AddPropItem("Part Delete", "Part Delete", PIT_BUTTON, ""); m_LPShape.AddPropItem("Face, Vertex Count", "", PIT_EDIT, ""); m_LPShape.AddPropItem("Texture File", "", PIT_FILE_MULTI, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Picture file that can be written as(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); m_LPShape.AddPropItem("Mesh File", "", PIT_FILE, "N3 Progressive Mesh File(*.N3PMesh)|*.N3PMesh||"); m_LPShape.AddPropItem("Collision Mesh File", "", PIT_FILE, "N3 Vector Mesh(*.N3VMesh)|*.N3VMesh||"); - m_LPShape.AddPropItem("Collision Mesh Delete", "Collision Mesh »èÁ¦", PIT_BUTTON, ""); + m_LPShape.AddPropItem("Collision Mesh Delete", "Collision Mesh Delete", PIT_BUTTON, ""); m_LPShape.GetWindowRect(&rc); nH = m_LPShape.GetItemHeight(0) * m_LPShape.GetCount() + 4; @@ -180,14 +180,14 @@ D3DTOP_BUMPENVMAP|D3DTOP_BUMPENVMAPLUMINANCE|D3DTOP_DOTPRODUCT|D3DTOP_MULTIPLYAD // ij¸¯ÅÍ m_LPChr.AddPropItem("Joint File", "", PIT_FILE, "N3 Joint File(*.N3Joint)|*.N3Joint||"); m_LPChr.AddPropItem("Collision Mesh File", "", PIT_FILE, "N3 Vector Mesh(*.N3VMesh)|*.N3VMesh||"); - m_LPChr.AddPropItem("Collision Mesh Delete", "Collision Mesh »èÁ¦", PIT_BUTTON, ""); + m_LPChr.AddPropItem("Collision Mesh Delete", "Collision Mesh Delete", PIT_BUTTON, ""); // m_LPChr.AddPropItem("Collision Skin File", "", PIT_FILE, "N3 Skin File(*.N3Skin)|*.N3Skin||"); - // m_LPChr.AddPropItem("Collision Skin Delete", "Collision Skin »èÁ¦", PIT_BUTTON, ""); + // m_LPChr.AddPropItem("Collision Skin Delete", "Collision Skin Delete", PIT_BUTTON, ""); - m_LPChr.AddPropItem("Part Add", "Part Ãß°¡", PIT_BUTTON, ""); - m_LPChr.AddPropItem("Part Delete", "Part »èÁ¦", PIT_BUTTON, ""); - m_LPChr.AddPropItem("Plug Add", "Plug Ãß°¡", PIT_BUTTON, ""); - m_LPChr.AddPropItem("Plug Delete", "Plug »èÁ¦", PIT_BUTTON, ""); + m_LPChr.AddPropItem("Part Add", "Part Add", PIT_BUTTON, ""); + m_LPChr.AddPropItem("Part Delete", "Part Delete", PIT_BUTTON, ""); + m_LPChr.AddPropItem("Plug Add", "Plug Add", PIT_BUTTON, ""); + m_LPChr.AddPropItem("Plug Delete", "Plug Delete", PIT_BUTTON, ""); m_CBChrPart.ResetContent(); m_CBChrPart.SetCurSel(0); @@ -199,17 +199,17 @@ D3DTOP_BUMPENVMAP|D3DTOP_BUMPENVMAPLUMINANCE|D3DTOP_DOTPRODUCT|D3DTOP_MULTIPLYAD } m_CBChrLOD.SetCurSel(0); - m_LPCPart.AddPropItem("Part Type", "", PIT_COMBO, "¸Ó¸®Ä«¶ô|¾ó±¼|»óü|ÇÏü|¼Õ|¹ß|??|"); + m_LPCPart.AddPropItem("Part Type", "", PIT_COMBO, "Hair|Face|Upper body|Lower body|Hands|Feet|??|"); m_LPCPart.AddPropItem("Texture File", "", PIT_FILE, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Texture Picture file that can be written as(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); // m_LPCPart.AddPropItem("Mesh File", "", PIT_FILE, "N3 Indexed Mesh File(*.N3IMesh)|*.N3IMesh||"); // m_LPCPart.AddPropItem("Skin File", "", PIT_FILE, "N3 Skin File(*.N3Skin)|*.N3Skin||"); - m_LPCPlug.AddPropItem("Plug Type", "", PIT_COMBO, "¿À¸¥¼ÕÀåÂø|¿Þ¼ÕÀåÂø|¾ç¼ÕÀåÂø"); + m_LPCPlug.AddPropItem("Plug Type", "", PIT_COMBO, "Right hand mounting | Left hand mounting | Both hands mounting"); m_LPCPlug.AddPropItem("Plug Joint", "", PIT_EDIT, ""); m_LPCPlug.AddPropItem("Plug Mesh File", "", PIT_FILE, "N3 Progressive Mesh File(*.N3PMesh)|*.N3PMesh||"); m_LPCPlug.AddPropItem("Plug Texture File", "", PIT_FILE, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Texture Picture file that can be written as(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); m_LPCPlug.AddPropItem("Plug Offset", "", PIT_EDIT, ""); m_LPCPlug.AddPropItem("Plug Rotation", "Reset", PIT_BUTTON, ""); m_LPCPlug.AddPropItem("Plug Scale", "", PIT_EDIT, ""); @@ -225,7 +225,7 @@ D3DTOP_BUMPENVMAP|D3DTOP_BUMPENVMAPLUMINANCE|D3DTOP_DOTPRODUCT|D3DTOP_MULTIPLYAD m_LPCPlug.GetWindowRect(&rc); nH = m_LPCPlug.GetItemHeight(0) * m_LPCPlug.GetCount() + 4; m_LPCPlug.SetWindowPos(NULL, 0, 0, rc.Width(), nH, SWP_NOZORDER | SWP_NOMOVE); - // ij¸¯ÅÍ + // character ///////////////////////////////////////////////////////////////////////////////////////////////////////// int nW = 100; @@ -339,7 +339,7 @@ void CDlgBase::UpdateInfo() { if (pItem) { pItem->m_curValue.Format("%f", pC->m_Data.fFP); } - pItem = m_LPCamera.GetPropItem("¾È°³ »ç¿ë"); + pItem = m_LPCamera.GetPropItem("Use fog"); if (pItem) { if (pC->m_bFogUse) { pItem->m_curValue = "On"; @@ -349,7 +349,7 @@ void CDlgBase::UpdateInfo() { } // pItem = m_LPCamera.GetPropItem("¾È°³ ¹Ðµµ"); // if(pItem) pItem->m_curValue.Format("%f", pC->m_fFogDensity); - pItem = m_LPCamera.GetPropItem("¾È°³ »ö"); + pItem = m_LPCamera.GetPropItem("Fog color"); if (pItem) { pItem->D3DColorSet(pC->m_FogColor); } @@ -444,7 +444,7 @@ void CDlgBase::UpdateInfo() { CN3Shape * pS = (CN3Shape *)pBase; CPropertyItem * pItem; - pItem = m_LPShape.GetPropItem("¼Ò¼Ó"); + pItem = m_LPShape.GetPropItem("Belong"); if (pItem) { pItem->m_curValue.Format("%d", pS->m_iBelong); } @@ -462,7 +462,7 @@ void CDlgBase::UpdateInfo() { } pItem = m_LPShape.GetPropItem("NPC Status"); if (pItem) { - pItem->m_curValue.Format("%d", pS->m_iNPC_Status); // NPC ·Î ¾²´Â ¿ÀºêÁ§Æ®ÀÏ °æ¿ì NPC Type + pItem->m_curValue.Format("%d", pS->m_iNPC_Status); // NPC Type if the object is used as an NPC } int nPartCount = pS->PartCount(); @@ -659,7 +659,7 @@ void CDlgBase::UpdateInfo() { // } } - // ºÙÀÌ´Â ¿ÀºêÁ§Æ®(¹«±â, Àå½Å±¸ µî...) Á¤º¸ Ç¥½Ã + // Display information about attached objects (weapons, accessories, etc.) int nPlug = m_CBChrPlug.GetCurSel(); int nPlugCount = pC->PlugCount(); m_CBChrPlug.ResetContent(); @@ -834,7 +834,7 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { pC->m_Data.fNP = (float)atof(pItem->m_curValue); } else if (pItem->m_propName == "Far Plane") { pC->m_Data.fFP = (float)atof(pItem->m_curValue); - } else if (pItem->m_propName == "¾È°³ »ç¿ë") { + } else if (pItem->m_propName == "Use fog") { if (lstrcmpi(pItem->m_curValue, "on") == 0) { pC->m_bFogUse = TRUE; } else { @@ -842,7 +842,7 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { } } // else if(pItem->m_propName == "¾È°³ ¹Ðµµ") pC->m_fFogDensity = (float)atof(pItem->m_curValue); - else if (pItem->m_propName == "¾È°³ »ö") { + else if (pItem->m_propName == "Fog color") { pC->m_FogColor = pItem->D3DColorGet(); } // else if(pItem->m_propName == "¾È°³ ½ÃÀÛ") pC->m_fFogStart = (float)atof(pItem->m_curValue); @@ -896,7 +896,7 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { CN3SPart * pPD = pS->Part(nPart); CPropertyItem * pItem = (CPropertyItem *)lParam; - if (pItem->m_propName == "¼Ò¼Ó" && pItem->m_curValue.GetLength() > 0) { + if (pItem->m_propName == "Belong" && pItem->m_curValue.GetLength() > 0) { pS->m_iBelong = atoi(pItem->m_curValue); } else if (pItem->m_propName == "Event ID" && pItem->m_curValue.GetLength() > 0) { pS->m_iEventID = atoi(pItem->m_curValue); @@ -905,7 +905,7 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { } else if (pItem->m_propName == "NPC ID" && pItem->m_curValue.GetLength() > 0) { pS->m_iNPC_ID = atoi(pItem->m_curValue); } else if (pItem->m_propName == "NPC Status" && pItem->m_curValue.GetLength() > 0) { - pS->m_iNPC_Status = atoi(pItem->m_curValue); // NPC ·Î ¾²´Â ¿ÀºêÁ§Æ®ÀÏ °æ¿ì NPC Type + pS->m_iNPC_Status = atoi(pItem->m_curValue); // NPC Type if the object is used as an NPC } else if (pItem->m_propName == "Collision Mesh File" && pItem->m_curValue.GetLength() > 0) { @@ -1023,12 +1023,12 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { if (pItem->m_propName == "Part Type") { CN3CPart * pPD = pC->Part(nPart); if (pPD) { - //del m_Type if(pItem->m_curValue == "¸Ó¸®Ä«¶ô") pPD->m_Type = PART_HAIR; - //del m_Type else if(pItem->m_curValue == "¾ó±¼") pPD->m_Type = PART_FACE; - //del m_Type else if(pItem->m_curValue == "»óü") pPD->m_Type = PART_UPPER; - //del m_Type else if(pItem->m_curValue == "ÇÏü") pPD->m_Type = PART_LOWER; - //del m_Type else if(pItem->m_curValue == "¼Õ") pPD->m_Type = PART_HAND; - //del m_Type else if(pItem->m_curValue == "¹ß") pPD->m_Type = PART_FOOT; + //del m_Type if(pItem->m_curValue == "Hair") pPD->m_Type = PART_HAIR; + //del m_Type else if(pItem->m_curValue == "Face") pPD->m_Type = PART_FACE; + //del m_Type else if(pItem->m_curValue == "Upper body") pPD->m_Type = PART_UPPER; + //del m_Type else if(pItem->m_curValue == "Lower body") pPD->m_Type = PART_LOWER; + //del m_Type else if(pItem->m_curValue == "Hand") pPD->m_Type = PART_HAND; + //del m_Type else if(pItem->m_curValue == "Foot") pPD->m_Type = PART_FOOT; //del m_Type else if(pItem->m_curValue == "??") pPD->m_Type = PART_UNKNOWN; } this->UpdateInfo(); @@ -1067,7 +1067,7 @@ BOOL CDlgBase::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) { CN3CPlugBase * pPlug = pC->Plug(nPlug); if (pItem->m_propName == "Plug Joint") { - int nJI = atoi(pItem->m_curValue); // Joint Index °¡ ¿µ¿ªÀ» ¹þ¾î³ªÁö ¸øÇϵµ·Ï... + int nJI = atoi(pItem->m_curValue); // Prevent the Joint Index from leaving the area... int nJC = 0; CN3Joint * pJ = pC->Joint(); if (pJ) { @@ -1160,7 +1160,7 @@ void CDlgBase::OnChangeEName() { } if (pBase != NULL) { CString str; - GetDlgItemText(IDC_E_NAME, str); // À̸§ ¹Ù²Ù±â.. + GetDlgItemText(IDC_E_NAME, str); // Change name... pBase->m_szName = str; } } diff --git a/src/tool/N3ME/DlgDTexGroupView.cpp b/src/tool/N3ME/DlgDTexGroupView.cpp index a23b6275..9134f5e0 100644 --- a/src/tool/N3ME/DlgDTexGroupView.cpp +++ b/src/tool/N3ME/DlgDTexGroupView.cpp @@ -124,7 +124,7 @@ void CDlgDTexGroupView::OnSelchangedTreeDtexGroup(NMHDR * pNMHDR, LRESULT * pRes HTREEITEM hChild = m_Tree.GetChildItem(hTree); HTREEITEM hParent = m_Tree.GetParentItem(hTree); - if (hParent == NULL) // ±× ±×·ìÀÇ ´ëÇ¥ÀûÀÎ ½æ³×Àϸ¸ º¸¿©ÁÖÀÚ.. + if (hParent == NULL) // Let's only show representative thumbnails of the group. { hTree = m_Tree.GetChildItem(hTree); hTree = m_Tree.GetChildItem(hTree); diff --git a/src/tool/N3ME/DlgDTexGroupView.h b/src/tool/N3ME/DlgDTexGroupView.h index ade9c0db..2bfb163e 100644 --- a/src/tool/N3ME/DlgDTexGroupView.h +++ b/src/tool/N3ME/DlgDTexGroupView.h @@ -15,7 +15,7 @@ class CDlgDTexGroupView : public CDialog { CN3Texture * m_pPrevTex; RECT m_PrevTexRect; - int m_iRadioState; // 0 ÀÚµ¿Âï±â 2 °­Á¦Âï±â 3 °­Á¦Ç®Å¸ÀÏ Âï±â + int m_iRadioState; // 0 Automatic photo 2 Forced photo 3 Forced full tile photo public: CDTexGroupMng * m_pDTexGroupMng; diff --git a/src/tool/N3ME/DlgEditWarp.cpp b/src/tool/N3ME/DlgEditWarp.cpp index 4360522e..f9b68f13 100644 --- a/src/tool/N3ME/DlgEditWarp.cpp +++ b/src/tool/N3ME/DlgEditWarp.cpp @@ -168,7 +168,7 @@ void CDlgEditWarp::OnOK() { void CDlgEditWarp::OnBtnExport() { CFileDialog dlg(FALSE, "wap", "Noname", OFN_EXPLORER | OFN_LONGNAMES | OFN_OVERWRITEPROMPT, - "Warp InfoÆÄÀÏ(*.wap)|*.wap||"); + "Warp Info file(*.wap)|*.wap||"); if (dlg.DoModal() == IDOK) { CString str = dlg.GetPathName(); @@ -178,7 +178,7 @@ void CDlgEditWarp::OnBtnExport() { void CDlgEditWarp::OnBtnImport() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "wap", NULL, dwFlags, "Warp InfoÆÄÀÏ(*.wap)|*.wap||", NULL); + CFileDialog dlg(TRUE, "wap", NULL, dwFlags, "Warp Info file(*.wap)|*.wap||", NULL); if (dlg.DoModal() == IDCANCEL) { return; diff --git a/src/tool/N3ME/DlgLight.cpp b/src/tool/N3ME/DlgLight.cpp index 7358b5db..8eeb9ccd 100644 --- a/src/tool/N3ME/DlgLight.cpp +++ b/src/tool/N3ME/DlgLight.cpp @@ -119,7 +119,7 @@ void CDlgLight::OnBtnUpload() { UpdateData(TRUE); if (m_strLightObjName.IsEmpty()) { - MessageBox("Light Object°´Ã¼ÀÇ À̸§ÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.", "-.-;"); + MessageBox("The name of the Light Object object is not specified.", "-.-;"); return; } diff --git a/src/tool/N3ME/DlgMakeNPCPath.cpp b/src/tool/N3ME/DlgMakeNPCPath.cpp index 4e202078..3c108c6c 100644 --- a/src/tool/N3ME/DlgMakeNPCPath.cpp +++ b/src/tool/N3ME/DlgMakeNPCPath.cpp @@ -298,7 +298,7 @@ void CDlgMakeNPCPath::OnBtnSavePathset() { void CDlgMakeNPCPath::OnBtnSaveServerPathset() { CFileDialog dlg(FALSE, "snr", "Noname", OFN_EXPLORER | OFN_LONGNAMES | OFN_OVERWRITEPROMPT, - "¼­¹ö NPC RouteÆÄÀÏ(*.snr)|*.snr||"); + "Server NPC Route file(*.snr)|*.snr||"); if (dlg.DoModal() == IDOK) { CString str = dlg.GetPathName(); diff --git a/src/tool/N3ME/DlgPondProperty.cpp b/src/tool/N3ME/DlgPondProperty.cpp index 5d32fde2..c5a0be99 100644 --- a/src/tool/N3ME/DlgPondProperty.cpp +++ b/src/tool/N3ME/DlgPondProperty.cpp @@ -51,6 +51,7 @@ ON_BN_CLICKED(IDC_BU_RECALCUV, OnButtonRecalUV) ON_BN_CLICKED(IDC_GROUP, OnButtonGroup) ON_CBN_SELCHANGE(IDC_COMBO_GOPOND, OnCobGOPond) //}}AFX_MSG_MAP +ON_BN_CLICKED(IDOK, &CDlgPondProperty::OnBnClickedOk) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// @@ -70,7 +71,7 @@ BOOL CDlgPondProperty::OnInitDialog() { m_LPPond.AddPropItem("WaterScaleHeight(int)", "", PIT_EDIT, ""); m_LPPond.AddPropItem("Texture File", "", PIT_FILE, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Picture file that can be used as texture(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); m_LPPond.AddPropItem("Alpha factor(hex)", "", PIT_EDIT, ""); m_LPPond.AddPropItem("Water tu(float)", "", PIT_EDIT, ""); @@ -156,9 +157,9 @@ void CDlgPondProperty::UpdateInfo() { } if (pSelPond->GetChangUVState() == TRUE) { - GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("Á¡À¸·Î"); + GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("By dot"); } else { - GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("ÆòÆíÇϰÔ"); + GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("Flatly"); } if (m_pPondMng->GetChooseGroup() == TRUE) { @@ -325,7 +326,7 @@ BOOL CDlgPondProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) } else if (pItem->m_propName == "WaterScaleWidth(int)") { int iWidht = (int)atoi(pItem->m_curValue); if (MAX_PONDMESH_VERTEX < iWidht * pSelPond->GetWaterScaleHeight()) { - MessageBox("¸¸µé¼öÀÖ´Â ÇѰ踦 ³Ñ¾ú½À´Ï´Ù."); + MessageBox("We have surpassed the limit of what can be created."); pItem->m_curValue.Format("%d", pSelPond->GetWaterScaleWidht()); return TRUE; } else { @@ -335,7 +336,7 @@ BOOL CDlgPondProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) } else if (pItem->m_propName == "WaterScaleHeight(int)") { int iHeight = (int)atoi(pItem->m_curValue); if (MAX_PONDMESH_VERTEX < iHeight * pSelPond->GetWaterScaleWidht()) { - MessageBox("¸¸µé¼öÀÖ´Â ÇѰ踦 ³Ñ¾ú½À´Ï´Ù."); + MessageBox("We have surpassed the limit of what can be created."); pItem->m_curValue.Format("%d", pSelPond->GetWaterScaleHeight()); return TRUE; } else { @@ -344,7 +345,7 @@ BOOL CDlgPondProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult) } } else if (pItem->m_propName == "Texture File") { CN3Base tmp; - tmp.m_szName = pItem->m_curValue; // »ó´ë°æ·Î·Î ¹Ù²Ù±â + tmp.m_szName = pItem->m_curValue; // Change to relative path if (pSelPond->SetTextureName(tmp.m_szName.c_str()) == FALSE) { CString strMsg; strMsg.Format("Cannot get \"%s\"Texture, check file and directory", pItem->m_curValue); @@ -370,10 +371,10 @@ void CDlgPondProperty::OnOK() { if (m_pPondMng->GetPondMesh(pSelPond->GetPondID()) == NULL) { CDialog::OnOK(); } else { - MessageBox("Áߺ¹µÇ´Â ¾ÆÀ̵ð ÀÔ´Ï´Ù."); + MessageBox("This is a duplicate ID."); } } else { - MessageBox("Texture¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù."); + MessageBox("Texture was not specified."); } } } @@ -419,10 +420,10 @@ void CDlgPondProperty::OnButtonRecalUV() { pSelPond->SetChangUVState(); if (pSelPond->GetChangUVState() == TRUE) { - GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("Á¡À¸·Î"); + GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("By dot"); pSelPond->ReCalcUV(); } else { - GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("ÆòÆíÇϰÔ"); + GetDlgItem(IDC_BU_RECALCUV)->SetWindowText("Flatly"); pSelPond->ReCalcVexUV(); } @@ -435,7 +436,8 @@ void CDlgPondProperty::OnButtonDeletePond() { } CPondMesh * pSelPond = m_pPondMng->GetSelPond(); if (pSelPond) { - if (MessageBox("¼±ÅÃµÈ ¿¬¸øÀ» Áö¿ì½Ã°Ú½À´Ï±î?", "Remove pond", MB_YESNO | MB_DEFBUTTON2) == IDNO) { + if (MessageBox("Are you sure you want to clear the selected pond?", "Remove pond", MB_YESNO | MB_DEFBUTTON2) == + IDNO) { return; } m_pPondMng->RemovePondMesh(pSelPond->GetPondID()); @@ -485,3 +487,8 @@ void CDlgPondProperty::OnButtonGroup() { GetDlgItem(IDC_GROUP)->SetWindowText("Gup Off"); } } + +void CDlgPondProperty::OnBnClickedOk() { + // TODO: Add your control notification handler code here + CDialog::OnOK(); +} diff --git a/src/tool/N3ME/DlgPondProperty.h b/src/tool/N3ME/DlgPondProperty.h index 82ef5b19..6ba47d1c 100644 --- a/src/tool/N3ME/DlgPondProperty.h +++ b/src/tool/N3ME/DlgPondProperty.h @@ -64,4 +64,6 @@ class CDlgPondProperty : public CDialog { afx_msg void OnCobGOPond(); //}}AFX_MSG DECLARE_MESSAGE_MAP() + public: + afx_msg void OnBnClickedOk(); }; diff --git a/src/tool/N3ME/DlgRegenUser.cpp b/src/tool/N3ME/DlgRegenUser.cpp index 6df0d2d4..469d3970 100644 --- a/src/tool/N3ME/DlgRegenUser.cpp +++ b/src/tool/N3ME/DlgRegenUser.cpp @@ -47,7 +47,7 @@ END_MESSAGE_MAP() void CDlgRegenUser::OnBtnLoadPathset() { DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "trur", NULL, dwFlags, "trurÆÄÀÏ(*.trur)|*.trur||", NULL); + CFileDialog dlg(TRUE, "trur", NULL, dwFlags, "trur file(*.trur)|*.trur||", NULL); if (dlg.DoModal() == IDCANCEL) { return; @@ -73,7 +73,7 @@ void CDlgRegenUser::OnBtnPathDelete() { void CDlgRegenUser::OnBtnSavePathset() { if (m_PathName.IsEmpty()) { CFileDialog dlg(FALSE, "trur", "Noname", OFN_EXPLORER | OFN_LONGNAMES | OFN_OVERWRITEPROMPT, - "trurÆÄÀÏ(*.trur)|*.trur||"); + "trur file(*.trur)|*.trur||"); if (dlg.DoModal() == IDOK) { m_PathName = dlg.GetPathName(); @@ -128,7 +128,7 @@ void CDlgRegenUser::PutRegion(VERTEXRECT * pVR) { void CDlgRegenUser::OnBtnSaveAs() { CFileDialog dlg(FALSE, "trur", "Noname", OFN_EXPLORER | OFN_LONGNAMES | OFN_OVERWRITEPROMPT, - "trurÆÄÀÏ(*.trur)|*.trur||"); + "trur file(*.trur)|*.trur||"); if (dlg.DoModal() == IDOK) { m_PathName = dlg.GetPathName(); diff --git a/src/tool/N3ME/DlgRiverProperty.cpp b/src/tool/N3ME/DlgRiverProperty.cpp index 79ebf60f..8af253a9 100644 --- a/src/tool/N3ME/DlgRiverProperty.cpp +++ b/src/tool/N3ME/DlgRiverProperty.cpp @@ -61,13 +61,13 @@ BOOL CDlgRiverProperty::OnInitDialog() { m_LPRiver.AddPropItem("meter / u", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("meter / v", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("Texture File", "", PIT_FILE, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Picture file that can be used as texture(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); m_LPRiver.AddPropItem("Animation Texture FPS", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("Speed2", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("meter / u2", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("meter / v2", "", PIT_EDIT, ""); m_LPRiver.AddPropItem("Animation Texture File", "", PIT_FILE, - "Texture ·Î ¾µ¼ö ÀÖ´Â ±×¸² ÆÄÀÏ(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); + "Picture file that can be used as texture(*.DXT; *.BMP; *.TGA)|*.DXT; *.BMP; *.TGA|"); int nW = 100; m_LPRiver.SetDividerWidth(nW); @@ -236,7 +236,7 @@ BOOL CDlgRiverProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult CPropertyItem * pItem = (CPropertyItem *)lParam; if (pItem->m_propName == "River ID") { if (m_pRiverMng->SetRiverID(pSelRiver, (int)atoi(pItem->m_curValue)) == FALSE) { - MessageBox("Á¸ÀçÇÏ´Â IDÀÔ´Ï´Ù."); + MessageBox("This ID exists."); pItem->m_curValue.Format("%d", pSelRiver->GetRiverID()); } } else if (pItem->m_propName == "Alpha factor(hex)") { @@ -249,7 +249,7 @@ BOOL CDlgRiverProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult pSelRiver->SetMeterPerV((float)atof(pItem->m_curValue)); } else if (pItem->m_propName == "Texture File") { CN3Base tmp; - tmp.m_szName = pItem->m_curValue; // »ó´ë°æ·Î·Î ¹Ù²Ù±â + tmp.m_szName = pItem->m_curValue; // Change to relative path if (pSelRiver->SetTextureName(tmp.m_szName.c_str()) == FALSE) { CString strMsg; strMsg.Format("Cannot get \"%s\"Texture, check file and directory", pItem->m_curValue); @@ -267,16 +267,17 @@ BOOL CDlgRiverProperty::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT * pResult } else if (pItem->m_propName == "meter / v2") { pSelRiver->SetMeterPerV2((float)atof(pItem->m_curValue)); } else if (pItem->m_propName == "Animation Texture File") { - // ¿¡´Ï¸ÞÀÌ¼Ç µÇ´Â ÅØ½ºÃÄ ÁöÁ¤ (°¹¼ö´Â ÆÄÀÏ À̸§À¸·ÎºÎÅÍ ¾Ë¾Æ³½´Ù. µû¶ó¼­ ¸Ç ¸¶Áö¸·¹øÈ£ÆÄÀÏÀ» ÁöÁ¤ÇؾßÇÔ) + // Specify the texture to be animated (the number is determined from the file name. Therefore, the last numbered file must be specified) CN3Base tmp; - tmp.m_szName = pItem->m_curValue; // »ó´ë°æ·Î·Î ¹Ù²Ù±â - // È­ÀÏ À̸§ ºÐ¸® + tmp.m_szName = pItem->m_curValue; // Change to relative path + // separate file name char szDir[_MAX_DIR]; char szFName[_MAX_FNAME]; char szExt[_MAX_EXT]; _splitpath(tmp.m_szName.c_str(), NULL, szDir, szFName, szExt); - int iCount = atoi(szFName + lstrlen(szFName) - 2) + 1; // ÆÄÀÏ À̸§ÀÇ ³¡¿¡ µÎÀÚ¸®¸¦ ¼ýÀÚ·Î º¯È¯ + int iCount = + atoi(szFName + lstrlen(szFName) - 2) + 1; // Convert the last two digits of the file name to numbers CString strFName = szDir; strFName += szFName; strFName = strFName.Left(strFName.GetLength() - 2); @@ -304,10 +305,10 @@ void CDlgRiverProperty::OnOK() { if (m_pRiverMng->GetRiverMesh(pSelRiver->GetRiverID()) == NULL) { CDialog::OnOK(); } else { - MessageBox("Áߺ¹µÇ´Â ¾ÆÀ̵ð ÀÔ´Ï´Ù."); + MessageBox("This is a duplicate ID."); } } else { - MessageBox("Texture¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù."); + MessageBox("Texture was not specified."); } } } @@ -339,7 +340,8 @@ void CDlgRiverProperty::OnButtonDeleteRiver() { } CRiverMesh * pSelRiver = m_pRiverMng->GetSelRiver(); if (pSelRiver) { - if (MessageBox("¼±ÅÃµÈ °­À» Áö¿ì½Ã°Ú½À´Ï±î?", "Remove river", MB_YESNO | MB_DEFBUTTON2) == IDNO) { + if (MessageBox("Are you sure you want to clear the selected river?", "Remove river", + MB_YESNO | MB_DEFBUTTON2) == IDNO) { return; } m_pRiverMng->RemoveRiverMesh(pSelRiver->GetRiverID()); diff --git a/src/tool/N3ME/DlgSceneGraph.cpp b/src/tool/N3ME/DlgSceneGraph.cpp index 551a3e92..c62c95c7 100644 --- a/src/tool/N3ME/DlgSceneGraph.cpp +++ b/src/tool/N3ME/DlgSceneGraph.cpp @@ -174,7 +174,7 @@ void CDlgSceneGraph::OnSelchangedTreeObj(NMHDR * pNMHDR, LRESULT * pResult) { NM_TREEVIEW * pNMTreeView = (NM_TREEVIEW *)pNMHDR; // TODO: Add your control notification handler code here - //pNMTreeView->itemNew->lParam //À̰ÍÀÌ ¼±ÅÃµÈ ¾ÆÀÌÅÛÀÇ (CN3Base*)ÀÌ´Ù. + //This is the (CN3Base*) of the selected item. m_pMapMng->SelectObject((CN3Base *)pNMTreeView->itemNew.lParam, m_IsSourceObj); Invalidate(FALSE); diff --git a/src/tool/N3ME/DlgSceneGraph.h b/src/tool/N3ME/DlgSceneGraph.h index e2724563..de52e4fd 100644 --- a/src/tool/N3ME/DlgSceneGraph.h +++ b/src/tool/N3ME/DlgSceneGraph.h @@ -13,14 +13,14 @@ class CMapMng; class CDlgSceneGraph : public CDialog { public: CN3Scene * m_pSceneRef; - BOOL m_IsSourceObj; // Display¿ëÀ̳Ä? (Åø¿¡¼­ ¿ÀºêÁ§Æ® ¸ñ·Ï) + BOOL m_IsSourceObj; // Is it for display? (List of objects in the tool) CMapMng * m_pMapMng; CImageList m_ImgList; protected: void UpdateTreeItem(HTREEITEM hParent, CN3Base * pBase); - DWORD m_dwFlag; // ¸ñ·Ï¿¡ Ç¥½ÃÇÒ °ÍµéÀ» ³ªÅ¸³½ Ç÷¡±× + DWORD m_dwFlag; // Flag indicating what to display in the list public: void SelectObject(HTREEITEM hItem, void * pItemData); diff --git a/src/tool/N3ME/DlgSetDTex.cpp b/src/tool/N3ME/DlgSetDTex.cpp index 5382570d..96d5d0ff 100644 --- a/src/tool/N3ME/DlgSetDTex.cpp +++ b/src/tool/N3ME/DlgSetDTex.cpp @@ -69,6 +69,7 @@ ON_BN_CLICKED(IDC_BTN_SAVE_NEWNAME_TILESET, OnBtnSaveNewnameTileset) ON_BN_CLICKED(IDC_BTN_SAVE_TILESET, OnBtnSaveTileset) ON_BN_CLICKED(IDC_BTN_LOAD_TILESET, OnBtnLoadTileset) //}}AFX_MSG_MAP +ON_STN_CLICKED(IDC_STATIC_TILESETNAME, &CDlgSetDTex::OnStnClickedStaticTilesetname) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// @@ -109,7 +110,7 @@ BOOL CDlgSetDTex::OnInitDialog() { CWnd * pView = GetDlgItem(IDC_TEXTUREVIEW); pView->SetWindowPos(NULL, 0, 0, (int)m_fTexSurfaceSize, (int)m_fTexSurfaceSize, SWP_DRAWFRAME | SWP_NOMOVE); - // texture ±×¸®´Â ¹öÆÛ.. + // Buffer for drawing texture.. pFrm->m_pEng->s_lpD3DDev->CreateVertexBuffer(4 * sizeof(__VertexTransformed), 0, FVF_TRANSFORMED, D3DPOOL_MANAGED, &m_pTexVB, NULL); @@ -123,7 +124,7 @@ BOOL CDlgSetDTex::OnInitDialog() { pVertices[3].Set(0.0f, m_fTexSurfaceSize - 1.0f, 0.1f, 0.5f, 0x00000000, 1.0f / DTexSize, DTexSize / DTexSize); m_pTexVB->Unlock(); - // Grid ±×¸®´Â ¹öÆÛ.. + // Grid drawing buffer.. pFrm->m_pEng->s_lpD3DDev->CreateVertexBuffer(((NUM_DTEXTILE - 1) << 2) * sizeof(__VertexTransformedColor), 0, FVF_TRANSFORMEDCOLOR, D3DPOOL_MANAGED, &m_pGridVB, NULL); @@ -244,7 +245,7 @@ void CDlgSetDTex::OnSelchangeComboFilelist() { int index; index = m_FileList.GetCurSel(); Invalidate(FALSE); - //µý°Å ³Ö¾î¾ß µÅ... + //You need to add something else... } void CDlgSetDTex::RenderGrid(LPDIRECT3DDEVICE9 lpDDev) { @@ -474,7 +475,7 @@ void CDlgSetDTex::OnBtnDelgroup() { } pDTexGroupMng->DelGroup(DelGroupID); - //¸ÊÁ¤º¸µµ °»½ÅÇØ¾ß°ÚÁö? ¹«È¿ÇÑ ±×·ìÁ¤º¸´Ï±î Áö¿ö¹ö·Á¾ßÁö.... + //Do we need to update the map information as well? Since the group information is invalid, it should be deleted.... CLyTerrain * pRefTerrain = pFrm->GetMapMng()->GetTerrain(); if (pRefTerrain) { int ix, iz; @@ -482,7 +483,7 @@ void CDlgSetDTex::OnBtnDelgroup() { for (iz = 0; iz < pRefTerrain->m_iHeightMapSize; iz++) { int TargetID; - //2¹ø... + //No.2... TargetID = pRefTerrain->m_ppMapData[ix][iz].DTexInfo2.Attr.Group; if (TargetID == DelGroupID) { pRefTerrain->m_ppMapData[ix][iz].DTexInfo2.Attr.Group = 0; @@ -491,7 +492,7 @@ void CDlgSetDTex::OnBtnDelgroup() { pRefTerrain->m_ppMapData[ix][iz].DTexInfo2.TexIdx.TexID = -1; } - //1¹ø... + //No.1... TargetID = pRefTerrain->m_ppMapData[ix][iz].DTexInfo1.Attr.Group; if (TargetID == DelGroupID) { pRefTerrain->m_ppMapData[ix][iz].DTexInfo1 = pRefTerrain->m_ppMapData[ix][iz].DTexInfo2; @@ -551,7 +552,7 @@ void CDlgSetDTex::OnBtnDeldtex() { int index = m_FileList.GetCurSel(); int DelDTexID; - //dtexÁö¿ì±â...^^ + //Clear dtex...^^ CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); CDTexGroupMng * pDTexGroupMng = pFrm->GetDTexGroupMng(); @@ -571,7 +572,7 @@ void CDlgSetDTex::OnBtnDeldtex() { m_FileList.SetCurSel(index); } - //¸ÊÁ¤º¸µµ °»½ÅÇØ¾ß°ÚÁö? ¾ø´Â ÅØ½ºÃÄÁ¤º¸´Â °°Àº ±×·ìÀÇ ´Ù¸¥ ÅØ½ºÃÄ·Î °»½Å.. + //Do we need to update the map information as well? Missing texture information is updated with another texture from the same group. CLyTerrain * pRefTerrain = pFrm->GetMapMng()->GetTerrain(); if (pRefTerrain) { int ix, iz; @@ -581,7 +582,7 @@ void CDlgSetDTex::OnBtnDeldtex() { int Group, Attr; DTEXTILEATTR DTexTileAttr; - //2¹ø... + //No 2 TargetID = pRefTerrain->m_ppMapData[ix][iz].DTexInfo2.TexIdx.TexID; if (TargetID == DelDTexID) { Group = pRefTerrain->m_ppMapData[ix][iz].DTexInfo2.Attr.Group; @@ -594,7 +595,7 @@ void CDlgSetDTex::OnBtnDeldtex() { } } - //1¹ø... + //No 1 TargetID = pRefTerrain->m_ppMapData[ix][iz].DTexInfo1.TexIdx.TexID; if (TargetID == DelDTexID) { Group = pRefTerrain->m_ppMapData[ix][iz].DTexInfo1.Attr.Group; @@ -672,3 +673,7 @@ void CDlgSetDTex::OnBtnLoadTileset() { Invalidate(FALSE); } } + +void CDlgSetDTex::OnStnClickedStaticTilesetname() { + // TODO: Add your control notification handler code here +} diff --git a/src/tool/N3ME/DlgSetDTex.h b/src/tool/N3ME/DlgSetDTex.h index 05d52515..b8e1fa9c 100644 --- a/src/tool/N3ME/DlgSetDTex.h +++ b/src/tool/N3ME/DlgSetDTex.h @@ -60,6 +60,9 @@ class CDlgSetDTex : public CDialog { void RenderGrid(LPDIRECT3DDEVICE9 lpDDev); void RenderTex(LPDIRECT3DDEVICE9 lpDDev); void InitVB(); + + public: + afx_msg void OnStnClickedStaticTilesetname(); }; //{{AFX_INSERT_LOCATION}} diff --git a/src/tool/N3ME/DlgShapeList.h b/src/tool/N3ME/DlgShapeList.h index 8197a3b0..9ed42761 100644 --- a/src/tool/N3ME/DlgShapeList.h +++ b/src/tool/N3ME/DlgShapeList.h @@ -17,7 +17,7 @@ class CDlgShapeList : public CDialog { CDlgShapeList(CWnd * pParent = NULL); // standard constructor CN3Scene * m_pSceneRef; - BOOL m_IsSourceObj; // Display¿ëÀ̳Ä? (Åø¿¡¼­ ¿ÀºêÁ§Æ® ¸ñ·Ï) + BOOL m_IsSourceObj; // Is it for display? (List of objects in the tool) CMapMng * m_pMapMng; // Dialog Data diff --git a/src/tool/N3ME/DlgSowSeed.cpp b/src/tool/N3ME/DlgSowSeed.cpp index 2f5dec09..ee7e3046 100644 --- a/src/tool/N3ME/DlgSowSeed.cpp +++ b/src/tool/N3ME/DlgSowSeed.cpp @@ -193,7 +193,7 @@ void CDlgSowSeed::RePaint() { char Name[60]; pFrame->GetMapMng()->m_pDlgSourceList->m_ListShape.GetText(group_list->Obj_ID, Name); group_list->Group_id = groupCount; - sprintf(text, "Ç® ID: %d , ÆÄÀϸí:%s", group_list->Group_id, Name); + sprintf(text, "Pool ID: %d , File name:%s", group_list->Group_id, Name); int CurPos = m_CB_TileGroup.GetCount(); m_CB_TileGroup.AddString(text); m_CB_TileGroup.SetCurSel(CurPos); @@ -237,12 +237,12 @@ void CDlgSowSeed::OnBtnGrassinfosave() { void CDlgSowSeed::OnBtnGrassRead() { int count = m_CB_Seed.GetCount(); if (count >= 8) { - MessageBox("´õÀÌ»ó ÅØ½ºÃĸ¦ ³ÖÀ» ¼ö°¡ ¾ø¾î¿ä.", "ºü¶¼·ç"); + MessageBox("I can't add any more textures.", "Warning"); return; } DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; - CFileDialog dlg(TRUE, "dxt", NULL, dwFlags, "Ç® ÅØ½ºÃÄ(*.dxt)|*.dxt||", NULL); + CFileDialog dlg(TRUE, "dxt", NULL, dwFlags, "Grass texture(*.dxt)|*.dxt||", NULL); if (dlg.DoModal() == IDCANCEL) { return; diff --git a/src/tool/N3ME/DlgUnusedFiles.cpp b/src/tool/N3ME/DlgUnusedFiles.cpp index 27a28c7e..8d4ec9bc 100644 --- a/src/tool/N3ME/DlgUnusedFiles.cpp +++ b/src/tool/N3ME/DlgUnusedFiles.cpp @@ -46,7 +46,7 @@ void CDlgUnusedFiles::OnDelete() { return; } - int iYesNo = MessageBox("Áö¿ì½Ã°Ú½À´Ï±î?", "È®ÀÎ", MB_YESNO); + int iYesNo = MessageBox("Are you sure you want to delete it?", "Warning", MB_YESNO); if (IDYES != iYesNo) { return; diff --git a/src/tool/N3ME/EventCell.cpp b/src/tool/N3ME/EventCell.cpp index ad0d0f6c..ae8928fd 100644 --- a/src/tool/N3ME/EventCell.cpp +++ b/src/tool/N3ME/EventCell.cpp @@ -83,7 +83,7 @@ void CEventCell::MakeTileVB(int x, int z, DWORD color) { return; } - if ((x + z) % 2 == 0) // ½½·¡½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 0) // Slash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; @@ -105,7 +105,7 @@ void CEventCell::MakeTileVB(int x, int z, DWORD color) { return; } - if ((x + z) % 2 == 1) //¹é½½·¹½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 1) //Backslash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; diff --git a/src/tool/N3ME/EventMgr.cpp b/src/tool/N3ME/EventMgr.cpp index e48ff617..ad6257d3 100644 --- a/src/tool/N3ME/EventMgr.cpp +++ b/src/tool/N3ME/EventMgr.cpp @@ -133,7 +133,7 @@ void CEventMgr::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -153,7 +153,7 @@ void CEventMgr::Render() { hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); - //ÀÌ¹Ì ¸¸µé¾îÁø ±æ ±×¸®±â... + //Draw an already created path... std::list::iterator itEvent; CEventCell * pEvent; @@ -166,12 +166,12 @@ void CEventMgr::Render() { pEvent->Render(0xff0000ff); } - //´ëÈ­»óÀÚ¿¡¼­ ¼±ÅÃµÈ ±æ ±×¸®±â. + //Draw the path selected in the dialog box. if (m_pDlgEventList->m_pSelEvent) { m_pDlgEventList->m_pSelEvent->Render(0xff00ff00); } - //¸¸µé°í ÀÖ´Â ±æ & ¿µ¿ª ±×¸®±â.. + //Drawing the path & area being created... m_pCurrEvent->Render(0xffff0000); // restore @@ -283,7 +283,7 @@ void CEventMgr::SaveToFile(const char * RealFileName) { GetCurrentDirectory(_MAX_PATH, szOldPath); SetCurrentDirectory(s_szPath.c_str()); - CreateDirectory("event", NULL); // °æ·Î ¸¸µé°í.. + CreateDirectory("event", NULL); // Create a path... char szNPCPathFileName[_MAX_PATH]; wsprintf(szNPCPathFileName, "%sevent\\%s.evt", s_szPath.c_str(), (LPCTSTR)RealFileName); @@ -358,7 +358,7 @@ void CEventMgr::MakeEventArray() { } void CEventMgr::SaveInfoTextFile(char * szEvent) { - // text ÆÄÀÏ ¹öÀü... + // text file version... FILE * stream = fopen(szEvent, "r"); //if(!stream) return; @@ -443,7 +443,7 @@ void CEventMgr::SaveInfoTextFile(char * szEvent) { /* void CEventMgr::SaveInfoTextFile(char* szEvent) { - // text ÆÄÀÏ ¹öÀü... + // text file version... FILE* stream = fopen(szEvent, "w"); if(!stream) return; diff --git a/src/tool/N3ME/EventMgr.h b/src/tool/N3ME/EventMgr.h index 95e70848..a47f3715 100644 --- a/src/tool/N3ME/EventMgr.h +++ b/src/tool/N3ME/EventMgr.h @@ -18,7 +18,7 @@ class CEventMgr : public CN3Base { int m_MapSize; short ** m_ppEvent; CMapMng * m_pRefMapMng; - bool m_bActive; // À̱â´ÉÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´ÂÁö...1:Ȱ¼ºÈ­, 0:ºñȰ¼ºÈ­.. + bool m_bActive; // Is this function activated? 1: Enabled, 0: Disabled.. CDlgEditEvent * m_pDlgEventList; public: diff --git a/src/tool/N3ME/LightObjMgr.cpp b/src/tool/N3ME/LightObjMgr.cpp index 2a3aa4b1..53c49b61 100644 --- a/src/tool/N3ME/LightObjMgr.cpp +++ b/src/tool/N3ME/LightObjMgr.cpp @@ -23,7 +23,7 @@ static char THIS_FILE[] = __FILE__; ////////////////////////////////////////////////////////////////////// CLightObjMgr::CLightObjMgr() { - m_pRefMapMng = NULL; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + m_pRefMapMng = NULL; // Terrain reference pointer.. m_bActive = false; m_iVersion = 1; @@ -35,14 +35,14 @@ CLightObjMgr::CLightObjMgr() { m_ListObj.clear(); - m_BaseCube[0].Set(0, 1, 0); // ¾ÕÂÊ LT - m_BaseCube[1].Set(1, 1, 0); // ¾ÕÂÊ RT - m_BaseCube[2].Set(0, 0, 0); // ¾ÕÂÊ LB - m_BaseCube[3].Set(1, 0, 0); // ¾ÕÂÊ RB - m_BaseCube[4].Set(0, 1, 1); // µÚÂÊ LT - m_BaseCube[5].Set(1, 1, 1); // µÚÂÊ RT - m_BaseCube[6].Set(0, 0, 1); // µÚÂÊ LB - m_BaseCube[7].Set(1, 0, 1); // µÚÂÊ RB + m_BaseCube[0].Set(0, 1, 0); // front LT + m_BaseCube[1].Set(1, 1, 0); // front RT + m_BaseCube[2].Set(0, 0, 0); // front LB + m_BaseCube[3].Set(1, 0, 0); // front RB + m_BaseCube[4].Set(0, 1, 1); // behind LT + m_BaseCube[5].Set(1, 1, 1); // behind RT + m_BaseCube[6].Set(0, 0, 1); // behind LB + m_BaseCube[7].Set(1, 0, 1); // behind RB m_pCurrLO = NULL; m_VtxPosDummy.Release(); @@ -218,7 +218,7 @@ void CLightObjMgr::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -238,7 +238,7 @@ void CLightObjMgr::Render() { hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); - //ÀÌ¹Ì ¸¸µé¾îÁø ¶óÀÌÆ®¿ÀºêÁ§Æ® ±×¸®±â... + //Drawing an already created light object... std::list::iterator it; LIGHTOBJ * pLO; for (it = m_ListObj.begin(); it != m_ListObj.end(); it++) { @@ -251,13 +251,13 @@ void CLightObjMgr::Render() { hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 12, &(m_CubeVB[0]), sizeof(__VertexXyzColor)); } - //ÇöÀç ¸¸µé°í ÀÖ´Â ¶óÀÌÆ®¿ÀºêÁ§Æ® ±×¸®±â. + //Draw the light object currently being created. if (m_pCurrLO && m_pCurrLO->pRefLight) { MakeCube(m_pCurrLO->pRefLight->Pos(), 0xffff0000); hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 12, &(m_CubeVB[0]), sizeof(__VertexXyzColor)); } - //´ÙÀ̾ó·Î±× â¿¡¼­ ¼±ÅÃµÈ ±æ ±×¸®±â.. + //Draw the selected path in the dialog window... pLO = m_pDlg->m_pSelLO; if (pLO) { MakeCube(pLO->pRefLight->Pos(), 0xff00ff00); diff --git a/src/tool/N3ME/LightObjMgr.h b/src/tool/N3ME/LightObjMgr.h index 26301b6e..2430fd31 100644 --- a/src/tool/N3ME/LightObjMgr.h +++ b/src/tool/N3ME/LightObjMgr.h @@ -32,7 +32,7 @@ class CLightObjMgr : public CN3BaseFileAccess { __VertexXyzColor m_CubeVB[36]; CDlgLight * m_pDlg; - CMapMng * m_pRefMapMng; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + CMapMng * m_pRefMapMng; // Terrain reference pointer.. bool m_bActive; std::list m_ListObj; diff --git a/src/tool/N3ME/LyTerrain.cpp b/src/tool/N3ME/LyTerrain.cpp index b705fbbd..7a4770a1 100644 --- a/src/tool/N3ME/LyTerrain.cpp +++ b/src/tool/N3ME/LyTerrain.cpp @@ -1,5 +1,5 @@ // LyTerrain.cpp: implementation of the CLyTerrain class. -// - 2001. 9.24.~ Map Editor¿ëÀ¸·Î º¯È¯... +// - 2001. 9.24.~ Converted for Map Editor... // ////////////////////////////////////////////////////////////////////// @@ -58,18 +58,18 @@ CLyTerrain::CLyTerrain() { m_EyePos.x = m_EyePos.y = 0; - m_ColorMapVB = NULL; // Ä÷¯¸Ê¾µ¶§.. - m_TileVB = NULL; // ŸÀÏ - m_LightMapVB = NULL; // ÇϳªÀÇ ¶óÀÌÆ®¸Ê + m_ColorMapVB = NULL; // When using a color map... + m_TileVB = NULL; // tile + m_LightMapVB = NULL; // one lightmap - m_iHeightLimit = 600; // ÀÛÀ» ¼ö·Ï ´õ Á¤¹Ðµµ°¡ ³ô¾ÆÁø´Ù.. - m_iDistLimit = 30; // Ŭ¼ö·Ï Á¤¹Ðµµ°¡ ³ô¾ÆÁø´Ù.. + m_iHeightLimit = 600; // The smaller it is, the higher the precision. + m_iDistLimit = 30; // The bigger it is, the higher the precision. m_iHeightMapSize = 1025; m_iMaxLevel = 9; //(log2(m_iHeightMapSize-1)) - 1 - m_iColorMapTexSize = 128; //Ä÷¯¸Ê ÅØ½ºÃÄÀÇ Å©±â.. - m_iColorMapPixelPerUnitDistance = 4; //UnitDistance´ç µé¾î°¡´Â Ä÷¯¸ÊÀÇ Çȼ¿ ¼ö.. + m_iColorMapTexSize = 128; //Size of color map texture.. + m_iColorMapPixelPerUnitDistance = 4; //Number of color map pixels per UnitDistance... m_iNumColorMap = 32; m_iNumTileMap = 0; @@ -254,7 +254,7 @@ void CLyTerrain::Release() { if (m_pColorTexture) { for (int x = 0; x < m_iNumColorMap; x++) { if (m_pColorTexture[x]) { - // for(int z=0;zCreateVertexBuffer(8 * sizeof(__VertexTransformedT2), 0, FVF_TRANSFORMEDT2, D3DPOOL_MANAGED, &m_pColorMapTmpVB, NULL); - //Ä÷¯¸Ê ÅØ½ºÃÄ ¸¸µé±â.. + //Create color map texture... m_iNumColorMap = (((m_iHeightMapSize - 1) * m_iColorMapPixelPerUnitDistance) / m_iColorMapTexSize) + 1; if (((m_iHeightMapSize - 1) * m_iColorMapPixelPerUnitDistance) % m_iColorMapTexSize == 0) { m_iNumColorMap--; @@ -496,10 +496,10 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz WriteFile(hFile, &(HeightMapSize), sizeof(int), &dwRWC, NULL); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. if (HeightMapSize > 0) { - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... DWORD dwAlloc = HeightMapSize * HeightMapSize * sizeof(float); HGLOBAL hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -513,12 +513,12 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz pfHeights[idx] = m_ppMapData[x][z].fHeight; } } - WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); // ÆÄÀÏ¿¡ ¾´´Ù.. + WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); //Write to file.. pfHeights = NULL; ::GlobalUnlock(hAlloc); ::GlobalFree(hAlloc); - // Detail Texture ÀúÀå.. + // Save Detail Texture.. dwAlloc = HeightMapSize * HeightMapSize * sizeof(DTEXINFO) * 2; hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -529,7 +529,7 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz ProgressBar.StepIt(); for (x = sx; x < ex; x++) { //////////////////////////////////////////////////////////////////// - // ¾²·¹±â Á¤º¸ Â÷´Ü... + // Block garbage information... if (m_ppMapData[x][z].DTexInfo1.TexIdx.TileX < 0 || m_ppMapData[x][z].DTexInfo1.TexIdx.TileX >= NUM_DTEXTILE) { m_ppMapData[x][z].DTexInfo1.TexIdx.TileX = 0; @@ -546,7 +546,7 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz m_ppMapData[x][z].DTexInfo2.TexIdx.TileY >= NUM_DTEXTILE) { m_ppMapData[x][z].DTexInfo2.TexIdx.TileY = 0; } - // ¾²·¹±â Á¤º¸ Â÷´Ü... + // Block garbage information... //////////////////////////////////////////////////////////////////// int idx = (z - sz) * HeightMapSize + (x - sx); @@ -554,16 +554,16 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz pDTexInfos[idx * 2 + 1] = m_ppMapData[x][z].DTexInfo2; } } - WriteFile(hFile, pDTexInfos, dwAlloc, &dwRWC, NULL); // ÆÄÀÏ¿¡ ¾´´Ù.. + WriteFile(hFile, pDTexInfos, dwAlloc, &dwRWC, NULL); //Write to file.. pDTexInfos = NULL; ::GlobalUnlock(hAlloc); ::GlobalFree(hAlloc); } - //¶óÀÌÆ®¸Ê Á¤º¸ ±â·Ï... - //N3ME_DATA_VERSION 1ÀÌ»óºÎÅÍ.. + //Record lightmap information... + //N3ME_DATA_VERSION 1 or higher... int NumLightMap = DetectRealLightMap(sx, sz, HeightMapSize); - WriteFile(hFile, &(NumLightMap), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(NumLightMap), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. if (NumLightMap > 0) { ProgressBar.Create("Save Light Map Data", 50, NumLightMap); @@ -595,7 +595,7 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz } } - //Ç® °ü·Ã Á¤º¸ ÀúÀå.. + //Save pool-related information.. CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); int NumSeedInfo = pFrm->m_SeedGroupList.size(); @@ -615,11 +615,11 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz CloseHandle(hFile); ///////////////////////////////////////////////////////////////////////////////////////////////////// - // Ä÷¯¸Ê ¾²±â. + // Write colormap. char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPath, szDrive, szDir, szFName, szExt); char szNewFName[_MAX_PATH] = ""; - _makepath(szNewFName, szDrive, szDir, szFName, "tcm"); // ÆÄÀÏ À̸§°ú µ¿ÀÏÇÑ À̸§À¸·Î Ä÷¯¸Ê ÀúÀå.. + _makepath(szNewFName, szDrive, szDir, szFName, "tcm"); // Save the color map with the same name as the file name. HANDLE hCMFile = CreateFile(szNewFName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -629,7 +629,7 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz } ////////////////////////////////////////////////////////// - //ÀÏ´Ü ±¹ÁöÀûÀÎ Ä÷¯¸ÊÀ» »ý¼ºÇÑ ´ÙÀ½¿¡....±×°É ½á¾ßÇØ... + //Once we create a local color map... we need to use it... // ProgressBar.Create("Create ColorMap", 50, NumColorMap * NumColorMap + NumColorMap); @@ -641,11 +641,11 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz } // - // fill color map.. - // bmpÄ÷¯¸Ê ¸¸µé°í... - // ´Ù½Ã Àоî¿Â ´ÙÀ½¿¡... - // ´Ù½Ã Àß¶ó¼­ ÀúÀåÇÑ ´ÙÀ½¿¡... - // Àß¶ó ÀúÀåÇÑ bmp¸¦ ImportÇÏ´Â °Íó·³ Àо ¼ÂÆÃ.. + //fill color map.. + // Create a bmp color map... + // After reading again... + // After cutting and saving again... + // Read and set the cut and saved BMP as if importing it. CString strTmpColorMap("c:\\MiniMap.bmp"); ColorMapExport((LPCTSTR)strTmpColorMap); @@ -694,7 +694,7 @@ bool CLyTerrain::SaveToFilePartition(const char * lpszPath, float psx, float psz // // Save() -// ¸Ê¿¡µðÅÍ¿¡¼­ ¾²´Â ÆÄÀÏ Å¸ÀÔÀ¸·Î ÀúÀåÇϱâ.. +// Save as the file type used in the map editor.. // bool CLyTerrain::SaveToFile(const char * lpszPath) { HANDLE hFile = CreateFile(lpszPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -710,10 +710,10 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { WriteFile(hFile, &(m_iHeightMapSize), sizeof(int), &dwRWC, NULL); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. if (m_iHeightMapSize > 0) { - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... DWORD dwAlloc = m_iHeightMapSize * m_iHeightMapSize * sizeof(float); HGLOBAL hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -726,12 +726,12 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { pfHeights[z * m_iHeightMapSize + x] = m_ppMapData[x][z].fHeight; } } - WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); // ÆÄÀÏ¿¡ ¾´´Ù.. + WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); //Write to file.. pfHeights = NULL; ::GlobalUnlock(hAlloc); ::GlobalFree(hAlloc); - // Detail Texture ÀúÀå.. + // Save Detail Texture.. dwAlloc = m_iHeightMapSize * m_iHeightMapSize * sizeof(DTEXINFO) * 2; hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -742,7 +742,7 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { ProgressBar.StepIt(); for (x = 0; x < m_iHeightMapSize; x++) { //////////////////////////////////////////////////////////////////// - // ¾²·¹±â Á¤º¸ Â÷´Ü... + // Block garbage information... if (m_ppMapData[x][z].DTexInfo1.TexIdx.TileX < 0 || m_ppMapData[x][z].DTexInfo1.TexIdx.TileX >= NUM_DTEXTILE) { m_ppMapData[x][z].DTexInfo1.TexIdx.TileX = 0; @@ -759,23 +759,23 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { m_ppMapData[x][z].DTexInfo2.TexIdx.TileY >= NUM_DTEXTILE) { m_ppMapData[x][z].DTexInfo2.TexIdx.TileY = 0; } - // ¾²·¹±â Á¤º¸ Â÷´Ü... + // Block garbage information... //////////////////////////////////////////////////////////////////// pDTexInfos[(z * m_iHeightMapSize + x) * 2] = m_ppMapData[x][z].DTexInfo1; pDTexInfos[(z * m_iHeightMapSize + x) * 2 + 1] = m_ppMapData[x][z].DTexInfo2; } } - WriteFile(hFile, pDTexInfos, dwAlloc, &dwRWC, NULL); // ÆÄÀÏ¿¡ ¾´´Ù.. + WriteFile(hFile, pDTexInfos, dwAlloc, &dwRWC, NULL); //Write to file.. pDTexInfos = NULL; ::GlobalUnlock(hAlloc); ::GlobalFree(hAlloc); } - //¶óÀÌÆ®¸Ê Á¤º¸ ±â·Ï... - //N3ME_DATA_VERSION 1ÀÌ»óºÎÅÍ.. + //Record lightmap information... + //N3ME_DATA_VERSION 1 or higher... DetectRealLightMap(0, 0, m_iHeightMapSize); - WriteFile(hFile, &(m_iNumLightMap), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(m_iNumLightMap), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. int CountLightMap = m_iNumLightMap; if (CountLightMap > 0) { @@ -809,7 +809,7 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { } } - //Ç® °ü·Ã Á¤º¸ ÀúÀå.. + //Save pool-related information.. CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); int NumSeedInfo = pFrm->m_SeedGroupList.size(); @@ -829,11 +829,11 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { CloseHandle(hFile); ///////////////////////////////////////////////////////////////////////////////////////////////////// - // Ä÷¯¸Ê ¾²±â. + // Write colormap. char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPath, szDrive, szDir, szFName, szExt); char szNewFName[_MAX_PATH] = ""; - _makepath(szNewFName, szDrive, szDir, szFName, "tcm"); // ÆÄÀÏ À̸§°ú µ¿ÀÏÇÑ À̸§À¸·Î Ä÷¯¸Ê ÀúÀå.. + _makepath(szNewFName, szDrive, szDir, szFName, "tcm"); // Save the color map with the same name as the file name. HANDLE hCMFile = CreateFile(szNewFName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -858,14 +858,14 @@ bool CLyTerrain::SaveToFile(const char * lpszPath) { { ProgressBar.StepIt(); - _makepath(szNewFName, szDrive, szDir, szFName, NULL); // ÆÄÀÏ À̸§°ú µ¿ÀÏÇÑ À̸§À¸·Î Ä÷¯¸Ê ÀúÀå.. - wsprintf(szAdd, "_%02d%02d.DXT", x, z); // Tool °æ·Î¸¦ ºÙÀÌ°í ¹øÈ£¿Í È®ÀåÀÚ¸¦ ºÙ¿©¼­ ÀúÀå.. + _makepath(szNewFName, szDrive, szDir, szFName, NULL); // Save the color map with the same name as the file name. + wsprintf(szAdd, "_%02d%02d.DXT", x, z); // Add the tool path and save it with a number and extension. lstrcat(szNewFName, szAdd); m_pColorTexture[x][z].SaveToFile(szNewFName); } } */ - // Ä÷¯¸Ê ¾²±â. + // Write colormap. ///////////////////////////////////////////////////////////////////////////////////////////////////// return true; @@ -885,19 +885,19 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { int HeightMapSize; int version = 0; ReadFile(hFile, &(version), sizeof(int), &dwRWC, NULL); - if (version < 0) //¹öÀüÀÌ ±â·ÏµÈ µ¥ÀÌÅ͵é.... + if (version < 0) //Data with recorded versions.... { ReadFile(hFile, &(HeightMapSize), sizeof(int), &dwRWC, NULL); } else { - HeightMapSize = version; //¹öÀüÀÌ ±â·ÏµÇ¾î ÀÖÁö ¾ÊÀº ÀÌÀü µ¥ÀÌÅ͵é.. + HeightMapSize = version; //Previous data whose version is not recorded... } Init(HeightMapSize); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. if (m_iHeightMapSize > 0) { - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... DWORD dwAlloc = m_iHeightMapSize * m_iHeightMapSize * sizeof(float); HGLOBAL hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -916,7 +916,7 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { hAlloc = NULL; fHeights = NULL; - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... dwAlloc = m_iHeightMapSize * m_iHeightMapSize * sizeof(DTEXINFO) * 2; hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -939,10 +939,10 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { pDTIs = NULL; } - if (version <= -1) //¹öÀü 1ºÎÅÍ....^^ + if (version <= -1) //From version 1....^^ { - //¶óÀÌÆ®¸Ê Á¤º¸ Àбâ.. - ReadFile(hFile, &(m_iNumLightMap), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + //Read light map information.. + ReadFile(hFile, &(m_iNumLightMap), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. ProgressBar.Create("Load Light Map Data", 50, m_iNumLightMap); if (version > -3) { @@ -979,9 +979,9 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { } } } - if (version <= -2) //¹öÀü 2ºÎÅÍ....^^ + if (version <= -2) //From version 2....^^ { - // Ç®¾¾¿¡ °üÇÑ Á¤º¸ Àбâ.. + // Read information about grass seeds... int NumSeedInfo; ReadFile(hFile, &(NumSeedInfo), sizeof(int), &dwRWC, NULL); @@ -1002,14 +1002,15 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { CloseHandle(hFile); ///////////////////////////////////////////////////////////////////////////////////////////////////// - // Ä÷¯¸Ê Àбâ. + // Read the colormap. ProgressBar.Create("Load color map..", 50, m_iNumColorMap * m_iNumColorMap); char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPath, szDrive, szDir, szFName, szExt); char szNewFName[_MAX_PATH] = "", szAdd[_MAX_PATH] = ""; - _makepath(szNewFName, szDrive, szDir, szFName, "tcm"); // ÆÄÀÏ À̸§°ú µ¿ÀÏÇÑ À̸§À¸·Î Ä÷¯¸Ê ÀúÀåµÇ¾î ÀÖ´Ù. + _makepath(szNewFName, szDrive, szDir, szFName, + "tcm"); // The color map is saved with the same name as the file name. HANDLE hCMFile = CreateFile(szNewFName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (INVALID_HANDLE_VALUE == hCMFile) { for (x = 0; x < m_iNumColorMap; x++) { @@ -1017,12 +1018,13 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { ProgressBar.StepIt(); _makepath(szNewFName, szDrive, szDir, szFName, - NULL); // ÆÄÀÏ À̸§°ú µ¿ÀÏÇÑ À̸§À¸·Î Ä÷¯¸Ê ÀúÀåµÇ¾î ÀÖ´Ù. - wsprintf(szAdd, "_%02d%02d.DXT", x, z); // Tool °æ·Î¸¦ ºÙÀÌ°í ¹øÈ£¿Í È®ÀåÀÚ¸¦ ºÙ¿©¼­ ÀúÀåµÇ¾î ÀÖ´Ù. + NULL); // The color map is saved with the same name as the file name. + wsprintf(szAdd, "_%02d%02d.DXT", x, + z); // It is saved with the tool path attached and a number and extension added. lstrcat(szNewFName, szAdd); if (m_pColorTexture[x][z].LoadFromFile(szNewFName) == false) { - MessageBox(::GetActiveWindow(), "Ä÷¯¸ÊÀº 32bit dxtÆÄÀϸ¸ »ç¿ëÇÒ ¼ö ÀÖ¾î¿ä..", "¤Ð.¤Ð", MB_OK); + MessageBox(::GetActiveWindow(), "Only 32bit dxt files can be used for color maps.", "¤Ð.¤Ð", MB_OK); } } } @@ -1038,10 +1040,10 @@ bool CLyTerrain::LoadFromFile(const char * lpszPath) { CloseHandle(hCMFile); } - // Ä÷¯¸Ê Àбâ. + // Read the colormap. ///////////////////////////////////////////////////////////////////////////////////////////////////// - //¶óÀÌÆ®¸ÊÅØ½ºÃÄ ¼öµµ ÀÖ°í, ÅØ½ºÃĵµ ¼¼ÆÃ.. + //Can be a light map texture, and also set the texture.. m_pRoot->SetWholeClipped(); m_pRoot->ClearMinMaxY(); m_pRoot->SetMinMaxY(); @@ -1095,7 +1097,7 @@ void CLyTerrain::ConvertLightMapToolDataV2toV3() { } } - //dc¸¸µé¾î¼­ ºñÆ®¸ÊÃà¼Ò.. + //Create dc and reduce bitmap.. pBMP->SaveToFile("c:\\templightmap.bmp"); int SmallSize = LIGHTMAP_TEX_SIZE - 2; @@ -1144,11 +1146,11 @@ void CLyTerrain::ConvertLightMapToolDataV2toV3() { SelectObject(hBMDC, hOldBM); SelectObject(hSmallDC, hOldBM2); - DeleteFile("c:\\templightmap.bmp"); // Àӽà ÆÄÀÏÀ» Áö¿öÁØ´Ù.. + DeleteFile("c:\\templightmap.bmp"); // Delete temporary files. } } - //Å׵θ® ¸¸µé±â.. + //Create border... D3DLOCKED_RECT d3dlrDest; DWORD * pDestBits; int srcX, srcZ; @@ -1285,7 +1287,7 @@ void CLyTerrain::ConvertLightMapToolDataV2toV3() { // // SaveGameData -// °ÔÀÓ¿¡ ¾µ µ¥ÀÌŸ¸¦ ÀúÀå.. +// Save data to be used in the game. // void CLyTerrain::SaveGameData(HANDLE hFile) { MMap TexTree; @@ -1293,7 +1295,7 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { // /////////////////////// - // µ¥ÀÌŸ À籸¼º... + // Reorganize data... // short tmpTexIdx; short tmpTileIdx; @@ -1365,13 +1367,13 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } // - // ±â·Ï ½ÃÀÛ...^^... + // Start recording...^^... // DWORD dwRWC; WriteFile(hFile, &m_iHeightMapSize, sizeof(int), &dwRWC, NULL); - // °¢ ²ÀÁöÁ¡ Á¤º¸ ÀúÀå... - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // Store each vertex information... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... DWORD dwAlloc = sizeof(GAMEMAPDATA) * m_iHeightMapSize * m_iHeightMapSize; HGLOBAL hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -1412,15 +1414,15 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } } - WriteFile(hFile, pGMDs, dwAlloc, &dwRWC, NULL); // Á»´õ »¡¸® ÀúÀåÇÏ·Á°í ¸ô¾Æ¼­ ÀúÀå.... + WriteFile(hFile, pGMDs, dwAlloc, &dwRWC, NULL); // I rushed to save it to save it faster.... GlobalUnlock(hAlloc); GlobalFree(hAlloc); hAlloc = NULL; pGMDs = NULL; - // °¢ ÆÐÄ¡ÀÇ °¡¿îµ¥ y°ª°ú ¹ÝÁö¸§ ÀúÀå.. + // Store the center y value and radius of each patch.. int ti_PatchSize = 8; // 32m = 8tiles.. - float re_HalfDist = (float)((ti_PatchSize >> 1) << 2); //ÆÐÄ¡±æÀÌÀÇ Àý¹Ý..(m´ÜÀ§) + float re_HalfDist = (float)((ti_PatchSize >> 1) << 2); //Half of the patch length.. (unit of m) float MinY, MaxY; int pat_HeightMapSize = (m_iHeightMapSize - 1) / ti_PatchSize; @@ -1452,7 +1454,7 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } } - //ŸÀÏ¿¡ Ç® ¼Ó¼º ÀúÀå.. + //Save pool properties to tile.. CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); pFrm->GetMapMng()->m_SowSeedMng.SaveDataGame(); LPSEEDGROUP SeedAttr = new SEEDGROUP[m_iHeightMapSize * m_iHeightMapSize]; @@ -1515,7 +1517,7 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } } - /* ¿ø·¡ÀÇ Ç® ÀúÀå + /* Save the original pool int NumSeedInfo = pFrm->m_SeedGroupList.size(); for(int x=0; xObj_Id, v.SeedGroup_Sub->Seed_Count); + fprintf(stream, "Serve %d,%d\t", v.SeedGroup_Sub->Obj_Id, v.SeedGroup_Sub->Seed_Count); } fprintf(stream, "\n"); @@ -1561,11 +1563,11 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } fclose(stream); - //WriteFile(hFile, szFName, _MAX_PATH, &dwRWC, NULL); // Ä÷¯¸Ê À̸§ ÀúÀå. - //Ä÷¯¸ÊÀº MapMng¿¡¼­ µû·Î ÀúÀåÇÑ´Ù.. + //WriteFile(hFile, szFName, _MAX_PATH, &dwRWC, NULL); // Save the colormap name. + //The color map is stored separately in MapMng. // - // ŸÀÏÅØ½ºÃÄÁ¤º¸ ÀúÀå... + // Save tile texture information... // WriteFile(hFile, &NumTile, sizeof(int), &dwRWC, NULL); if (NumTile != 0) { @@ -1580,7 +1582,7 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { pTexture = GetTileTex(TexIdx); if (pTexture) { - // °æ·Î¸¦ »©°í ÆÄÀÏÀ̸§°ú È®ÀåÀÚ¸¸ ÀúÀåÇØÁØ´Ù. + // Save only the file name and extension, excluding the path. char szTileFN[MAX_PATH]; _splitpath(pTexture->FileName().c_str(), NULL, NULL, szFName, NULL); wsprintf(szTileFN, "dtex\\%s_%d.gtt", szFName, YIdx); @@ -1605,15 +1607,15 @@ void CLyTerrain::SaveGameData(HANDLE hFile) { } } - //¶óÀÌÆ®¸Ê Á¤º¸ ±â·Ï... + //Record lightmap information... DetectRealLightMap(0, 0, m_iHeightMapSize); int CountLightMap; CountLightMap = 0; - //¶óÀÌÆ®¸ÊÀº µû·Î ÆÄÀÏ·Î ÀúÀåÇØ¼­ ¾²±â¶§¹®¿¡ °Á 0À¸·Î ÇØ¼­ ÀúÀå... + //The light map is saved as a separate file, so just save it as 0... //CountLightMap = m_iNumLightMap; - WriteFile(hFile, &(CountLightMap), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(CountLightMap), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. if (CountLightMap > 0) { ProgressBar.Create("Save Light Map Data", 50, m_iNumLightMap); @@ -1660,7 +1662,7 @@ void CLyTerrain::MakeGameLightMap(char * szFullPathName) { int * PatchInfo = new int[PatchCount * PatchCount]; ZeroMemory(PatchInfo, sizeof(int) * PatchCount * PatchCount); - //°¢°¢ÀÇ ÆÄÀÏÀ» ¸¸µé¾î º¸°í Å©±âµµ ¾Ë¾Æ³»ÀÚ.. + //Let’s create each file and find out its size. int Size = sizeof(int) * PatchCount * PatchCount + sizeof(int); int px, pz; int tx, tz; @@ -1688,19 +1690,19 @@ void CLyTerrain::MakeGameLightMap(char * szFullPathName) { continue; } - //ÀÓ½ÃÆÄÀÏ ¸¸µé°í ÀúÀåÇÔ ÇØº¸°í, ¿ë·® ¾Ë¾Æ³½´ÙÀ½....ÀúÀåÇÒ±î? + // Let's create a temporary file and save it, find out its size... Shall we save it? char szTmpName[_MAX_PATH]; sprintf(szTmpName, "c:\\temp_lightmap.binn"); HANDLE hFile = CreateFile(szTmpName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - WriteFile(hFile, &(TexCount), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(TexCount), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. for (tx = 0; tx < PATCH_TILE_SIZE; tx++) { for (tz = 0; tz < PATCH_TILE_SIZE; tz++) { if (m_ppIsLightMap[tpx + tx][tpz + tz] == true && m_ppLightMapTexture[tpx + tx][tpz + tz]) { - WriteFile(hFile, &(tx), sizeof(int), &dwRWC, NULL); // ÆÐÄ¡¾È¿¡¼­ÀÇ ÁÂÇ¥ - WriteFile(hFile, &(tz), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(tx), sizeof(int), &dwRWC, NULL); // coordinates within patch + WriteFile(hFile, &(tz), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. m_ppLightMapTexture[tpx + tx][tpz + tz]->Convert(D3DFMT_A4R4G4B4, LIGHTMAP_TEX_SIZE, LIGHTMAP_TEX_SIZE); @@ -1746,11 +1748,11 @@ void CLyTerrain::MakeGameLightMap(char * szFullPathName) { continue; } - WriteFile(hFile, &(TexCount), sizeof(int), &dwRWC, NULL); // LightMapÀÇ °¹¼ö ±â·Ï.. + WriteFile(hFile, &(TexCount), sizeof(int), &dwRWC, NULL); // Record the number of LightMap.. for (tx = 0; tx < PATCH_TILE_SIZE; tx++) { for (tz = 0; tz < PATCH_TILE_SIZE; tz++) { if (m_ppIsLightMap[tpx + tx][tpz + tz] == true && m_ppLightMapTexture[tpx + tx][tpz + tz]) { - WriteFile(hFile, &(tx), sizeof(int), &dwRWC, NULL); // ÆÐÄ¡¾È¿¡¼­ÀÇ ÁÂÇ¥ + WriteFile(hFile, &(tx), sizeof(int), &dwRWC, NULL); // coordinates within patch WriteFile(hFile, &(tz), sizeof(int), &dwRWC, NULL); // CN3Texture * pNewTex = new CN3Texture; @@ -1774,12 +1776,12 @@ void CLyTerrain::MakeGameLightMap(char * szFullPathName) { void CLyTerrain::MakeGameColorMap(char * szFullPathName) { HANDLE hCMFile = CreateFile(szFullPathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Save game color map..", 50, m_iNumColorMap * m_iNumColorMap); ProgressBar.SetStep(1); /////////////////////////////////////////////////////////////// - //¿øº»...(Ãà¼Ò½ÃŰÁö ¾Ê´Â¹æ¹ý..) + //Original... (How not to reduce it...) //* CN3Texture TexTmp; TexTmp.Create(m_iColorMapTexSize, m_iColorMapTexSize, D3DFMT_A1R5G5B5, TRUE); @@ -1806,7 +1808,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { /////////////////////////////////////////////////////////////// // - // New...(Ãà¼Ò½ÃŰ´Â¹æ¹ý..) + // New...(How to shrink...) /* int x,z; CBitMapFile BMP[3][3]; @@ -1837,7 +1839,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { } //for(int az=0;az<3;az++) } //for(int ax=0;ax<3;ax++) - //Çȼ¿ Àç¹è¿­... + //Pixel rearrangement... int SmallSize = m_iColorMapTexSize - 2; TexTmp.Convert(D3DFMT_X8R8G8B8, m_iColorMapTexSize, m_iColorMapTexSize); TexTmp.Get()->LockRect(0, &d3dlrTex, 0, 0); @@ -1908,7 +1910,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { SelectObject( hSmallDC, hOldBM2 ); - DeleteFile(buff); // Àӽà ÆÄÀÏÀ» Áö¿öÁØ´Ù.. + DeleteFile(buff); // Delete temporary files. } } TexTmp.Get()->UnlockRect(0); @@ -1927,17 +1929,17 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { CloseHandle(hCMFile); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Çȼ¿À» Çϳª¾¿ ¹Ð¾î¼­ ¼±À» ¾ø¾Ö´Â ÅØ½ºÃÄ ÀúÀå.. - // ±×·±µ¥ texturestagestate¿¡¼­ mirror¾²¸é Á» ¾î»öÇϱä ÇØµµ ¾î´ÀÁ¤µµ´Â µÇ´õ¶ó...-.- + // Save a texture that removes lines by sliding pixels one by one. + // However, if you use mirror in texturestagestate, it is a bit awkward, but it works to some extent...-.- // /* HANDLE hCMFile = CreateFile(szFullPathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Save game color map..", 50, m_iNumColorMap * m_iNumColorMap); ProgressBar.SetStep(1); - //bitmap°¡°ø... + //bitmap processing... ColorMapExport("c:\\TempColormap.bmp"); int OrgWidth, OrgHeight; @@ -1976,7 +1978,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { hBMDC, 0,0, OrgWidth, OrgHeight, SRCCOPY); - // n3texture °¡°ø.. + // n3texture processing.. CN3Texture TexTmp; LPDWORD pImgTarget; D3DLOCKED_RECT d3dlrTarget; @@ -2025,7 +2027,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { memcpy(&(pImgTarget[i*TexSize]), &(pBitmapBits[sx + (sz+i)*SmallWidth]), DestWidth*sizeof(DWORD)); TexTmp.Get()->UnlockRect(0); - TexTmp.Convert(D3DFMT_DXT1); // DXT1 Çü½ÄÀ¸·Î Convert + TexTmp.Convert(D3DFMT_DXT1); // Convert to DXT1 format TexTmp.Save(hCMFile); } } @@ -2035,15 +2037,15 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { SelectObject( hBMDC, hOldBM ); SelectObject( hSmallDC, hOldBM2 ); - DeleteFile("c:\\TempColormap.bmp"); // Àӽà ÆÄÀÏÀ» Áö¿öÁØ´Ù.. + DeleteFile("c:\\TempColormap.bmp"); // Delete temporary files. */ // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// - // Ä÷¯¸ÊÀ» ÀúÀåÇØÁØ´Ù.(old version..) - // Ä÷¯ ¸Ê À̸§.. ÆÄÀÏÀ̸§¸¸(È®ÀåÀÚ´Â ¾ø´Ù.) ÀúÀåÇØÁØ´Ù. - // Ä÷¯¸ÊÀ» ÆÐÄ¡º°·Î µû·Î ÀúÀå... + // Save the color map. (old version..) + // Color map name.. Saves only the file name (no extension). + // Save the color map separately for each patch... /* char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(m_szFileName, szDrive, szDir, szFName, szExt); @@ -2052,7 +2054,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { ProgressBar.Create("Save game color map..", m_iNumColorMap * m_iNumColorMap, 50); ProgressBar.SetStep(1); - WriteFile(hFile, szFName, _MAX_PATH, &dwRWC, NULL); // Ä÷¯¸Ê À̸§ ÀúÀå. + WriteFile(hFile, szFName, _MAX_PATH, &dwRWC, NULL); // Save the colormap name. CN3Texture TexTmp; char szNewFName[_MAX_PATH] = "", szAdd[_MAX_PATH] = ""; @@ -2062,9 +2064,9 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { { ProgressBar.StepIt(); - m_pColorTexture[x][z].SaveToFile("c:\\TempConversion.DXT"); // Àӽ÷ΠÀúÀå. - TexTmp.LoadFromFile("c:\\TempConversion.DXT"); // Àд´Ù. - TexTmp.Convert(D3DFMT_DXT1); // DXT1 Çü½ÄÀ¸·Î Convert + m_pColorTexture[x][z].SaveToFile("c:\\TempConversion.DXT"); // Save temporarily. + TexTmp.LoadFromFile("c:\\TempConversion.DXT"); // read + TexTmp.Convert(D3DFMT_DXT1); // Convert to DXT1 format _makepath(szNewFName, szDrive, szDir, szFName, NULL); wsprintf(szAdd, "_%02d%02d.dxt", x, z); @@ -2072,7 +2074,7 @@ void CLyTerrain::MakeGameColorMap(char * szFullPathName) { TexTmp.SaveToFile(szNewFName); } } - DeleteFile("c:\\TempConversion.DXT"); // Àӽà ÆÄÀÏÀ» Áö¿öÁØ´Ù.. + DeleteFile("c:\\TempConversion.DXT"); // Delete temporary files. */ // /////////////////////////////////////////////////////////////////////////////////////////// @@ -2096,7 +2098,7 @@ void CLyTerrain::Tick() { } // -// °¡½Ã°Å¸® ¹üÀ§ Á¤Çϱâ...(ŸÀÏ´ÜÀ§) +// Set the visibility range... (tile unit) // void CLyTerrain::SetVisibleRect() { int tx, tz; @@ -2114,22 +2116,22 @@ void CLyTerrain::SetVisibleRect() { m_VisibleRect.left = m_VisibleRect.right = tx; m_VisibleRect.top = m_VisibleRect.bottom = tz; - // »ç¸éüÀÇ ¹ý¼± º¤ÅÍ¿Í Far ³× ±ÍÅüÀÌ À§Ä¡ °è»ê.. + // Calculate the normal vector of the tetrahedron and the positions of the far four corners.. float fS = sinf(CN3Base::s_CameraData.fFOV / 2.0f); float fPL = CN3Base::s_CameraData.fFP; - float fAspect = CN3Base::s_CameraData.fAspect; // Á¾È¾ºñ + float fAspect = CN3Base::s_CameraData.fAspect; // aspect ratio - // Far Plane ÀÇ ³× ±ÍÅüÀÌ À§Ä¡ °è»ê + // Calculate the positions of the four corners of the Far Plane __Vector3 vFPs[4] = {__Vector3(fPL * -fS * fAspect, fPL * fS, fPL), // LeftTop __Vector3(fPL * fS * fAspect, fPL * fS, fPL), // rightTop __Vector3(fPL * fS * fAspect, fPL * -fS, fPL), // RightBottom __Vector3(fPL * -fS * fAspect, fPL * -fS, fPL)}; // LeftBottom for (int i = 0; i < 4; i++) { - // ±ÍÅüÀÌ À§Ä¡¿¡ ȸÀü Çà·ÄÀ» Àû¿ëÇÑ´Ù.. + // Apply rotation matrix to corner positions. vFPs[i] = vFPs[i] * CN3Base::s_CameraData.mtxViewInverse; - int tx, tz; // ŸÀÏÁÂÇ¥°è... + int tx, tz; // Tile coordinate system... tx = (int)(vFPs[i].x / TERRAIN_CELL_SIZE); tz = (int)(vFPs[i].z / TERRAIN_CELL_SIZE); @@ -2191,7 +2193,7 @@ void CLyTerrain::Render() { hr = s_lpD3DDev->GetSamplerState(1, D3DSAMP_ADDRESSU, &AddressU2); hr = s_lpD3DDev->GetSamplerState(1, D3DSAMP_ADDRESSV, &AddressV2); - // °¢°¢ÀÇ ÅØ½ºÃĵéÀ» ¿¬°áÇßÀ»¶§ °æ°è¼±À» ¾ø¾Ù ¼ö ÀÖ´Ù..^^ + // When connecting each texture, the border can be removed..^^ hr = s_lpD3DDev->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR); hr = s_lpD3DDev->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR); hr = s_lpD3DDev->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR); @@ -2212,7 +2214,7 @@ void CLyTerrain::Render() { RenderBrushArea(); - //¶óÀÌÆ®¸Ê ¶óÀÎ.. + //Light map line.. //if(m_bDrawLineLightMap) if (m_vLineLightMap[0] != m_vLineLightMap[1]) { HRESULT hr; @@ -2247,7 +2249,7 @@ void CLyTerrain::Render() { } // -// °¢Á¡¿¡ ´ëÇØ ±×¸±Áö¾Æ´ÒÁö¸¦ ÃʱâÈ­..('¾Æ´Ï´Ù'·Î ÃʱâÈ­) +// Initialize whether or not to draw for each point... (initialize to 'no') // inline void CLyTerrain::ClearRenderInfo() { for (int i = 0; i < m_iHeightMapSize; i++) { @@ -2257,7 +2259,7 @@ inline void CLyTerrain::ClearRenderInfo() { // // Log2(x) = l.. -// 2ÀÇ ½Â¼ö¿¡ ´ëÇØ¼­¸¸ Á¦´ë·Î ÀÛµ¿...(x>0) +// Only works properly for powers of 2...(x>0) // inline int CLyTerrain::Log2(int x) { int l = 0; @@ -2269,7 +2271,7 @@ inline int CLyTerrain::Log2(int x) { } // -// ³ôÀ̰ª ¾ò´Â ÇÔ¼ö... +// Function to get the height value... // float CLyTerrain::GetHeight(float x, float z) { int ix, iz; @@ -2290,20 +2292,20 @@ float CLyTerrain::GetHeight(float x, float z) { float y; float h1, h2, h3, h12, h13; - if ((ix + iz) % 2 == 0) //»ç°¢ÇüÀÌ / ¸ð¾ç.. + if ((ix + iz) % 2 == 0) //square / shape... { h1 = m_ppMapData[ix][iz].fHeight; h3 = m_ppMapData[ix + 1][iz + 1].fHeight; - if (dZ > dX) //À­ÂÊ »ï°¢Çü.. + if (dZ > dX) //Upper triangle... { h2 = m_ppMapData[ix][iz + 1].fHeight; - h12 = h1 + (h2 - h1) * dZ; // h1°ú h2»çÀÌÀÇ ³ôÀ̰ª - h13 = h1 + (h3 - h1) * dZ; // h1°ú h3»çÀÌÀÇ ³ôÀ̰ª + h12 = h1 + (h2 - h1) * dZ; // Height value between h1 and h2 + h13 = h1 + (h3 - h1) * dZ; // Height value between h1 and h3 - y = h12 + ((h13 - h12) * (dX / dZ)); // ã°íÀÚ ÇÏ´Â ³ôÀ̰ª + y = h12 + ((h13 - h12) * (dX / dZ)); // Height value to find return y; - } else //¾Æ·¡ÂÊ »ï°¢Çü.. + } else //Down triangle... { if (dX == 0.0f) { return h1; @@ -2311,18 +2313,18 @@ float CLyTerrain::GetHeight(float x, float z) { h2 = m_ppMapData[ix + 1][iz].fHeight; - h12 = h1 + (h2 - h1) * dX; // h1°ú h2»çÀÌÀÇ ³ôÀ̰ª - h13 = h1 + (h3 - h1) * dX; // h1°ú h3»çÀÌÀÇ ³ôÀ̰ª + h12 = h1 + (h2 - h1) * dX; // Height value between h1 and h2 + h13 = h1 + (h3 - h1) * dX; // Height value between h1 and h3 - y = h12 + ((h13 - h12) * (dZ / dX)); // ã°íÀÚ ÇÏ´Â ³ôÀ̰ª + y = h12 + ((h13 - h12) * (dZ / dX)); // Height value to find return y; } - } else if ((ix + iz) % 2 == 1) //»ç°¢ÇüÀÌ ¿ª½½·¹½¬ ¸ð¾ç.. + } else if ((ix + iz) % 2 == 1) //The rectangle is in the shape of a backslash... { h1 = m_ppMapData[ix + 1][iz].fHeight; h3 = m_ppMapData[ix][iz + 1].fHeight; - if ((dX + dZ) > 1.0f) //À­ÂÊ »ï°¢Çü.. + if ((dX + dZ) > 1.0f) //Upper triangle... { if (dZ == 0.0f) { return h1; @@ -2334,15 +2336,15 @@ float CLyTerrain::GetHeight(float x, float z) { y = h12 + ((h13 - h12) * ((1.0f - dX) / dZ)); return y; - } else //¾Æ·¡ÂÊ »ï°¢Çü.. + } else //Down triangle... { if (dX == 1.0f) { return h1; } h2 = m_ppMapData[ix][iz].fHeight; - h12 = h2 + (h1 - h2) * dX; // h1°ú h2»çÀÌÀÇ ³ôÀ̰ª - h13 = h3 + (h1 - h3) * dX; // h1°ú h3»çÀÌÀÇ ³ôÀ̰ª + h12 = h2 + (h1 - h2) * dX; // Height value between h1 and h2 + h13 = h3 + (h1 - h3) * dX; // Height value between h1 and h3 y = h12 + ((h13 - h12) * (dZ / (1.0f - dX))); return y; @@ -2353,7 +2355,7 @@ float CLyTerrain::GetHeight(float x, float z) { // // GetPatchNum(float fSize) -// fSizeÅ©±âÀÇ ÆÐÄ¡°¡ Àüü ¸Ê¿¡¼­ °¡·Î¼¼·Î·Î ¸î°³¾¿ ³ª¿À´ÂÁö.... +// How many patches of size fSize appear horizontally and vertically in the entire map... // SIZE CLyTerrain::GetPatchNum(float fSize) { SIZE size; @@ -2369,7 +2371,7 @@ SIZE CLyTerrain::GetPatchNum(float fSize) { // // MouseMsgFilter(LPMSG pMsg) -// ¸¶¿ì½º ó¸®.. +// Mouse handling... // BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { if (m_iEditMode == TEM_NOT) { @@ -2380,7 +2382,7 @@ BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { static POINT ptSelHeightMapPos; static int iPrevScreenY = 0; const float fDelta = 0.10f; - static int iSumOfEditedHeight = 0; // À̹ø µå·¡±×·Î º¯È­µÈ ÁöÇü³ôÀÌÀÇ ÇÕ + static int iSumOfEditedHeight = 0; // Sum of terrain height changed by this drag switch (pMsg->message) { case WM_MOUSEMOVE: { @@ -2396,7 +2398,7 @@ BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { } } - if (nFlags & MK_LBUTTON && m_iEditMode == TEM_LIGHTMAP) //¶óÀÌÆ®¸ÊÄ¥Çϱâ.. + if (nFlags & MK_LBUTTON && m_iEditMode == TEM_LIGHTMAP) //Painting the light map... { __Vector3 vPos; if (Pick(point.x, point.y, &vPos, &ptSelHeightMapPos)) { @@ -2414,7 +2416,7 @@ BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { } } - if (nFlags & MK_RBUTTON && m_iEditMode == TEM_LIGHTMAP) //¶óÀÌÆ®¸ÊÄ¥Çϱâ.. + if (nFlags & MK_RBUTTON && m_iEditMode == TEM_LIGHTMAP) //Painting the light map... { __Vector3 vPos; if (Pick(point.x, point.y, &vPos, &ptSelHeightMapPos)) { @@ -2447,7 +2449,7 @@ BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { iz = (int)vPos.z / TERRAIN_CELL_SIZE; SetDTex(ix, iz); } - if (m_iEditMode == TEM_LIGHTMAP) //¶óÀÌÆ®¸ÊÄ¥Çϱâ.. + if (m_iEditMode == TEM_LIGHTMAP) //Painting the light map... { int ix, iz; ix = (int)vPos.x / TERRAIN_CELL_SIZE; @@ -2703,8 +2705,8 @@ BOOL CLyTerrain::MouseMsgFilter(LPMSG pMsg) { // // Terrain Picking -// vec : ÁöÇü¿¡¼­ ÇÇÅ·µÈ°÷ÀÇ ½ÇÁÂÇ¥ -// pHeightMapPos : ÇÇÅ·µÈ °÷¿¡¼­ °¡Àå °¡±î¿î ³ôÀ̸ÊÀÇ ÁÂÇ¥ +// vec: Real coordinates of the picked location on the terrain +// pHeightMapPos: Coordinates of the height map closest to the picked location bool CLyTerrain::Pick(int x, int y, __Vector3 * vec, POINT * pHeightMapPos) { __Vector3 vec2, vec3; // vec1 & vec2 is 2D.. vec3 & vec4 is 3D.. CRect rect; @@ -2731,7 +2733,7 @@ bool CLyTerrain::Pick(int x, int y, __Vector3 * vec, POINT * pHeightMapPos) { // Get the inverse view matrix D3DXMATRIX matView, m; D3DXVECTOR3 vOrig, vDir; - CN3Base::s_lpD3DDev->GetTransform(D3DTS_VIEW, &matView); // ³» ¸¾´ë·Î µÇ¶ó..!! ¾å..~~ + CN3Base::s_lpD3DDev->GetTransform(D3DTS_VIEW, &matView); // Do whatever you want..!! Yay..~~ D3DXMatrixInverse(&m, NULL, &matView); // Transform the screen space pick ray into 3D space @@ -2807,7 +2809,7 @@ bool CLyTerrain::Pick(int x, int y, __Vector3 * vec, POINT * pHeightMapPos) { continue; } - if ((ix + iz) % 2 == 1) // ´ç±Ù.. ¿Þ¼Õ ¹ÙÀεù... + if ((ix + iz) % 2 == 1) // Carrot.. Left hand binding... { A.Set((float)ix * TERRAIN_CELL_SIZE, m_ppMapData[ix][iz].fHeight, (float)iz * TERRAIN_CELL_SIZE); C.Set((float)(ix + 1) * TERRAIN_CELL_SIZE, m_ppMapData[ix + 1][iz].fHeight, @@ -2943,7 +2945,7 @@ int CLyTerrain::DetectRealLightMap(int sx, int sz, int range) { bIsEmpty = true; - //¿Ü°¢Å׵θ® Àִ°Å.. + //Something with an outer border... for (int bx = 0; bx < LIGHTMAP_TEX_SIZE; bx++) { for (int bz = 0; bz < LIGHTMAP_TEX_SIZE; bz++) { DWORD dwAlpha = pImg[bx + bz * LIGHTMAP_TEX_SIZE]; @@ -2956,7 +2958,7 @@ int CLyTerrain::DetectRealLightMap(int sx, int sz, int range) { } } } - /* ¿Ü°¢Å׵θ® ¾ø´Â°Å.. + /* There is no outer border... for(int i=0; iGet()->UnlockRect(0); - if (bIsEmpty) //ÅÖºó ¶óÀÌÆ®¸ÊÀ̾ú´ç...-.-++ + if (bIsEmpty) //It was an empty lightmap...-.-++ { m_iNumLightMap--; m_ppIsLightMap[x][z] = false; @@ -3001,10 +3003,10 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float memset(d3dlrt.pBits, 0x00, sizeof(DWORD) * LIGHTMAP_TEX_SIZE * LIGHTMAP_TEX_SIZE); /////////////////////////////////////// - //¿Ü°¢ ¶óÀÎ ±×¸®±â... + //Draw an outer line... /////////////////////////////////////// - //¿ÞÂÊ(LT) Ä¥Çϱâ.. + //Paint the left (LT)... if ((x - 1) >= 0 && (z + 1) < m_iHeightMapSize && m_ppLightMapTexture[x - 1][z + 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x - 1][z + 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3014,7 +3016,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float pDest[0] = pSource[((LIGHTMAP_TEX_SIZE - 2) * LIGHTMAP_TEX_SIZE) + (LIGHTMAP_TEX_SIZE - 2)]; m_ppLightMapTexture[x - 1][z + 1]->Get()->UnlockRect(0); } - //¿ÞÂÊ(LM) Ä¥Çϱâ.. + //Paint the left (LM)... if ((x - 1) >= 0 && m_ppLightMapTexture[x - 1][z]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x - 1][z]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3026,7 +3028,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float } m_ppLightMapTexture[x - 1][z]->Get()->UnlockRect(0); } - //¿ÞÂÊ(LB) Ä¥Çϱâ.. + //Paint the left (LB)... if ((x - 1) >= 0 && (z - 1) >= 0 && m_ppLightMapTexture[x - 1][z - 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x - 1][z - 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3036,7 +3038,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float pDest[(LIGHTMAP_TEX_SIZE - 1) * LIGHTMAP_TEX_SIZE] = pSource[LIGHTMAP_TEX_SIZE + (LIGHTMAP_TEX_SIZE - 2)]; m_ppLightMapTexture[x - 1][z - 1]->Get()->UnlockRect(0); } - //¾Æ·¡ÂÊ(CB) Ä¥Çϱâ.. + //Paint the bottom (CB)... if ((z - 1) >= 0 && m_ppLightMapTexture[x][z - 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x][z - 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3048,7 +3050,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float sizeof(DWORD) * (LIGHTMAP_TEX_SIZE - 2)); m_ppLightMapTexture[x][z - 1]->Get()->UnlockRect(0); } - //¿À¸¥ÂÊ(RT) Ä¥Çϱâ.. + //Paint the right side (RT)... if ((x + 1) < m_iHeightMapSize && (z + 1) < m_iHeightMapSize && m_ppLightMapTexture[x + 1][z + 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x + 1][z + 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3058,7 +3060,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float pDest[LIGHTMAP_TEX_SIZE - 1] = pSource[1 + ((LIGHTMAP_TEX_SIZE - 2) * LIGHTMAP_TEX_SIZE)]; m_ppLightMapTexture[x + 1][z + 1]->Get()->UnlockRect(0); } - //¿À¸¥ÂÊ(RM) Ä¥Çϱâ.. + //Paint the right side (RM)... if ((x + 1) < m_iHeightMapSize && m_ppLightMapTexture[x + 1][z]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x + 1][z]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3070,7 +3072,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float } m_ppLightMapTexture[x + 1][z]->Get()->UnlockRect(0); } - //¿À¸¥ÂÊ(RB) Ä¥Çϱâ.. + //Paint the right side (RB)... if ((x + 1) < m_iHeightMapSize && (z - 1) >= 0 && m_ppLightMapTexture[x + 1][z - 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x + 1][z - 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3081,7 +3083,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float pSource[1 + LIGHTMAP_TEX_SIZE]; m_ppLightMapTexture[x + 1][z - 1]->Get()->UnlockRect(0); } - //À§ÂÊ(CT) Ä¥Çϱâ.. + //Paint the top (CT)... if ((z + 1) < m_iHeightMapSize && m_ppLightMapTexture[x][z + 1]) { D3DLOCKED_RECT d3dlrtSource; m_ppLightMapTexture[x][z + 1]->Get()->LockRect(0, &d3dlrtSource, 0, 0); @@ -3102,7 +3104,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float m_iNumLightMap++; } - //º»°ÝÄ¥Çϱâ... + //The actual painting... m_ppLightMapTexture[x][z]->Get()->LockRect(0, &d3dlrt, 0, 0); LPDWORD pDest = (LPDWORD)d3dlrt.pBits; @@ -3111,7 +3113,7 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float DWORD OrgColor = pDest[PixelPos]; DWORD NewColor = 0x00000000; - if (m_pDlgSetLightMap->MoreLight()) //¿¶°Ô ±×¸®±â(Áö¿ì±â) + if (m_pDlgSetLightMap->MoreLight()) //Light drawing (erase) { //if(OrgColor < Color) pDest[lcx + (LIGHTMAP_TEX_SIZE-lcz-1)*LIGHTMAP_TEX_SIZE] = 0xffffffff; NewColor = 0x00000000; @@ -3305,19 +3307,20 @@ void CLyTerrain::FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float } // -// lcx, lcz´Â ¶óÀÌÆ®¸ÊŸÀϳ»¿¡¼­ÀÇ ÁÂÇ¥.. +// lcx, lcz are coordinates within the light map tile.. // void CLyTerrain::SetLightMap(int x, int z, int lcx, int lcz) { DWORD SrcColor; int PenSize, Hardness; PenSize = m_pDlgSetLightMap->GetPenSize(); //1~(LIGHTMAP_TEX_SIZE-2) Hardness = m_pDlgSetLightMap->GetHardness(); //1~100 - SrcColor = m_pDlgSetLightMap->GetColor(); //ÀüüÀûÀÎ Ä÷¯. + SrcColor = m_pDlgSetLightMap->GetColor(); //Overall color. int ix, iz; int dist; int nx, nz, nlx, nlz; - int LimitFullColor = (((float)Hardness / 100.0f) * (float)PenSize); //Á߽ɿ¡¼­ Ç®Ä÷¯·Î ä¿öÁö´Â °Å¸®.. + int LimitFullColor = + (((float)Hardness / 100.0f) * (float)PenSize); //Distance filled with full color from the center... for (ix = lcx - PenSize + 1; ix < lcx + PenSize; ix++) { for (iz = lcz - PenSize + 1; iz < lcz + PenSize; iz++) { dist = m_iDistanceTable[T_Abs(lcx - ix)][T_Abs(lcz - iz)] + 1; @@ -3364,8 +3367,8 @@ void CLyTerrain::SetLightMap(int x, int z, int lcx, int lcz) { // // // MakeDistanceTable -// °Å¸®¸¦ °è»êÇÏÁö ¸»°í Å×ÀÌºí¿¡¼­ °¡Á®¿Ã ¼ö ÀÖ°Ô ¹Ì¸® Å×ÀÌºí »ý¼º.. -// Á¤¼ö ´ÜÀ§ °Å¸®.. +// Instead of calculating the distance, create a table in advance so that you can retrieve it from the table. +// Integer unit distance.. // void CLyTerrain::MakeDistanceTable() { int x, z; @@ -3379,8 +3382,8 @@ void CLyTerrain::MakeDistanceTable() { } // -// ÁöÇü¿¡¼­ °¥¼ö Àִ ŸÀϰú °¥ ¼ö ¾ø´Â ŸÀÏ ±¸ºÐÇØ¼­ Å×ÀÌºí ¸¸µå´Â ÇÔ¼ö. -// charÇüÀ¸·Î 1ÀÌ¸é °¥ ¼ö ÀÖ°í, 0ÀÌ¸é °¥ ¼ö ¾ø´Ù. +// Function to create a table by distinguishing between tiles that can be accessed and tiles that cannot be accessed in the terrain. +// In char type, if it is 1 you can go, if it is 0 you cannot go. // void CLyTerrain::MakeMoveTable(short ** ppEvent) { int x, z; @@ -3437,7 +3440,7 @@ void CLyTerrain::SaveServerData(HANDLE hFile) { int x, z; - // ±×³É Çϳª¾¿ ÀúÀåÇØµµ Â÷ÀÌ ¾øÁö¸¸ ³×Æ®¿öÅ©·Î ÀúÀåÇÒ¶§´Â ÆÄÀÏ ¿¢¼¼½º ¼ýÀÚ¸¦ ÁÙÀ̰í ÇѲ¨¹ø¿¡ ÀúÀåÇØ¾ß ºü¸£´Ù.. ... + // There is no difference if you just save them one by one, but when saving over the network, it is faster to reduce the number of file accesses and save them all at once.. ... DWORD dwAlloc = m_iHeightMapSize * m_iHeightMapSize * sizeof(float); HGLOBAL hAlloc = ::GlobalAlloc(GMEM_FIXED, dwAlloc); __ASSERT(hAlloc, "Global allocation failed."); @@ -3451,7 +3454,7 @@ void CLyTerrain::SaveServerData(HANDLE hFile) { pfHeights[x * m_iHeightMapSize + z] = m_ppMapData[x][z].fHeight; } } - WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); // ÆÄÀÏ¿¡ ¾´´Ù.. + WriteFile(hFile, pfHeights, dwAlloc, &dwRWC, NULL); //Write to file.. pfHeights = NULL; ::GlobalUnlock(hAlloc); ::GlobalFree(hAlloc); @@ -3487,7 +3490,7 @@ void CLyTerrain::VerifyTexInfo(LPDTEXINFO pDTex) { // // SetDTex.. -// ÀÚµ¿¿Ï¼º ±â´ÉÀÌ ÀÖ´Â °Í... +// Something with an autocomplete feature... // void CLyTerrain::SetDTex(int x, int y) { CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); @@ -3667,7 +3670,7 @@ void CLyTerrain::SetDTex(int x, int y) { // // SetDTexManual.. -// ÀÚµ¿¿Ï¼º ±â´ÉÀÌ ¾øÀÌ ±×³É Çϳª¸¸ Âï´Â °Í..... +// Just take one picture without the auto-completion function..... // void CLyTerrain::SetDTexManual(int x, int y) { CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); @@ -3755,7 +3758,7 @@ void CLyTerrain::SetDTexManual(int x, int y) { } if (pDTexGroupMng->m_pGroupView->m_iRadioState == 3) { - Dest2DTex.TexIdx.TexID = -1; // °­Á¦Âï±âÀÇ Ç®·ÎÂï±â + Dest2DTex.TexIdx.TexID = -1; // Full photo of forced photo } m_ppMapData[x][y].DTexInfo1 = Dest1DTex; @@ -3857,8 +3860,8 @@ void CLyTerrain::TilingAll() { } // -// Ä÷¯¸Ê ¸¸µé ŸÀÏ ³Ö±â... -// ¾ÆÁ÷ ¾È¸¸µé¾îÁø...±×·± ŸÀÏµé ´ë±â¿­¿¡ ³Ö´Â°Í.. +// Insert tiles to create a color map... +// Putting tiles that haven't been created yet into the queue... // void CLyTerrain::PutColorMapTile(int x, int z) { MMIter it = m_ColorMapTileTree.lower_bound((short)x); @@ -3874,7 +3877,7 @@ void CLyTerrain::PutColorMapTile(int x, int z) { } // -// Ä÷¯¸Ê ¸¸µéÁö ¾ÊÀº ŸÀϵé Ä÷¯¸Ê ¸¸µé±â.. +// Create a color map for tiles that have not been created with a color map. // void CLyTerrain::GeneraterColorMap(bool bIsAll) { CProgressBar ProgressBar; @@ -3906,10 +3909,10 @@ void CLyTerrain::GeneraterColorMap(bool bIsAll) { } // -// Ä÷¯¸ÊÅØ½ºÃÄ ¼ÂÆÃÇϱâ.. +// Setting the color map texture... // // -// ŸÀϸÊÀ» ±×´ë·Î Ãà¼Ò½ÃÄѼ­ Ä÷¯¸ÊÀ» ¸¸µå´Â ¹æ¹ý.. +// How to create a color map by reducing the tile map as is.. // /* void CLyTerrain::SetColorMap(int x, int y) @@ -4051,7 +4054,7 @@ void CLyTerrain::SetColorMap(int x, int y) hr = pBackBuff->GetDesc(&desc); if(desc.Format!=D3DFMT_X8R8G8B8) { - MessageBox(::GetActiveWindow(),"È­¸é»ö»ó¸ðµå¸¦ 32bit¸ðµå·Î ¹Ù²Ù¼¼¿ä.\n±×·¸Áö ¾ÊÀ¸¸é Ä÷¯¸ÊÀ» ¸¸µé ¼ö ¾ø¾î¿ä..¤Ð.¤Ð","°æ°í!!",MB_OK); + MessageBox(::GetActiveWindow(),"Change the screen color mode to 32bit mode.\nOtherwise, you cannot create a color map..","warning!!",MB_OK); return; } @@ -4102,12 +4105,12 @@ void CLyTerrain::SetColorMap(int x, int y) hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, dwZ); hr = s_lpD3DDev->SetRenderState(D3DRS_LIGHTING, dwLgt); - m_pColorTexture[idxX][idxZ].GenerateMipMap(); // Mip Map À» ¸¸µç´Ù.. + m_pColorTexture[idxX][idxZ].GenerateMipMap(); // Create a Mip Map.. } /*/ // -// ŸÀϸʿ¡¼­ Çȼ¿À» »ùÇøµÇؼ­ °É·¯¸ÊÀ» ¸¸µå´Â ¹æ¹ý... +// How to create a filtered map by sampling pixels from a tile map... // //* void CLyTerrain::SetColorMap(int x, int y) { @@ -4225,7 +4228,7 @@ void CLyTerrain::SetColorMap(int x, int y) { hr = s_lpD3DDev->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2); - //light map Âï±â... + //Take a light map... // //if(m_ppIsLightMap[x][y]) //{ @@ -4275,8 +4278,8 @@ void CLyTerrain::SetColorMap(int x, int y) { hr = pBackBuff->GetDesc(&desc); if (desc.Format != D3DFMT_X8R8G8B8) { MessageBox(::GetActiveWindow(), - "È­¸é»ö»ó¸ðµå¸¦ 32bit¸ðµå·Î ¹Ù²Ù¼¼¿ä.\n±×·¸Áö ¾ÊÀ¸¸é Ä÷¯¸ÊÀ» ¸¸µé ¼ö ¾ø¾î¿ä..¤Ð.¤Ð", "°æ°í!!", - MB_OK); + "Change the screen color mode to 32bit mode.\nOtherwise, you cannot create a color map..", + "Warning!!", MB_OK); return; } @@ -4335,18 +4338,18 @@ void CLyTerrain::SetColorMap(int x, int y) { hr = s_lpD3DDev->SetRenderState(D3DRS_LIGHTING, dwLgt); hr = s_lpD3DDev->SetRenderState(D3DRS_FOGENABLE, dwFog); - m_pColorTexture[idxX][idxZ].GenerateMipMap(); // Mip Map À» ¸¸µç´Ù.. + m_pColorTexture[idxX][idxZ].GenerateMipMap(); // Create a Mip Map.. } //*/ // // IntersectTriangle.. // -// orig : ½ÃÀÛÁ¡... -// dir : ÇÇÅ· ¹æÇâ.. -// v0, v1, v2 : »ï°¢ÇüÀÇ ¼¼Á¡.. -// t : origºÎÅÍ ÇÇÅ·µÈÁ¡±îÁö °Å¸®.. -// u, v : v0(0,0) v1(1,0) v2(0,1)·Î ºÃÀ»¶§ ÇÇÅ·µÈ Á¡ÀÇ uvÁÂÇ¥.. +// orig: starting point... +// dir: Picking direction.. +// v0, v1, v2: Three points of the triangle.. +// t: Distance from orig to the picked point.. +// u, v: uv coordinates of the picked point when viewed as v0(0,0) v1(1,0) v2(0,1).. // BOOL CLyTerrain::IntersectTriangle(const D3DXVECTOR3 orig, const D3DXVECTOR3 dir, D3DXVECTOR3 & v0, D3DXVECTOR3 & v1, D3DXVECTOR3 & v2, float * t, float * u, float * v) { @@ -4360,7 +4363,7 @@ BOOL CLyTerrain::IntersectTriangle(const D3DXVECTOR3 orig, const D3DXVECTOR3 dir // If determinant is near zero, ray lies in plane of triangle FLOAT det = D3DXVec3Dot(&edge1, &pvec); - if (det < 0.0001f) { // °ÅÀÇ 0¿¡ °¡±î¿ì¸é »ï°¢Çü Æò¸é°ú Áö³ª°¡´Â ¼±ÀÌ ÆòÇàÇÏ´Ù. + if (det < 0.0001f) { // If it is close to 0, the line passing through the triangle plane is parallel. return FALSE; } @@ -4390,10 +4393,10 @@ BOOL CLyTerrain::IntersectTriangle(const D3DXVECTOR3 orig, const D3DXVECTOR3 dir *u *= fInvDet; *v *= fInvDet; - // t°¡ Ŭ¼ö·Ï ¸Ö¸® Á÷¼±°ú Æò¸é°ú ¸¸³ª´Â Á¡ÀÌ ¸Ö´Ù. - // t*dir + orig ¸¦ ±¸ÇÏ¸é ¸¸³ª´Â Á¡À» ±¸ÇÒ ¼ö ÀÖ´Ù. - // u¿Í vÀÇ Àǹ̴ ¹«¾ùÀϱî? - // ÃßÃø : v0 (0,0), v1(1,0), v2(0,1) <°ýÈ£¾ÈÀº (U, V)ÁÂÇ¥> ÀÌ·±½ÄÀ¸·Î ¾î´À Á¡¿¡ °¡±õ³ª ³ªÅ¸³½ °Í °°À½ + // The larger t is, the farther the point where the straight line meets the plane is. + // You can find the meeting point by finding t*dir + orig. + // What do u and v mean? + // Guess: v0 (0,0), v1(1,0), v2(0,1) <(U, V) coordinates in parentheses> This seems to indicate which point is closest. // return TRUE; @@ -4402,10 +4405,10 @@ BOOL CLyTerrain::IntersectTriangle(const D3DXVECTOR3 orig, const D3DXVECTOR3 dir ////////////////////////////////////////////////// // Coded By : Dino // Coded On 2001-06-21 ¿ÀÈÄ 12:18:31 -// ¾Æ·¡·Î ÁöÇü Edit°ü·Ã ÇÔ¼öµé +// Terrain Edit related functions below // -// ¿¡µðÆ® ¸ðµå·Î Àüȯ... +// Switch to edit mode... // void CLyTerrain::SetEditMode(int iEditMode) { m_iEditMode = iEditMode; @@ -4445,7 +4448,7 @@ void CLyTerrain::SetApexHeight(int x, int z, float fHeight) { // // GetApexHeight.. -// °¢Å¸ÀÏÀÇ ²ÀÁöÁ¡ÀÇ ³ôÀ̸¦ ±¸ÇÏ´Â ÇÔ¼ö... +// A function to find the height of the vertex of each tile... // float CLyTerrain::GetApexHeight(int x, int z) const { if (m_ppMapData && x < m_iHeightMapSize && z < m_iHeightMapSize && x >= 0 && z >= 0) { @@ -4455,7 +4458,7 @@ float CLyTerrain::GetApexHeight(int x, int z) const { } // -// ºê·¯½¬ÀÇ ¸ð¾ç°ú »çÀÌÁî¿¡ µû¶ó¼­ IntensityMapÀ» ´Ù½Ã ±¸¼ºÇÑ´Ù. +// Reconfigure the IntensityMap according to the shape and size of the brush. // void CLyTerrain::UpdateBrushIntensityMap(int iShape, int iSize, float fFallOff) { ASSERT(fFallOff >= 0.0f && iSize > 0); @@ -4467,7 +4470,7 @@ void CLyTerrain::UpdateBrushIntensityMap(int iShape, int iSize, float fFallOff) iHalfRadius = (iSize / 2) + 1; if (iShape == BRUSHSHAPE_CIRCLE) { - if (iSize % 2) // Brush »çÀÌÁî°¡ Ȧ¼öÀ϶§ + if (iSize % 2) // When the brush size is odd { for (int i = iStart; i < iEnd; ++i) { for (int j = iStart; j < iEnd; ++j) { @@ -4482,7 +4485,7 @@ void CLyTerrain::UpdateBrushIntensityMap(int iShape, int iSize, float fFallOff) } } } - } else // Brush »çÀÌÁî°¡ ¦¼öÀ϶§ + } else // When the brush size is an even number { float fTmp = (iHalfRadius - 0.5f); for (int i = iStart; i < iEnd; ++i) { @@ -4501,7 +4504,7 @@ void CLyTerrain::UpdateBrushIntensityMap(int iShape, int iSize, float fFallOff) float fIntensity[MAX_BRUSH_SIZE]; ZeroMemory(fIntensity, sizeof(fIntensity)); - if (iSize % 2) // Brush »çÀÌÁî°¡ Ȧ¼öÀ϶§ + if (iSize % 2) // When the brush size is odd { for (int i = 0; i <= iSize / 2; ++i) { fIntensity[i] = GetFallOffValue(fFallOff, float(i) / iHalfRadius); @@ -4517,7 +4520,7 @@ void CLyTerrain::UpdateBrushIntensityMap(int iShape, int iSize, float fFallOff) } } } - } else // Brush »çÀÌÁî°¡ ¦¼öÀ϶§ + } else // When the brush size is an even number { for (int i = 0; i <= iSize / 2; ++i) { fIntensity[i] = GetFallOffValue(fFallOff, float(i + 0.5f) / (iHalfRadius)); @@ -4568,7 +4571,7 @@ float CLyTerrain::GetFallOffValue(float fFallOff, float x) { } // -// ÁöÇü ³ôÀÌ Á¶ÀýÇÔ¼ö.... +// Terrain height adjustment function.... // void CLyTerrain::Heighten(POINT ptCenter, float fHeight) { float fNewHeight = FLT_MAX; @@ -4620,7 +4623,7 @@ void CLyTerrain::Heighten(POINT ptCenter, float fHeight) { // // void CLyTerrain::Flaten(POINT ptCenter) { - // »õ·Î¿î °ª°ú ±âÁ¸ ³ôÀ̰ªÀ» Â÷À̸¦ °è»êÇØ¼­ ¹öÆÛ¿¡ ÀúÀå. + // Calculate the difference between the new value and the existing height value and store it in the buffer. for (int i = 0; i < MAX_BRUSH_SIZE; ++i) { for (int j = 0; j < MAX_BRUSH_SIZE; ++j) { int iMapX, iMapZ; @@ -4638,12 +4641,12 @@ void CLyTerrain::Flaten(POINT ptCenter) { } // -// ÁöÇü ¿Ï¸¸ÇÏ°Ô ¸¸µå´Â ÇÔ¼ö.. +// A function that smoothes the terrain. // void CLyTerrain::Smooth(POINT ptCenter) { float fMapHeightDiff[MAX_BRUSH_SIZE][MAX_BRUSH_SIZE]; ZeroMemory(fMapHeightDiff, sizeof(fMapHeightDiff)); - const int iWSize = 5; // Ȧ¼ö¿©¾ß ÇÑ´Ù. + const int iWSize = 5; // It must be an odd number. const int iHalfWSize = iWSize / 2; float fWeight[iWSize][iWSize] = { {1, 2, 3, 2, 1}, @@ -4653,7 +4656,7 @@ void CLyTerrain::Smooth(POINT ptCenter) { {1, 2, 3, 2, 1} }; - // »õ·Î¿î °ª°ú ±âÁ¸ ³ôÀ̰ªÀ» Â÷À̸¦ °è»êÇØ¼­ ¹öÆÛ¿¡ ÀúÀå. + // Calculate the difference between the new value and the existing height value and store it in the buffer. for (int i = 0; i < MAX_BRUSH_SIZE; ++i) { for (int j = 0; j < MAX_BRUSH_SIZE; ++j) { int iMapX, iMapZ; @@ -4680,7 +4683,7 @@ void CLyTerrain::Smooth(POINT ptCenter) { } } - // ¹öÆÛ¿¡ ÀÖ´Â °ªÀ» m_fBrushIntensityMap Àû¿ëÇÏ¿© ³ôÀ̰ª ¼öÁ¤ + // Modify the height value by applying the value in the buffer to m_fBrushIntensityMap for (int i = 0; i < MAX_BRUSH_SIZE; ++i) { for (int j = 0; j < MAX_BRUSH_SIZE; ++j) { int iMapX, iMapZ; @@ -4792,7 +4795,7 @@ void CLyTerrain::RenderBrushArea() { // // Import... -// ¸¶¾ß¿¡¼­ »Ì¾Æ³½ N3SceneÆÄÀÏ·Î ºÎÅÍ ÁöÇü Àбâ.. +// Reading terrain from N3Scene file extracted from Maya.. // void CLyTerrain::Import(LPCTSTR pFileName, float fSize) { int HeightMapSize; @@ -4808,7 +4811,7 @@ void CLyTerrain::Import(LPCTSTR pFileName, float fSize) { Init(HeightMapSize); CN3VMesh * pVMesh = new CN3VMesh; - __ASSERT(pVMesh, "VMesh°¡ ¾ÈÀÐÇã¿©..¤Ì.¤Ì"); + __ASSERT(pVMesh, "VMesh doesn’t read it.."); pVMesh->LoadFromFile(pFileName); @@ -4914,7 +4917,7 @@ void CLyTerrain::Import(LPCTSTR pFileName, float fSize) { for (ix = sx; ix <= ex; ix++) { for (iz = sz; iz <= ez; iz++) { - // »ï°¢Çü Á¡ Æ÷ÇÔ Å×½ºÆ®... + // Test for triangle point inclusion... float a, b, c; float x, z; x = (float)ix * TERRAIN_CELL_SIZE; @@ -4959,7 +4962,7 @@ void CLyTerrain::Import(LPCTSTR pFileName, float fSize) { { for(int iz=0;izSetWholeClipped(); m_pRoot->ClearMinMaxY(); m_pRoot->SetMinMaxY(); @@ -5030,7 +5033,7 @@ void CLyTerrain::Import(LPCTSTR pFileName, float fSize) { // void CLyTerrain::ImportHeight(LPCTSTR pFileName) { CN3VMesh * pVMesh = new CN3VMesh; - __ASSERT(pVMesh, "VMesh°¡ ¾ÈÀÐÇô¿©..¤Ì.¤Ì"); + __ASSERT(pVMesh, "VMesh is not read.."); pVMesh->LoadFromFile(pFileName); @@ -5125,7 +5128,7 @@ void CLyTerrain::ImportHeight(LPCTSTR pFileName) { for (ix = sx; ix <= ex; ix++) { for (iz = sz; iz <= ez; iz++) { - // »ï°¢Çü Á¡ Æ÷ÇÔ Å×½ºÆ®... + // Test for triangle point inclusion... float a, b, c; float x, z; x = (float)ix * TERRAIN_CELL_SIZE; @@ -5158,7 +5161,7 @@ void CLyTerrain::ImportHeight(LPCTSTR pFileName) { ProgressBar.SetPos(iPosProgress); } - //¶óÀÌÆ®¸ÊÅØ½ºÃÄ ¼öµµ ÀÖ°í, ÅØ½ºÃĵµ ¼¼ÆÃ.. + //Can be a light map texture, and also set the texture.. m_pRoot->SetWholeClipped(); m_pRoot->ClearMinMaxY(); m_pRoot->SetMinMaxY(); @@ -5169,7 +5172,7 @@ void CLyTerrain::ImportHeight(LPCTSTR pFileName) { void CLyTerrain::ImportHeight(LPCTSTR pFileName) { CN3VMesh* pVMesh = new CN3VMesh; - __ASSERT(pVMesh, "VMesh°¡ ¾ÈÀÐÇã¿©..¤Ì.¤Ì"); + __ASSERT(pVMesh, "VMesh doesn’t read it.."); pVMesh->LoadFromFile(pFileName); @@ -5202,7 +5205,7 @@ void CLyTerrain::ImportHeight(LPCTSTR pFileName) { for(int iz=0;izSetWholeClipped(); m_pRoot->ClearMinMaxY(); m_pRoot->SetMinMaxY(); @@ -5264,7 +5267,7 @@ void CLyTerrain::ColorMapImport(LPCTSTR lpszPathName) { return; } - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Import color map..", 50, m_iNumColorMap * m_iNumColorMap); ProgressBar.SetStep(1); @@ -5298,7 +5301,7 @@ void CLyTerrain::ColorMapExport(LPCTSTR lpszPathName) { return; } - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Export color map..", 50, m_iNumColorMap * m_iNumColorMap); ProgressBar.SetStep(1); @@ -5337,7 +5340,7 @@ void CLyTerrain::ColorMapExport(LPCTSTR lpszPathName) { } } - BMF.SaveToFile(lpszPathName); // ºñÆ®¸ÊÀ¸·Î ÀúÀå.. + BMF.SaveToFile(lpszPathName); // Save as bitmap.. } void CLyTerrain::GenerateMiniMap(LPCTSTR lpszPathName, int size) { @@ -5353,7 +5356,7 @@ void CLyTerrain::GenerateMiniMap(LPCTSTR lpszPathName, int size) { return; } - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Generate MiniMap..", 50, m_iNumColorMap * m_iNumColorMap); ProgressBar.SetStep(1); @@ -5394,7 +5397,7 @@ void CLyTerrain::GenerateMiniMap(LPCTSTR lpszPathName, int size) { TmpTex.Get()->UnlockRect(0); } } - BMF.SaveToFile(lpszPathName); // ºñÆ®¸ÊÀ¸·Î ÀúÀå.. + BMF.SaveToFile(lpszPathName); // Save as bitmap.. } void CLyTerrain::ExportHeightBMP(const char * szPathName) { @@ -5407,7 +5410,7 @@ void CLyTerrain::ExportHeightBMP(const char * szPathName) { return; } - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Export HeightBMP..", 50, m_iHeightMapSize * m_iHeightMapSize); ProgressBar.SetStep(1); @@ -5457,7 +5460,7 @@ void CLyTerrain::ExportHeightBMP(const char * szPathName) { pPixelDest[2] = gray; } } - BMF.SaveToFile(szPathName); // ºñÆ®¸ÊÀ¸·Î ÀúÀå.. + BMF.SaveToFile(szPathName); // Save as bitmap.. char msg[256]; sprintf(msg, "Max : %.2f Min : %.2f", Max, Min); @@ -5469,7 +5472,7 @@ void CLyTerrain::ImportHeightBMP(const char * szPathName) { CBitMapFile BMF; BMF.LoadFromFile(szPathName); - CProgressBar ProgressBar; // ÁøÇà »óȲ.. + CProgressBar ProgressBar; // Progress.. ProgressBar.Create("Import HeightBMP..", 50, m_iHeightMapSize * m_iHeightMapSize); ProgressBar.SetStep(1); @@ -5486,7 +5489,7 @@ void CLyTerrain::ImportHeightBMP(const char * szPathName) { } } - //¶óÀÌÆ®¸ÊÅØ½ºÃÄ ¼öµµ ÀÖ°í, ÅØ½ºÃĵµ ¼¼ÆÃ.. + //Can be a light map texture, and also set the texture.. m_pRoot->SetWholeClipped(); m_pRoot->ClearMinMaxY(); m_pRoot->SetMinMaxY(); diff --git a/src/tool/N3ME/LyTerrain.h b/src/tool/N3ME/LyTerrain.h index 51f155b1..c4a1906e 100644 --- a/src/tool/N3ME/LyTerrain.h +++ b/src/tool/N3ME/LyTerrain.h @@ -1,5 +1,5 @@ // LyTerrain.h: interface for the CLyTerrain class. -// - 2001. 9.24.~ Map Editor¿ëÀ¸·Î º¯È¯... +// - 2001. 9.24.~ Converted for Map Editor... // ////////////////////////////////////////////////////////////////////// @@ -20,9 +20,9 @@ class CDTexGroupMng; class CDlgSetLightMap; //////////////////////////////////////////////// -// multimap»ç¿ë -//savegamedataÇÒ¶§ ¾µ²¨¾ä.. -//colormap ÂïÀ»¶§µµ ½á..^^ +// use multimap +//I will use it when saving gamedata.. +//Also used when taking colormaps..^^ // typedef std::multimap MMap; typedef MMap::value_type MMValue; @@ -42,43 +42,45 @@ class CLyTerrain : public CN3BaseFileAccess { CQTNode * m_pRoot; CQTNode * m_pRefCurrNode; - //ÁöÇü edit°ü·Ã... - __VertexXyzColor m_vBrushVertices[MAX_BRUSH_SIZE * MAX_BRUSH_SIZE * 9]; // BrushÀÇ ¸ð¾çÀ» ³ªÅ¸³»´Â vertex buffer - WORD m_wBrushIndices[MAX_BRUSH_SIZE * MAX_BRUSH_SIZE * 6 * 4]; // BrushÀÇ ¸ð¾çÀ» ³ªÅ¸³»´Â index buffer - int m_iBrushIndexCount; // BrushÀÇ ¸ð¾çÀ» ³ªÅ¸³»´Â indexÀÇ ¼ýÀÚ - int m_iEditMode; // EditÀÇ ¸ðµåÀΰ¡? + //Related to terrain editing... + __VertexXyzColor + m_vBrushVertices[MAX_BRUSH_SIZE * MAX_BRUSH_SIZE * 9]; // vertex buffer representing the shape of the brush + WORD m_wBrushIndices[MAX_BRUSH_SIZE * MAX_BRUSH_SIZE * 6 * 4]; // index buffer representing the shape of the brush + int m_iBrushIndexCount; // Number of index indicating the shape of the brush + int m_iEditMode; // Is it Edit mode? CDTexMng * m_pDTexMng; - MMap m_ColorMapTileTree; //Ä÷¯¸Ê ¸¸µé±âÀü ŸÀÏµé °®°í ÀÖ´Â Æ®¸®.. + MMap m_ColorMapTileTree; //Tree with tiles before creating color map... int m_iDistanceTable[DISTANCE_TABLE_SIZE][DISTANCE_TABLE_SIZE]; public: - float m_fBrushIntensityMap[MAX_BRUSH_SIZE][MAX_BRUSH_SIZE]; // BrushÀÇ º¯È­À²À» Ç¥½ÃÇÑ ¸Ê + float m_fBrushIntensityMap[MAX_BRUSH_SIZE][MAX_BRUSH_SIZE]; // Map showing the rate of change of the brush float m_fHeightScale; float m_fFlatHeight; bool m_bFlaten; int m_iZoneID; - //LightMap°ü·Ã... + //LightMap related... CDlgSetLightMap * m_pDlgSetLightMap; LPDIRECT3DVERTEXBUFFER9 m_LightMapVB; CN3Texture *** m_ppLightMapTexture; bool ** m_ppIsLightMap; int m_iNumLightMap; - bool m_bDrawLineLightMap; //¶óÀÌÆ® ¸Ê ±×¸®´Â ¿É¼Ç¿¡¼­.. ¶óÀÎÇüÅ·Π±×¸®´ÂÁö.. - __VertexXyzColor m_vLineLightMap[2]; //¶óÀÎÇüÅ·Π±×¸°´Ù¸é ±× ¶óÀÎÀ» È­¸é¿¡ Ç¥½ÃÇØ¾ßµÇ°ÚÁö?..^^ ±×Á¡À̾ß.. + bool m_bDrawLineLightMap; //In the light map drawing option... is it drawn in line form? + __VertexXyzColor m_vLineLightMap + [2]; //If you draw it in the form of a line, you have to display that line on the screen, right?...^^ That's the point... - //LOD°ü·Ã.. + //LOD related.. int m_iHeightLimit; int m_iDistLimit; std::list m_RenderNodes; - LPDIRECT3DVERTEXBUFFER9 m_ColorMapVB; // Ä÷¯¸Ê¾µ¶§.. - LPDIRECT3DVERTEXBUFFER9 m_TileVB; // ÇϳªÀÇ Å¸Àϰú ÇϳªÀÇ ¶óÀÌÆ®¸Ê + LPDIRECT3DVERTEXBUFFER9 m_ColorMapVB; // When using a color map... + LPDIRECT3DVERTEXBUFFER9 m_TileVB; // One tile and one lightmap //common.. MAPDATA ** m_ppMapData; @@ -87,25 +89,25 @@ class CLyTerrain : public CN3BaseFileAccess { //texture.. CN3Texture ** m_pColorTexture; - RECT m_VisibleRect; //ŸÀÏ´ÜÀ§ÀÇ °¡½Ã¿µ¿ª.. - POINT m_EyePos; //ŸÀÏ´ÜÀ§.. + RECT m_VisibleRect; //Visible area per tile... + POINT m_EyePos; //Tile unit.. - int m_iHeightMapSize; // Cell Count ¿Í ºñ½ÁÇÑ °³³ä -> 1 À» »©ÁÖ¾î¾ß Cell Count ÀÌ´Ù. + int m_iHeightMapSize; // Similar concept to Cell Count -> You have to subtract 1 to get Cell Count. int m_iMaxLevel; - int m_iNumTileMap; //ÇöÀç °¡Áö°í Àִ ŸÀϸÊÀÇ ¼ö.. + int m_iNumTileMap; //Number of tile maps we currently have... int m_iColorMapTexSize; int m_iColorMapPixelPerUnitDistance; int m_iNumColorMap; - //ŸÀÏÂï´Â °Å ¹æÇâ°ú °ü·Ã... + //Related to the direction of tiling... float m_fTileDirU[8][4]; float m_fTileDirV[8][4]; float m_fTileDirUforColorMap[8][4]; float m_fTileDirVforColorMap[8][4]; - // DTex°ü·Ã... + // DTex related... LPDIRECT3DVERTEXBUFFER9 m_pDTexVB; __VertexT1 * m_pDTexVertices; int m_DTexFaceCnt; @@ -113,12 +115,12 @@ class CLyTerrain : public CN3BaseFileAccess { int m_DTexAttrTable[9][14]; int m_DTexDirTable[9][14]; - // ColorMap °ü·Ã... + // ColorMap related... LPDIRECT3DVERTEXBUFFER9 m_pColorMapTmpVB; __VertexTransformedT2 * m_pColorMapTmpVertices; - //Brush °ü·Ã.. - BOOL m_bBrushFlat; //ÁöÇü ³ôÀÌ°í ³»¸®´Â ºê·¯½¬¸¦ ÆòÆòÇÏ°Ô ÇÒ²¨¾ß? + //Brush related.. + BOOL m_bBrushFlat; //Are you going to flatten the brush that raises and lowers the terrain? protected: int DetectRealLightMap(int sx, int sz, int range); @@ -126,35 +128,36 @@ class CLyTerrain : public CN3BaseFileAccess { void FillLightMap(int x, int z, int lcx, int lcz, DWORD Color, float alpha); void SetLightMap(int x, int z, int lcx, int lcz); - void PutColorMapTile(int x, int z); //Ä÷¯¸Ê ¸¸µé ŸÀÏ ³Ö±â...(¾ÆÁ÷ ¾È¸¸µé¾îÁø...±×·± ŸÀÏµé ´ë±â¿­¿¡ ³Ö´Â°Í..) + void PutColorMapTile( + int x, int z); //Insert tiles to create a color map... (not created yet... put those tiles in the queue...) void VerifyTexInfo(LPDTEXINFO pTex); void SetColorMap(int x, int y); void SetPertinentTile(CDTexGroupMng * pDTexGroupMng, LPDTEXINFO pDest1, LPDTEXINFO pDest2); inline int Log2(int x); inline void ClearRenderInfo(); - void SetVisibleRect(); //ŸÀÏ´ÜÀ§.. + void SetVisibleRect(); //Tile unit.. - //map editor °ü·Ã.. + //map editor related.. // - void SetDTexManual(int x, int y); //¼öµ¿Âï±â - void SetDTex(int x, int y); //ÀÚµ¿Âï±â. + void SetDTexManual(int x, int y); // Manual shooting + void SetDTex(int x, int y); // Auto capture. BOOL IntersectTriangle(const D3DXVECTOR3 orig, const D3DXVECTOR3 dir, D3DXVECTOR3 & v0, D3DXVECTOR3 & v1, D3DXVECTOR3 & v2, float * t, float * u, float * v); - void Heighten(POINT ptCenter, float fHeight); // ÁöÇüÀ» ³ô°ÔÇϰųª ³·°Ô ÇÏ´Â ÇÔ¼ö - void Smooth(POINT ptCenter); // ÁöÇüÀ» ÁÖº¯ ¸ÊÀÇ ³ôÀ̰ª°ú ºñ±³Çؼ­ ºÎµå·´°Ô ÇÑ´Ù. + void Heighten(POINT ptCenter, float fHeight); // Function to raise or lower the terrain + void Smooth(POINT ptCenter); // Smooth the terrain by comparing it to the height value of the surrounding map. void Flaten(POINT ptCenter); - void SetApexHeight(int x, int z, float fHeight); // ³ôÀ̸ÊÀÇ ³ôÀ̰ª ÁöÁ¤ - float GetApexHeight(int x, int z) const; // ³ôÀ̸ÊÀÇ ³ôÀ̰ª ¾ò±â - float GetFallOffValue(float fFallOff, float x); // BrushIntensity °è»êÇÒ¶§ ¾²ÀÌ´Â ½Ä. + void SetApexHeight(int x, int z, float fHeight); // Specify the height value of the height map + float GetApexHeight(int x, int z) const; // Get the height value of the height map + float GetFallOffValue(float fFallOff, float x); // Expression used when calculating BrushIntensity. - //°³¼±µÈ ¶óÀÌÆ®¸Ê°ü·Ã..(2002. 11. 13..) + //Improved light map related...(2002. 11. 13..) void ConvertLightMapToolDataV2toV3(); // public: - void UpdateBrushArea(POINT ptCenter); // Brush ¿µ¿ª Ç¥½Ã vertex°»½Å - void RenderBrushArea(); // Brush ¿µ¿ª Ç¥½Ã ±×¸®±â + void UpdateBrushArea(POINT ptCenter); // Update brush area display vertex + void RenderBrushArea(); // Draw brush area display void ExportHeightBMP(const char * szPathName); void ImportHeightBMP(const char * szPathName); @@ -171,7 +174,7 @@ class CLyTerrain : public CN3BaseFileAccess { void MakeGameLightMap(char * szFullPathName); void MakeGameColorMap(char * szFullPathName); void GeneraterColorMap(bool bIsAll = false); - void TilingAll(); //ÁöÇü Àüü¸¦ ¼±ÅÃµÈ Å¸ÀÏ·Î ±ò±â.. + void TilingAll(); //Lay the entire terrain with the selected tiles.. void UpDateDistLimit(); @@ -179,17 +182,18 @@ class CLyTerrain : public CN3BaseFileAccess { void SetFillMode(D3DFILLMODE fillmode); float GetHeight(float x, float z); - //map editor °ü·Ã.. + //map editor related.. // SIZE GetPatchNum(float fSize); - BOOL MouseMsgFilter(LPMSG pMsg); // ÁöÇü °íÄ¥¶§ ¸¶¿ì½º ¸Þ¼¼Áö ó¸® + BOOL MouseMsgFilter(LPMSG pMsg); // Handle mouse messages when modifying terrain bool Pick(int x, int y, __Vector3 * vec, POINT * pHeightMapPos = NULL); void Import(LPCTSTR pFileName, float fSize); void ImportHeight(LPCTSTR pFileName); void SaveServerData(HANDLE hFile); - void SetEditMode(int iEditMode); // ÁöÇü Edit¸ðµå·Î º¯°æ - void UpdateBrushIntensityMap(int iShape, int iSize, - float fFallOff); // ºê·¯½¬ÀÇ ¸ð¾ç°ú »çÀÌÁî¿¡ µû¶ó¼­ IntensityMapÀ» ´Ù½Ã ±¸¼ºÇÑ´Ù. + void SetEditMode(int iEditMode); // Change to terrain edit mode + void UpdateBrushIntensityMap( + int iShape, int iSize, + float fFallOff); // Reconfigure the IntensityMap according to the shape and size of the brush. void SaveGameData(HANDLE hFile); void ColorMapImport(LPCTSTR lpszPathName); void ColorMapExport(LPCTSTR lpszPathName); diff --git a/src/tool/N3ME/LyTerrainDef.h b/src/tool/N3ME/LyTerrainDef.h index 7c3034aa..3ab309fb 100644 --- a/src/tool/N3ME/LyTerrainDef.h +++ b/src/tool/N3ME/LyTerrainDef.h @@ -1,8 +1,8 @@ //////////////////////////////////////////////////////////////////////////////////////// // // LyTerrainDef.h -// - À̰ÍÀú°Í Terrain¿¡ °ü·ÃµÈ ÀÚ·áÇüÁ¤ÀÇ, »ó¼öÁ¤ÀÇ... -// - ÄõµåÆ®¸® ÀÌ¿ëÇÑ ÁöÇü...^^ +// - Data type definitions and constant definitions related to Terrain... +// - Terrain using quadtree...^^ // // By Donghoon.. // @@ -16,24 +16,24 @@ // Constant Definitions.. const int N3ME_DATA_VERSION = 3; //version info... -//ÀÌÀü µ¥ÀÌÅ͵éÀº ¹öÀü Á¤º¸¸¦ °®°í ÀÖÁö ¾Ê´Ù. -//1 : Ãʱ⠵¥ÀÌÅÍ¿¡ lightmapÁ¤º¸¸¦ ´õÇÑ °Í.. -//2 : version 1¿¡ Ç® Á¤º¸(Ç®°ú DTexÀÇ ±×·ì°úÀÇ °ü°è¿¡ °üÇÑ Á¤º¸)¸¦ ´õÇÑ °Í. -//3 : °³¼±µÈ lightmap..^^ +//Previous data does not have version information. +//1: Lightmap information is added to the initial data. +//2: Version 1 plus pool information (information about the relationship between the pool and the DTex group). +//3: Improved lightmap..^^ const int N3ME_DTEX_DATA_VERSION = 2; // -//1 : dTex¸¦ ÀÐÀ»¶§ °¢ ÅØ½ºÃÄÀÇ ±×·ì Á¤º¸¸¦ °¢ÅؽºÃÄÀ̸§.difÆÄÀÏ·Î ºÎÅÍ Àд´Ù.. -//2 : °¢ÅؽºÃÄÀÇ ±×·ìÁ¤º¸¸¦ dtexinfo.dtxÆÄÀϷκÎÅÍ Àд´Ù.. +//1: When reading dTex, the group information of each texture is read from each texture name.dif file. +//2: Read the group information of each texture from the dtexinfo.dtx file. const int TERRAIN_CELL_SIZE = 4; -//const int MAX_COLORMAPTEXTURE = 32; // ÃÖ´ë #colormaptexture at one side = 4096/128.. -//ÇöÀç m_iNumColorMapÀ¸·Î ´ëÃ¼ÇØ¼­ ¾²°í ÀÖ´ç... -const int PATCH_TILE_SIZE = 8; // ÆÐÄ¡ Çϳª¿¡ ŸÀÏÀÌ 8x8°³ µé¾î°£´Ù. +//const int MAX_COLORMAPTEXTURE = 32; // maximum #colormaptexture at one side = 4096/128.. +//Currently being replaced with m_iNumColorMap... +const int PATCH_TILE_SIZE = 8; // One patch contains 8x8 tiles. -const int MAX_COLORMAPVB_SIZE = 1026; //Ä÷¯¸ÊÀ¸·Î Âï´Â VBÀÇ ÃÖ´ë »çÀÌÁî. -const int MAX_TILEVB_SIZE = 16; //ŸÀÏÂï´Â VBÀÇ ÃÖ´ë »çÀÌÁî. -const int MAX_LIGHTMAPVB_SIZE = 16; //¶óÀÌÆ®¸Ê ¾²´Â VBÀÇ ÃÖ´ë »çÀÌÁî. +const int MAX_COLORMAPVB_SIZE = 1026; //Maximum size of VB taken as a color map. +const int MAX_TILEVB_SIZE = 16; //Maximum size of tile VB. +const int MAX_LIGHTMAPVB_SIZE = 16; //Maximum size of VB that uses lightmaps. const int DTEX_SIZE = 1024; // Detail Texture Size const int NUM_DTEXTILE = 8; // Detail Texture ºÐÇÒ ¼ö.. @@ -42,8 +42,8 @@ const int LIGHTMAP_TEX_SIZE = 8; //32; const int DISTANCE_TABLE_SIZE = 64; -const int NOTMOVE_HEIGHT = 10; // ³ôÀÌÂ÷°¡ Ä¿¼­ °¥ ¼ö ¾ø´Â ŸÀÏÀÇ ÃÖ¼Ò°ª.. - // 10ÀÌÇÏ¸é ¿òÁ÷ÀÏ ¼ö ÀÖ°í, ÀÌ»óÀÌ¸é °¥ ¼ö ¾ø´Ù. +const int NOTMOVE_HEIGHT = 10; // Minimum value of tiles that cannot be reached due to a large height difference.. + // If it is less than 10, you can move, if it is more than 10, you cannot move. const int MAX_BRUSH_SIZE = 21; const int BRUSH_CENTER = (MAX_BRUSH_SIZE / 2); @@ -81,7 +81,7 @@ enum { // Structure Definitions.. -//¸Ê¿¡µðÅÍ.. +//Map editor.. typedef struct __DTexAttr { int Group; int Attr; @@ -113,7 +113,7 @@ typedef struct __DTexInfo { } DTEXINFO, *LPDTEXINFO; typedef struct __MapData { - float fHeight; //ÁöÇüÀÇ ³ôÀ̰ª.. + float fHeight; //Terrain height value.. //float u1,v1; //__Vector3 Normal; DTEXINFO DTexInfo1; @@ -123,11 +123,11 @@ typedef struct __MapData { } MAPDATA, *LPMAPDATA; typedef struct __GameMapData { - float fHeight; //ÁöÇüÀÇ ³ôÀ̰ª.. - DWORD bIsTileFull : 1; //ŸÀÏÀÌ Full À̸é true ¾Æ´Ï¸é false.. - DWORD Tex1Dir : 5; //Åø¿¡¼­ »ç¿ëÇÏ´Â À妽º°¡ ¾Æ´Ô.. + float fHeight; //Terrain height value.. + DWORD bIsTileFull : 1; //true if the tile is full, false otherwise.. + DWORD Tex1Dir : 5; //Not the index used by the tool.. DWORD Tex2Dir : 5; - DWORD Tex1Idx : 10; //Åø¿¡¼­ »ç¿ëÇÏ´Â À妽º°¡ ¾Æ´Ô.. + DWORD Tex1Idx : 10; //Not the index used by the tool.. DWORD Tex2Idx : 10; __GameMapData() { diff --git a/src/tool/N3ME/MainFrm.cpp b/src/tool/N3ME/MainFrm.cpp index 7022ece9..e913037a 100644 --- a/src/tool/N3ME/MainFrm.cpp +++ b/src/tool/N3ME/MainFrm.cpp @@ -196,14 +196,15 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { // TODO: Remove this if you don't want tool tips m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); - // °æ·Î ¼³Á¤.. + //Path settings.. char szPathCur[256] = ""; GetCurrentDirectory(256, szPathCur); CN3Base::PathSet(szPathCur); - // ¿£Áø ÃʱâÈ­ + // Engine initialization m_pEng = new CN3EngTool(); //m_pEng->InitEnv(); + m_pEng->Init(TRUE, m_hWnd, 32, 32, 0, TRUE); m_pEng->GridCreate(1000, 1000); @@ -217,17 +218,17 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { m_pDTexMng = new CDTexMng; m_pDTexMng->Init(this); - // ±âº» ¸®¼Ò½º Àбâ.. + // Read basic resources... m_pMapMng->LoadSourceObjects(); m_pDTexGroupMng->Init(this); //m_pDTexGroupMng->LoadFromFile(); m_pDTexMng->Init(this); //m_pDTexMng->LoadFromFile(); - // Åø¹Ù ´ÙÀ̾ó·Î±× Á¤º¸.. + // Toolbar dialog information.. m_wndDlgBar.SetDlgItemText(IDC_E_PATH, m_pEng->PathGet().c_str()); - //¾¾¾Ñ »Ñ¸®±â °ü·Ã Ŭ·¡½º ÃʱâÈ­.. + //Initialize classes related to seed sowing.. m_pDlgSowSeed = new CDlgSowSeed; m_pDlgSowSeed->Create(IDD_SOW_SEED, this); m_pDlgSowSeed->ShowWindow(FALSE); @@ -361,11 +362,11 @@ void CMainFrame::OnCursorDtex() { hr = pBackBuff->GetDesc(&desc); if(desc.Format!=D3DFMT_X8R8G8B8) { - MessageBox("È­¸é»ö»ó ¸ðµå°¡ 32bit¸ðµåÀ̾î¾ß ÇÕ´Ï´Ù..","°æ°í!!"); + MessageBox("The screen color mode must be 32bit mode..","Warning!!"); } */ m_pMapMng->SetCursorMode(CM_SET_DTEX); - // this->OnViewDtex(); // È­¸é¿¡ ŸÀÏ ÅØ½ºÃ³ ±×·ì ´ÙÀ̾ó·Î±×¸¦ ¿­¾îÁØ´Ù.. + // this->OnViewDtex(); // Opens the tile texture group dialog on the screen. } void CMainFrame::OnCursorEditRiver() { ASSERT(m_pMapMng); @@ -552,10 +553,10 @@ void CMainFrame::OnUpdateViewHideObj(CCmdUI * pCmdUI) { ASSERT(m_pMapMng); if (m_pMapMng->m_bHideObj) { - pCmdUI->SetText("¿ÀºêÁ§Æ® º¸À̱â\tH"); + pCmdUI->SetText("Show object\tH"); } if (!m_pMapMng->m_bHideObj) { - pCmdUI->SetText("¿ÀºêÁ§Æ® °¨Ãß±â\tH"); + pCmdUI->SetText("Hide object\tH"); } } @@ -663,10 +664,10 @@ void CMainFrame::OnResourcePathSet() { } std::string szPath(dlg.GetPath().GetString()); - CN3Base::PathSet(szPath); // °æ·Î ¼³Á¤.. + CN3Base::PathSet(szPath); //Path settings.. m_wndDlgBar.SetDlgItemText(IDC_E_PATH, szPath.c_str()); - // ±âº» ¸®¼Ò½º Àбâ.. + // Read basic resources... m_pMapMng->LoadSourceObjects(); } @@ -708,7 +709,7 @@ void CMainFrame::UpdateTransformInfo() { m_wndDlgBar.UpdateInfo(); } -void CMainFrame::OnTipDefaultMaterial() // ±âº»ÀçÁú·Î ¸¸µé±â. +void CMainFrame::OnTipDefaultMaterial() // Make it a basic material. { ASSERT(m_pMapMng); @@ -717,12 +718,12 @@ void CMainFrame::UpdateTransformInfo() { CN3TransformCollision * pObj = (CN3TransformCollision *)m_pMapMng->GetSelOutputObj(i); if (pObj->Type() & OBJ_SHAPE) { CN3Shape * pShape = (CN3Shape *)pObj; - pShape->MakeDefaultMaterial(); // ±âº»ÀçÁú·Î ¸¸µé±â. + pShape->MakeDefaultMaterial(); // Make it a basic material. } } } -void CMainFrame::OnTipRemoveAlphaflag() // ¾ËÆÄ ºí·»µù Ç÷¡±× Á¦°Å.. +void CMainFrame::OnTipRemoveAlphaflag() // Remove alpha blending flag.. { ASSERT(m_pMapMng); @@ -731,7 +732,7 @@ void CMainFrame::UpdateTransformInfo() { CN3TransformCollision * pObj = (CN3TransformCollision *)m_pMapMng->GetSelOutputObj(i); if (pObj->Type() & OBJ_SHAPE) { CN3Shape * pShape = (CN3Shape *)pObj; - pShape->RemoveRenderFlags(RF_ALPHABLENDING); // ¾ËÆÄ ºí·»µù Ç÷¡±× Á¦°Å.. + pShape->RemoveRenderFlags(RF_ALPHABLENDING); // Remove alpha blending flag.. } } } @@ -775,7 +776,7 @@ void CMainFrame::OnTipSowSeed() { } m_pDlgSowSeed->ShowWindow(TRUE); - // Ç®½É±â + // Planting grass if (m_pMapMng) { m_pMapMng->SetCursorMode(CM_EDIT_SEED); if (m_pMapMng->GetTerrain() != NULL) { diff --git a/src/tool/N3ME/MapMng.cpp b/src/tool/N3ME/MapMng.cpp index 3e447af7..801437af 100644 --- a/src/tool/N3ME/MapMng.cpp +++ b/src/tool/N3ME/MapMng.cpp @@ -52,7 +52,7 @@ CMapMng::CMapMng(CMainFrame * pMainFrm) m_pMainFrm = pMainFrm; m_pTerrain = NULL; - // Path ÁöÁ¤Çϱâ + // Specify Path m_pSceneSource = new CN3Scene; m_pSceneSource->m_szName = "SourceList"; m_pSceneSource->FileNameSet("SourceList.N3Scene"); @@ -111,16 +111,34 @@ CMapMng::CMapMng(CMainFrame * pMainFrm) m_bLoadingComplete = false; - // À©µµ ¹èÄ¡ + // window layout + + /* orginal window size CRect rc(0, 0, 980, 1000); pMainFrm->MoveWindow(&rc); m_pDlgSourceList->MoveWindow(rc.right, rc.top, 300, 500); m_pDlgOutputList->MoveWindow(rc.right, 500, 300, 500); + */ + + RECT primaryMonitor; + if (SystemParametersInfo(SPI_GETWORKAREA, 0, &primaryMonitor, 0)) { + int screenWidth = primaryMonitor.right - primaryMonitor.left; + int screenHeight = primaryMonitor.bottom - primaryMonitor.top; + + CRect rcMain(0, 0, screenWidth - 300, screenHeight); + pMainFrm->MoveWindow(&rcMain); + + CRect rcSourceList(rcMain.right, rcMain.top, rcMain.right + 300, rcMain.top + screenHeight / 2); + m_pDlgSourceList->MoveWindow(&rcSourceList); + + CRect rcOutputList(rcMain.right, rcMain.top + screenHeight / 2, rcMain.right + 300, rcMain.bottom); + m_pDlgOutputList->MoveWindow(&rcOutputList); + } Release(); } -// ÆÄ±«ÀÚ +// destroyer CMapMng::~CMapMng() { Release(); if (m_pSceneSource) { @@ -181,7 +199,7 @@ CMapMng::~CMapMng() { } } -// ÃʱâÈ­ +// reset void CMapMng::Release() { if (m_pTerrain) { delete m_pTerrain; @@ -206,8 +224,10 @@ void CMapMng::Release() { m_pSceneOutput->LightAdd(pLight); } - m_pSceneOutput->CameraGetActive()->m_Data.fNP = 1.0f; - m_pSceneOutput->CameraGetActive()->m_Data.fFP = m_pMainFrm->GetFP(); + /* + m_pSceneOutput->CameraGetActive()->m_Data.fNP = 1.0f; //gutek + m_pSceneOutput->CameraGetActive()->m_Data.fFP = m_pMainFrm->GetFP(); //gutek + */ } m_pSelSourceObj = NULL; @@ -225,13 +245,13 @@ void CMapMng::Release() { m_PondMng.Release(); } -//FarPlane °»½Å... +//Update FarPlane... void CMapMng::UpDateFP() { m_pSceneOutput->CameraGetActive()->m_Data.fFP = m_pMainFrm->GetFP(); Invalidate(); } -// m_pSceneSource ij¸¯ÅÍ¿Í ¿ÀºêÁ§Æ®¸¦ Ãß°¡ÇÏ´Â ÇÔ¼ö +// m_pSceneSource Function to add characters and objects void CMapMng::LoadSourceObjects() { ASSERT(m_pSceneSource && m_pDlgSourceList); @@ -239,10 +259,10 @@ void CMapMng::LoadSourceObjects() { WIN32_FIND_DATA FindFileData; - // source\Chr Æú´õÀÇ ¸ðµç ij¸¯ÅÍ Ãß°¡ + // Add all characters in source\Chr folder CString szChrPath; szChrPath.Format("%sChr\\", CN3Base::s_szPath.c_str()); - SetCurrentDirectory(szChrPath); // szFolder\Chr Æú´õ·Î °æ·Î¸¦ ¹Ù²Ù°í.. + SetCurrentDirectory(szChrPath); // Change the path to the szFolder\Chr folder... HANDLE hFind = FindFirstFile("*.N3Chr", &FindFileData); if (hFind != INVALID_HANDLE_VALUE) { @@ -253,11 +273,11 @@ void CMapMng::LoadSourceObjects() { FindClose(hFind); } - // source\Data Æú´õÀÇ ¸ðµç shape Ãß°¡ + // Add all shapes in source\Data folder CString szShapePath; szShapePath.Format("%sObject\\", CN3Base::s_szPath.c_str()); - SetCurrentDirectory(szShapePath); // szFolder\Mesh Æú´õ·Î °æ·Î¸¦ ¹Ù²Ù°í.. - hFind = FindFirstFile("*.N3Shape", &FindFileData); // ÆÄÀÏ Ã£±â. + SetCurrentDirectory(szShapePath); // Change the path to the szFolder\Mesh folder... + hFind = FindFirstFile("*.N3Shape", &FindFileData); // Find file. if (hFind != INVALID_HANDLE_VALUE) { AddShape(m_pSceneSource, std::string(szShapePath + FindFileData.cFileName), FALSE); @@ -267,14 +287,14 @@ void CMapMng::LoadSourceObjects() { FindClose(hFind); } - m_pSceneSource->Tick(); // Object ÃʱâÈ­ - m_pDlgSourceList->UpdateTree(m_pSceneSource); // ¸ñ·Ï °»½Å + m_pSceneSource->Tick(); // Object initialization + m_pDlgSourceList->UpdateTree(m_pSceneSource); // update list } -// ÁöÁ¤ÇÑ Scene¿¡ ij¸¯ÅÍ Ãß°¡ÇÏ´Â ÇÔ¼ö +// Function to add a character to the specified scene CN3Transform * CMapMng::AddChr(CN3Scene * pDestScene, const std::string & szFN, BOOL bGenerateChainNumber) { CN3Chr * pChr = new CN3Chr; - if (false == pChr->LoadFromFile(szFN)) // ºÎ¸£±â°¡ ½ÇÆÐÇϸé.. + if (false == pChr->LoadFromFile(szFN)) // If the call fails... { delete pChr; return NULL; @@ -291,27 +311,25 @@ CN3Transform * CMapMng::AddChr(CN3Scene * pDestScene, const std::string & szFN, continue; } - szCompare[nL - 5] = NULL; // µÚ¿¡ ºÙ´Â ¾ð´õ¹Ù¿Í ³×ÀÚ¸® ¹øÈ£´Â »«´Ù.. - if (pChr->m_szName == szCompare) // À̸§ÀÌ °°À¸¸é.. - { + szCompare[nL - 5] = NULL; // Remove the trailing underscore and four-digit number. + if (pChr->m_szName == szCompare) { nChainNumber = atoi(&(szCompare[nL - 4])) + 1; } } char szName[_MAX_PATH]; wsprintf(szName, "%s_%.4d", pChr->m_szName.c_str(), nChainNumber); - pChr->m_szName = szName; // .. À̸§À» Áþ´Â´Ù.. + pChr->m_szName = szName; } pDestScene->ChrAdd(pChr); return pChr; } -// ÁöÁ¤ÇÑ Scene¿¡ Shape Ãß°¡ÇÏ´Â ÇÔ¼ö +// Function to add Shape to the specified Scene CN3Transform * CMapMng::AddShape(CN3Scene * pDestScene, const std::string & szFN, BOOL bGenerateChainNumber) { CN3Shape * pShape = new CN3Shape; - if (false == pShape->LoadFromFile(szFN)) // ºÎ¸£±â°¡ ½ÇÆÐÇϸé.. - { + if (false == pShape->LoadFromFile(szFN)) { delete pShape; return NULL; } @@ -327,8 +345,8 @@ CN3Transform * CMapMng::AddShape(CN3Scene * pDestScene, const std::string & szFN int nL = lstrlen(szCompare); if(nL < 5) continue; - szCompare[nL-5] = NULL; // µÚ¿¡ ºÙ´Â ¾ð´õ¹Ù¿Í ³×ÀÚ¸® ¹øÈ£´Â »«´Ù.. - if(0 == lstrcmpi(pShape->Name(), szCompare)) // À̸§ÀÌ °°À¸¸é.. + szCompare[nL-5] = NULL; // Remove the trailing underscore and four-digit number. + if(0 == lstrcmpi(pShape->Name(), szCompare)) { nChainNumber = atoi(&(szCompare[nL-4])) + 1; } @@ -342,21 +360,21 @@ CN3Transform * CMapMng::AddShape(CN3Scene * pDestScene, const std::string & szFN char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(szFileName, szDrive, szDir, szFName, szExt); _makepath(szFileName2, szDrive, szDir, szName, szExt); - pShape->FileNameSet(szFileName2); // ÆÄÀÏ À̸§ Áþ±â... + pShape->FileNameSet(szFileName2); // Name the file... } */ - pDestScene->ShapeAdd(pShape); // Ãß°¡ Çϰí + pDestScene->ShapeAdd(pShape); return pShape; } -// pObj¸¦ m_pSceneOutput¿¡ Ãß°¡ÇÑ´Ù. +// Add pObj to m_pSceneOutput. CN3Transform * CMapMng::AddObjectToOutputScene(CN3Transform * pObj) { if (pObj == NULL) { return NULL; } ASSERT(m_pSceneOutput && pObj->m_szName.size()); - // m_pSceneOutput¿¡ ³Ö±â + // Insert into m_pSceneOutput CN3Transform * pDestObj = NULL; if (pObj->Type() & OBJ_CHARACTER) { pDestObj = AddChr(m_pSceneOutput, pObj->FileName(), TRUE); @@ -372,9 +390,9 @@ CN3Transform * CMapMng::AddObjectToOutputScene(CN3Transform * pObj) { return NULL; } -// ¼±ÅÃÇÑ °´Ã¼¸¦ Áö¿ò +// Delete selected object void CMapMng::DeleteSelObjectFromOutputScene() { - if (GetCursorMode() == CM_EDIT_RIVER) // °­¹° ÆíÁýÀÏ °æ¿ì ¼±Åà Á¡ Áö¿ì±â + if (GetCursorMode() == CM_EDIT_RIVER) // In case of river editing, clear the selection point { m_RiverMng.DeleteSelectedVertex(); return; @@ -413,18 +431,18 @@ void CMapMng::DeleteSelObjectFromOutputScene() { void CMapMng::SavePartition(float x, float z, float width) { DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; - CFileDialog dlg(FALSE, "n3m", NULL, dwFlags, "N3ME ÆÄÀÏ(*.n3m)|*.n3m||", NULL); + CFileDialog dlg(FALSE, "n3m", NULL, dwFlags, "N3ME file(*.n3m)|*.n3m||", NULL); if (dlg.DoModal() == IDCANCEL) { return; } CString lpszPathName = dlg.GetPathName(); - // ÆÄÀÏ À̸§ + // file name char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath((LPCTSTR)lpszPathName, szDrive, szDir, szFName, szExt); - //n3m¸¸µé±â..^^ + //Create n3m..^^ char szN3M[_MAX_PATH]; _makepath(szN3M, szDrive, szDir, szFName, "n3m"); HANDLE hFile = CreateFile(szN3M, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -432,30 +450,30 @@ void CMapMng::SavePartition(float x, float z, float width) { MessageBox(::GetActiveWindow(), lpszPathName, "Fail to open map data file for save, Pleas retry.", MB_OK); return; } - char comment[80] = {"ÀÌÆÄÀÏ ¿©´Â »ç¶÷ ¹Ùº¸..^^"}; + char comment[80] = {"The person who opens this file is an idiot...^^"}; DWORD dwRWC; WriteFile(hFile, &comment, sizeof(char) * 80, &dwRWC, NULL); CloseHandle(hFile); - // ÁöÇü + // terrain if (m_pTerrain) { char szTerrain[_MAX_PATH]; _makepath(szTerrain, szDrive, szDir, szFName, "trn"); m_pTerrain->SaveToFilePartition(szTerrain, x, z, width); } - // sdtÆÄÀÏ ÀúÀå(shape data text) + // Save sdt file (shape data text) char szSceneText[_MAX_PATH]; _makepath(szSceneText, szDrive, szDir, szFName, "sdt"); SaveObjectPostDataPartition(szSceneText, x, z, width); /* - // warp Á¤º¸ load.. + // load warp information.. char szWarp[_MAX_PATH]; _makepath(szWarp, szDrive, szDir, szFName, "wap"); m_pWarpMgr->SaveToFile(szWarp); - //À̺¥Æ® Á¤º¸ ÀúÀå.. + //Save event information.. //char szEvent[_MAX_PATH]; //_makepath(szEvent, szDrive, szDir, szFName, "evt"); //m_pEventMgr->SaveToFile(szEvent); @@ -467,11 +485,11 @@ void CMapMng::SaveToFile(LPCTSTR lpszPathName) { return; } - // ÆÄÀÏ À̸§ + // file name char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPathName, szDrive, szDir, szFName, szExt); - //n3m¸¸µé±â..^^ + //Create n3m..^^ char szN3M[_MAX_PATH]; _makepath(szN3M, szDrive, szDir, szFName, "n3m"); HANDLE hFile = CreateFile(szN3M, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -480,54 +498,54 @@ void CMapMng::SaveToFile(LPCTSTR lpszPathName) { return; } - char comment[80] = {"ÀÌÆÄÀÏ ¿©´Â »ç¶÷ ¹Ùº¸..^^"}; + char comment[80] = {"The person who opens this file is an idiot...^^"}; DWORD dwRWC; WriteFile(hFile, &comment, sizeof(char) * 80, &dwRWC, NULL); CloseHandle(hFile); - // ÁöÇü + // terrain if (m_pTerrain) { char szTerrain[_MAX_PATH]; _makepath(szTerrain, szDrive, szDir, szFName, "trn"); m_pTerrain->SaveToFile(szTerrain); } - // sdtÆÄÀÏ ÀúÀå(shape data text) + // Save sdt file (shape data text) char szSceneText[_MAX_PATH]; _makepath(szSceneText, szDrive, szDir, szFName, "sdt"); SaveObjectPostData(szSceneText); - // °­¹° ÆíÁý Á¤º¸ ÀúÀå.. + // Save river water editing information.. char szRiver[_MAX_PATH]; _makepath(szRiver, szDrive, szDir, szFName, "rvr"); m_RiverMng.SaveToFile(szRiver); - // ¿¬¸ø ÆíÁý Á¤º¸ ÀúÀå.. + // Save pond editing information.. char szPond[_MAX_PATH]; _makepath(szPond, szDrive, szDir, szFName, "pvr"); m_PondMng.SaveToFile(szPond); - //º® Á¤º¸ ÀúÀå.. + //Save wall information.. char szWall[_MAX_PATH]; _makepath(szWall, szDrive, szDir, szFName, "wal"); m_pWall->SaveToFile(szWall); - // warp Á¤º¸ load.. + // load warp information.. char szWarp[_MAX_PATH]; _makepath(szWarp, szDrive, szDir, szFName, "wap"); m_pWarpMgr->SaveToFile(szWarp); - // sound Á¤º¸ Load.. + //Load sound information.. char szSound[_MAX_PATH]; _makepath(szSound, szDrive, szDir, szFName, "tsd"); m_pSoundMgr->SaveToFile(szSound); - // light object Á¤º¸.. + // light object information.. char szLightObj[_MAX_PATH]; _makepath(szLightObj, szDrive, szDir, szFName, "tld"); m_pLightObjMgr->SaveToFile(szLightObj); - //À̺¥Æ® Á¤º¸ ÀúÀå.. + //Save event information.. //char szEvent[_MAX_PATH]; //_makepath(szEvent, szDrive, szDir, szFName, "evt"); //m_pEventMgr->SaveToFile(szEvent); @@ -538,11 +556,11 @@ void CMapMng::LoadFromFile(LPCTSTR lpszPathName) { return; } - // ÆÄÀÏ À̸§ + // file name char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_PATH], szExt[_MAX_EXT]; _splitpath(lpszPathName, szDrive, szDir, szFName, szExt); - // ÁöÇü + // terrain delete m_pTerrain; m_pTerrain = new CLyTerrain; m_pTerrain->Init(); @@ -566,27 +584,27 @@ void CMapMng::LoadFromFile(LPCTSTR lpszPathName) { _makepath(szPond, szDrive, szDir, szFName, "pvr"); m_PondMng.LoadFromFile(szPond); - //º® Á¤º¸ load.. + //load wall information.. char szWall[_MAX_PATH]; _makepath(szWall, szDrive, szDir, szFName, "wal"); m_pWall->LoadFromFile(szWall); - // warp Á¤º¸ load.. + // load warp information.. char szWarp[_MAX_PATH]; _makepath(szWarp, szDrive, szDir, szFName, "wap"); m_pWarpMgr->LoadFromFile(szWarp); - // sound Á¤º¸ Load.. + //Load sound information.. char szSound[_MAX_PATH]; _makepath(szSound, szDrive, szDir, szFName, "tsd"); m_pSoundMgr->LoadFromFile(szSound); - // light object Á¤º¸.. + // light object information.. char szLightObj[_MAX_PATH]; _makepath(szLightObj, szDrive, szDir, szFName, "tld"); m_pLightObjMgr->LoadFromFile(szLightObj); - //À̺¥Æ® Á¤º¸.. + //Event information.. //char szEvent[_MAX_PATH]; //_makepath(szEvent, szDrive, szDir, szFName, "evt"); //m_pEventMgr->LoadFromFile(szEvent); @@ -610,7 +628,7 @@ void CMapMng::Tick() { void CMapMng::Render() { if (false == m_bLoadingComplete) { - return; // ·ÎµùÀÌ ¾ÆÁ÷ ¾È ³¡³µ´Ù... + return; // Loading has not finished yet... } CN3EngTool * pEng = m_pMainFrm->m_pEng; @@ -621,19 +639,19 @@ void CMapMng::Render() { pEng->s_lpD3DDev->SetRenderState(D3DRS_FILLMODE, m_FillMode); pEng->s_lpD3DDev->SetRenderState(D3DRS_SHADEMODE, m_ShadeMode); - if (m_bRenderAxisAndGrid) // Ãà°ú ±×¸®µå ±×¸®±â... + if (m_bRenderAxisAndGrid) // Draw axes and grid... { pEng->RenderAxis(); __Matrix44 mtxWorld; mtxWorld.Scale(32.0f, 32.0f, 32.0f); if (m_SelOutputObjArray.GetSize() > 0) { CN3Transform * pSelObj = m_SelOutputObjArray.GetAt(0); - if (pSelObj) // ¼±ÅÃµÈ °´Ã¼°¡ ÀÖÀ¸¸é.. + if (pSelObj) // If there is a selected object... { - mtxWorld.PosSet(0, pSelObj->Pos().y, 0); // ³ôÀ̸¦ ¿Ã¸°´Ù. + mtxWorld.PosSet(0, pSelObj->Pos().y, 0); // Raise the height. } } - pEng->RenderGrid(mtxWorld); // ±×¸®µå ±×¸®±â... + pEng->RenderGrid(mtxWorld); // Draw grid... } if (m_pTerrain) { @@ -652,8 +670,8 @@ void CMapMng::Render() { if (pSelObj->Type() & OBJ_SHAPE) { ((CN3Shape *)pSelObj)->RenderSelected(m_bViewWireFrame); - ((CN3Shape *)pSelObj)->RenderCollisionMesh(); // Ãæµ¹ ¸Þ½Ã ±×¸®±â... - ((CN3Shape *)pSelObj)->RenderClimbMesh(); // ¿Ã¶ó°¡´Â ¸Þ½Ã ±×¸®±â.. + ((CN3Shape *)pSelObj)->RenderCollisionMesh(); // Draw collision mesh... + ((CN3Shape *)pSelObj)->RenderClimbMesh(); // Draw a rising mesh... } } @@ -691,7 +709,7 @@ void CMapMng::Render() { m_pLightObjMgr->Render(); } - // Ç®½É±â Å×½ºÆ® + // grass planting test if (m_SowSeedMng.bActive == TRUE) { m_SowSeedMng.Render(s_lpD3DDev); } @@ -766,14 +784,14 @@ void CMapMng::FocusSelObj() { } } - if (vMin.x != FLT_MAX && vMax.x != -FLT_MAX) { // ¹°Ã¼ Å©±â¿¡ ¸ÂÃç Ä«¸Þ¶ó °Å¸® Á¶Àý + if (vMin.x != FLT_MAX && vMax.x != -FLT_MAX) { // Adjust camera distance according to object size __Vector3 vDir = pCamera->Dir(); __Vector3 vAt = vMin + ((vMax - vMin) / 2); pCamera->AtPosSet(vAt); pCamera->EyePosSet(vAt - vDir * (vMax - vMin).Magnitude()); } // else {ASSERT(0);} - // { // ¹°Ã¼ Å©±â¸¦ ¾Ë ¼ö ¾øÀ¸¹Ç·Î Áö±Ý °Å¸® À¯Áö + // { // keep distance for now since object size is unknown // CN3TransformCollision* pSelObj = m_SelOutputObjArray.GetAt(0); // pCamera->m_vRot = pSelObj->m_vPos; // __Vector3 vDiff = pSelObj->m_vPos - pCamera->m_vRot; @@ -872,28 +890,28 @@ BOOL CMapMng::CameraMove(LPMSG pMsg) } break; - case '2': // '1'°ú °°Àº ³»¿ëÀÓ (ÇÔ¼ö·Î ¸¸µéÁö ¾ÊÀº ÀÌÀ¯´Â staticº¯¼ö ¶§¹®¿¡..) + case '2': // Same content as '1' (The reason it wasn't made into a function is because of the static variable.) { static BOOL bSet = FALSE; if (pCamera) { static __Vector3 vEye(0, 0, 0); static __Vector3 vAt(0, 0, 1); static __Vector3 vUp(0, 1, 0); if (GetAsyncKeyState(VK_CONTROL) & 0xff00) { vEye = pCamera->EyePos(); vAt = pCamera->AtPos(); vUp = pCamera->UpVector(); pCamera->Apply(); bSet = TRUE; return FALSE; } else if (bSet) { pCamera->EyePosSet(vEye); pCamera->AtPosSet(vAt); pCamera->UpVectorSet(vUp); pCamera->Apply(); return TRUE;} else return FALSE;} } break; - case '3': // '1'°ú °°Àº ³»¿ëÀÓ (ÇÔ¼ö·Î ¸¸µéÁö ¾ÊÀº ÀÌÀ¯´Â staticº¯¼ö ¶§¹®¿¡..) + case '3': // Same content as '1' (The reason it wasn't made into a function is because of the static variable.) { static BOOL bSet = FALSE; if (pCamera) { static __Vector3 vEye(0, 0, 0); static __Vector3 vAt(0, 0, 1); static __Vector3 vUp(0, 1, 0); if (GetAsyncKeyState(VK_CONTROL) & 0xff00) { vEye = pCamera->EyePos(); vAt = pCamera->AtPos(); vUp = pCamera->UpVector(); pCamera->Apply(); bSet = TRUE; return FALSE; } else if (bSet) { pCamera->EyePosSet(vEye); pCamera->AtPosSet(vAt); pCamera->UpVectorSet(vUp); pCamera->Apply(); return TRUE;} else return FALSE;} } break; - case '4': // '1'°ú °°Àº ³»¿ëÀÓ (ÇÔ¼ö·Î ¸¸µéÁö ¾ÊÀº ÀÌÀ¯´Â staticº¯¼ö ¶§¹®¿¡..) + case '4': // Same content as '1' (The reason it wasn't made into a function is because of the static variable.) { static BOOL bSet = FALSE; if (pCamera) { static __Vector3 vEye(0, 0, 0); static __Vector3 vAt(0, 0, 1); static __Vector3 vUp(0, 1, 0); if (GetAsyncKeyState(VK_CONTROL) & 0xff00) { vEye = pCamera->EyePos(); vAt = pCamera->AtPos(); vUp = pCamera->UpVector(); pCamera->Apply(); bSet = TRUE; return FALSE; } else if (bSet) { pCamera->EyePosSet(vEye); pCamera->AtPosSet(vAt); pCamera->UpVectorSet(vUp); pCamera->Apply(); return TRUE;} else return FALSE;} } break; - case '5': // '1'°ú °°Àº ³»¿ëÀÓ (ÇÔ¼ö·Î ¸¸µéÁö ¾ÊÀº ÀÌÀ¯´Â staticº¯¼ö ¶§¹®¿¡..) + case '5': // Same content as '1' (The reason it wasn't made into a function is because of the static variable.) { static BOOL bSet = FALSE; if (pCamera) { static __Vector3 vEye(0, 0, 0); static __Vector3 vAt(0, 0, 1); static __Vector3 vUp(0, 1, 0); if (GetAsyncKeyState(VK_CONTROL) & 0xff00) { vEye = pCamera->EyePos(); vAt = pCamera->AtPos(); vUp = pCamera->UpVector(); pCamera->Apply(); bSet = TRUE; return FALSE; } @@ -902,7 +920,7 @@ BOOL CMapMng::CameraMove(LPMSG pMsg) } break; } } - else if (iButtonDownCount == 0 && !(GetAsyncKeyState(VK_MENU) & 0xff00) ) return FALSE; // alt ۰¡ ¾È´­·ÈÀ»°æ¿ì´Â Ä«¸Þ¶ó ¿òÁ÷ÀÓÀÌ ¾Æ´Ï´Ù. + else if (iButtonDownCount == 0 && !(GetAsyncKeyState(VK_MENU) & 0xff00) ) return FALSE; // If the alt key is not pressed, there is no camera movement. static CPoint ptPrev; switch(pMsg->message) @@ -927,7 +945,7 @@ BOOL CMapMng::CameraMove(LPMSG pMsg) break; case WM_MOUSEMOVE: break; - default: // ¸¶¿ì½º ¸Þ¼¼Áö°¡ ¾Æ´Ò°æ¿ì Ä«¸Þ¶ó ¿òÁ÷ÀÓÀÌ ¾Æ´Ï´Ù. + default: // If it is not a mouse message, it is not a camera movement. return FALSE; } @@ -1023,12 +1041,12 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { } static BOOL bSelectDrag = FALSE; - if (bSelectDrag == FALSE && // Object drag select ¸ðµå°¡ ¾Æ´Ï°í - RCM_SELECT != m_RiverMng.GetRCursorMode()) // °­ÆíÁýÀÇ drag select¸ðµå°¡ ¾Æ´Ò¶§ + if (bSelectDrag == FALSE && // Not in Object drag select mode + RCM_SELECT != m_RiverMng.GetRCursorMode()) // When not in drag select mode of strong editing { CN3Camera * pCamera = m_pSceneOutput->CameraGetActive(); if (pCamera && pCamera->MoveByWindowMessage(pMsg)) { - return TRUE; // Ä«¸Þ¶ó À̵¿ ¸Þ¼¼Áö °Å¸£±â + return TRUE; // Filter camera movement messages } } if (bSelectDrag == FALSE && PCM_SELECT != m_PondMng.GetPCursorMode()) { @@ -1039,16 +1057,16 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { } if (m_pTerrain && m_pTerrain->MouseMsgFilter(pMsg)) { - return TRUE; // ÁöÇü ÆíÁý ¸Þ¼¼Áö °Å¸£±â + return TRUE; // Filter terrain edit messages } if (m_RiverMng.MouseMsgFilter(pMsg)) { - return TRUE; // °­ ÆíÁý ¸Þ¼¼Áö °Å¸£±â + return TRUE; // Filter strong edit messages } if (m_PondMng.MouseMsgFilter(pMsg)) { - return TRUE; // ¿¬¸ø ÆíÁý ¸Þ½ÃÁö °Å¸£±â + return TRUE; // Filter pond edit messages } if (m_pNPCPath && m_pNPCPath->MouseMsgFilter(pMsg)) { - return TRUE; // NPC ±æ¸¸µé±â ¸Þ¼¼Áö °Å¸£±â + return TRUE; // Filter NPC path creation messages } if (m_pWall && m_pWall->MouseMsgFilter(pMsg)) { return TRUE; @@ -1066,7 +1084,7 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { return TRUE; } - // Dummy Cube¿òÁ÷ÀÌ´Â ¸Þ¼¼Áö °Å¸£±â + // Filter Dummy Cube moving messages if (m_pDummy && m_pDummy->MouseMsgFilter(pMsg)) { return TRUE; } @@ -1086,7 +1104,7 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { } } - // ³ª¸ÓÁö °´Ã¼ ¼±Åà ¹× ¹èÄ¡ + // Select and place remaining objects switch (pMsg->message) { case WM_MOUSEMOVE: { DWORD nFlags = pMsg->wParam; @@ -1128,7 +1146,7 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { */ } } break; - case WM_LBUTTONDOWN: // °´Ã¼ ¼±Åà + case WM_LBUTTONDOWN: // Select object { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; if (m_CursorMode == CM_OBJECT_BRUSH && m_pSelSourceObj) { @@ -1150,21 +1168,21 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { return TRUE; } } break; - case WM_LBUTTONUP: // °´Ã¼ ¼±Åà + case WM_LBUTTONUP: // Select object { if (bSelectDrag) { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (abs(m_rcSelDrag.left - point.x) < 4 && abs(m_rcSelDrag.top - point.y) < 4) // Ŭ¸¯ÇѰɷΠ°£ÁÖ + if (abs(m_rcSelDrag.left - point.x) < 4 && abs(m_rcSelDrag.top - point.y) < 4) // Considered clicked { int nPart = -1; CN3Base * pBaseSel = Pick(point, &nPart); SelectObject(pBaseSel, FALSE, (GetAsyncKeyState(VK_SHIFT) & 0xff00) ? TRUE : FALSE); - if (m_pDlgBase && pBaseSel && pBaseSel->Type() & OBJ_SHAPE) // ÆÄÆ® ¼±ÅÃ.. + if (m_pDlgBase && pBaseSel && pBaseSel->Type() & OBJ_SHAPE) // Part selection.. { m_pDlgBase->m_CBShapePart.SetCurSel(nPart); } - } else { // µå·¹±× ÇÑ °Í + } else { // dragged if (m_rcSelDrag.left > point.x) { m_rcSelDrag.right = m_rcSelDrag.left; m_rcSelDrag.left = point.x; @@ -1183,12 +1201,12 @@ BOOL CMapMng::MouseMsgFilter(LPMSG pMsg) { bSelectDrag = FALSE; m_rcSelDrag.left = m_rcSelDrag.top = m_rcSelDrag.right = m_rcSelDrag.bottom = 0; - m_pMainFrm->UpdateTransformInfo(); // À§Ä¡, ȸÀü°ªµîÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. + m_pMainFrm->UpdateTransformInfo(); // Update position, rotation value, etc. return TRUE; } } break; - case WM_RBUTTONUP: // °´Ã¼ ¼±ÅÃ ÇØÁ¦ + case WM_RBUTTONUP: // deselect object { if (bSelectDrag) { ReleaseCapture(); @@ -1285,17 +1303,17 @@ CN3Base * CMapMng::Pick(POINT point, int * pnPart) // Object Picking... } void CMapMng::SelectObject(CN3Base * pObj, BOOL IsSourceObj, BOOL bAdd) { - if (IsSourceObj) { // source ¼±Åà + if (IsSourceObj) { // select source if (pObj && pObj->Type() & (OBJ_CHARACTER | OBJ_SHAPE)) { m_pSelSourceObj = (CN3Transform *)pObj; } else { m_pSelSourceObj = NULL; } - } else { // ÀÌ¹Ì ¹èÄ¡µÈ °´Ã¼ ¼±Åà + } else { // Select already placed objects CN3Transform * pSelObj = NULL; if (pObj && pObj->Type() & (OBJ_CHARACTER | OBJ_SHAPE)) { pSelObj = (CN3Transform *)pObj; - if (bAdd) // Ãß°¡ + if (bAdd) // addition { BOOL bAleadySelected = FALSE; int i, iSize = m_SelOutputObjArray.GetSize(); @@ -1306,16 +1324,16 @@ void CMapMng::SelectObject(CN3Base * pObj, BOOL IsSourceObj, BOOL bAdd) { } } if (bAleadySelected) { - m_SelOutputObjArray.RemoveAt(i); // ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ¼±Åøñ·Ï¿¡¼­ Á¦°Å + m_SelOutputObjArray.RemoveAt(i); // already exists, so remove from selection list } else { - m_SelOutputObjArray.InsertAt(0, pSelObj); // Ãß°¡ + m_SelOutputObjArray.InsertAt(0, pSelObj); // addition } - } else // »õ·Î ¼±Åà + } else // new selection { m_SelOutputObjArray.RemoveAll(); m_SelOutputObjArray.Add(pSelObj); } - } else // À߸ø ¼±ÅÃÇ߰ųª ij¸¯Åͳª shape¸¦ ¼±ÅÃÇÏÁö ¾Ê¾Ò´Ù. + } else // Selected incorrectly or did not select character or shape. { if (bAdd == FALSE) { m_SelOutputObjArray.RemoveAll(); @@ -1324,7 +1342,7 @@ void CMapMng::SelectObject(CN3Base * pObj, BOOL IsSourceObj, BOOL bAdd) { OnSelChanged(); } - if (m_SelOutputObjArray.GetSize() == 1) // ÇѰ³¸¦ ¼±ÅÃÇß´Ù¸é.. + if (m_SelOutputObjArray.GetSize() == 1) // If you select one... { m_pMainFrm->UpdateTransformInfo(); } @@ -1394,9 +1412,9 @@ void CMapMng::SelectObjectByDragRect(RECT * pRect, BOOL bAdd) { } } if (bAleadySelected) { - m_SelOutputObjArray.RemoveAt(j); // ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ¼±Åøñ·Ï¿¡¼­ Á¦°Å + m_SelOutputObjArray.RemoveAt(j); // already exists, so remove from selection list } else { - m_SelOutputObjArray.InsertAt(0, pObj); // Ãß°¡ + m_SelOutputObjArray.InsertAt(0, pObj); // addition } } } @@ -1429,19 +1447,19 @@ void CMapMng::MakeGameFiles(LPCTSTR lpszPathName, float fSize) { char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPathName, szDrive, szDir, szFName, szExt); - // ÆÄÀÏ ÀúÀå. + // Save file. HANDLE hFile = CreateFile(lpszPathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (INVALID_HANDLE_VALUE == hFile) { MessageBox(::GetActiveWindow(), lpszPathName, "Fail to open map game data file for save, Pleas retry.", MB_OK); return; } - char comment[80] = {"ÀÌÆÄÀÏ ¿©´Â »ç¶÷ ¹Ùº¸..^^"}; + char comment[80] = {"The person who opens this file is an idiot...^^"}; DWORD dwRWC; WriteFile(hFile, &m_iZoneID, sizeof(int), &dwRWC, NULL); WriteFile(hFile, &comment, sizeof(char) * 80, &dwRWC, NULL); CloseHandle(hFile); - // ÁöÇüÁ¤º¸ ÀúÀå + // Save terrain information HANDLE hTerrainGameFile = NULL; char szTerrain[_MAX_PATH] = ""; _makepath(szTerrain, szDrive, szDir, szFName, ".gtd"); @@ -1450,7 +1468,7 @@ void CMapMng::MakeGameFiles(LPCTSTR lpszPathName, float fSize) { if (INVALID_HANDLE_VALUE == hTerrainGameFile) { MessageBox(::GetActiveWindow(), szTerrain, "Failed to open terrain file for save", MB_OK); } else { - m_pTerrain->m_szName = szFName; // À̸§À» ÁöÁ¤ÇÑ´Ù.. ÀÌ À̸§´ë·Î ÀúÀåµÈ´Ù. + m_pTerrain->m_szName = szFName; // Specify a name. It is saved according to this name. m_pTerrain->SaveGameData(hTerrainGameFile); char szColorMapName[_MAX_PATH]; _makepath(szColorMapName, szDrive, szDir, szFName, ".tct"); @@ -1466,15 +1484,15 @@ void CMapMng::MakeGameFiles(LPCTSTR lpszPathName, float fSize) { m_pTerrain->MakeGameLightMap(szLightMapName); } - // Shape Manager ¸¸µé°í ÀúÀå... - // if(true == m_pSceneOutput->CheckOverlappedShapesAndReport()) // À̸§À̳ª À§Ä¡ Áߺ¹ È®ÀÎ.. + // Create and save Shape Manager... + // if(true == m_pSceneOutput->CheckOverlappedShapesAndReport()) //Check for name or location duplicates... // { - // int idYesNo = ::MessageBox(::GetActiveWindow(), "Áߺ¹µÈ ¿ÀºêÁ§Æ®µéÀ» »èÁ¦ ÇϽðڽÀ´Ï±î?", "Áߺ¹µÈ ¿ÀºêÁ§Æ® ó¸®", MB_YESNO); + // int idYesNo = ::MessageBox(::GetActiveWindow(), "Do you want to delete duplicate objects?", "Handling duplicate objects", MB_YESNO); // if(IDYES == idYesNo) // { // m_pSceneOutput->DeleteOverlappedShapes(); - // m_pDlgOutputList->UpdateTree(m_pSceneOutput); // ¾Æ¿ôDz ¸®½ºÆ® üũ.. - // m_SelOutputObjArray.RemoveAll(); // ¼¿·º¼Ç ÃʱâÈ­.. + // m_pDlgOutputList->UpdateTree(m_pSceneOutput); // Check output list... + // m_SelOutputObjArray.RemoveAll(); // Initialize selection... // } // } @@ -1483,19 +1501,19 @@ void CMapMng::MakeGameFiles(LPCTSTR lpszPathName, float fSize) { (m_pTerrain->m_iHeightMapSize - 1) * TERRAIN_CELL_SIZE); int nSC = m_pSceneOutput->ShapeCount(); for (int i = 0; i < nSC; i++) { - ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Shape Ãß°¡. + ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Add Shape. } if (m_pWall) { m_pWall->AddWall2Coll(&ShapeMgr); } - ShapeMgr.GenerateCollisionData(); // Ãæµ¹ ¸Þ½Ã µ¥ÀÌÅ͸¦ »ý¼ºÇÑ´Ù... + ShapeMgr.GenerateCollisionData(); // Generate collision mesh data. char szObjPosting[_MAX_PATH] = ""; _makepath(szObjPosting, szDrive, szDir, szFName, ".opd"); // "Object Posting Data" - Shape Manager file À̸§À» Á¤Çϰí.. ShapeMgr.SaveToFile(szObjPosting); - //À̺¥Æ® ÀúÀå.. + //Save event... char szEventName[_MAX_PATH] = ""; _makepath(szEventName, szDrive, szDir, szFName, ".gev"); // if (!m_pEventMgr->MakeGameFile(szEventName, m_pTerrain->m_iHeightMapSize)) { @@ -1510,8 +1528,8 @@ void CMapMng::MakeGameFiles(LPCTSTR lpszPathName, float fSize) { } void CMapMng::MakeTerrainMovableAttr(CN3ShapeMgr * pShapeMgr) { - m_pTerrain->MakeMoveTable(m_pEventMgr->m_ppEvent); //¿òÁ÷ÀÓ ¼Ó¼º ¼ÂÆÃ... - pShapeMgr->MakeMoveTable(m_pEventMgr->m_ppEvent); //¿òÁ÷ÀÓ ¼Ó¼º ¼ÂÆÃ... + m_pTerrain->MakeMoveTable(m_pEventMgr->m_ppEvent); //Motion property settings... + pShapeMgr->MakeMoveTable(m_pEventMgr->m_ppEvent); //Motion property settings... } void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { @@ -1526,19 +1544,19 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { return; } - //terrain ÀúÀå.. + //save terrain.. m_pTerrain->SaveServerData(hFile); // - // Shape Manager ¸¸µé°í ÀúÀå... - // if(true == m_pSceneOutput->CheckOverlappedShapesAndReport()) // À̸§À̳ª À§Ä¡ Áߺ¹ È®ÀÎ.. + // Create and save Shape Manager... + // if(true == m_pSceneOutput->CheckOverlappedShapesAndReport()) //Check for name or location duplicates... // { - // int idYesNo = ::MessageBox(::GetActiveWindow(), "Áߺ¹µÈ ¿ÀºêÁ§Æ®µéÀ» »èÁ¦ ÇϽðڽÀ´Ï±î?", "Áߺ¹µÈ ¿ÀºêÁ§Æ® ó¸®", MB_YESNO); + // int idYesNo = ::MessageBox(::GetActiveWindow(), "Do you want to delete duplicate objects?", "Handling duplicate objects", MB_YESNO); // if(IDYES == idYesNo) // { // m_pSceneOutput->DeleteOverlappedShapes(); - // m_pDlgOutputList->UpdateTree(m_pSceneOutput); // ¾Æ¿ôDz ¸®½ºÆ® üũ.. - // m_SelOutputObjArray.RemoveAll(); // ¼¿·º¼Ç ÃʱâÈ­.. + // m_pDlgOutputList->UpdateTree(m_pSceneOutput); // Check output list... + // m_SelOutputObjArray.RemoveAll(); // Initialize selection... // } // } @@ -1547,23 +1565,23 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { (m_pTerrain->m_iHeightMapSize - 1) * TERRAIN_CELL_SIZE); int nSC = m_pSceneOutput->ShapeCount(); for (int i = 0; i < nSC; i++) { - ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Shape Ãß°¡. + ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Add Shape. } if (m_pWall) { m_pWall->AddWall2Coll(&ShapeMgr); } - ShapeMgr.GenerateCollisionData(); // Ãæµ¹ ¸Þ½Ã µ¥ÀÌÅ͸¦ »ý¼ºÇÑ´Ù.. + ShapeMgr.GenerateCollisionData(); // Generate collision mesh data. MakeTerrainMovableAttr(&ShapeMgr); - ShapeMgr.SaveCollisionData(hFile); // Ãæµ¹ µ¥ÀÌÅ͸¸ ÀúÀå... + ShapeMgr.SaveCollisionData(hFile); // Save only collision data... - // Object Event ÀúÀå. + // Save Object Event. // DWORD dwNum; - int iEventObjectCount = 0; // ¸ÕÀú °¹¼ö¸¦ ¼¼°í.. + int iEventObjectCount = 0; // First count the number... for (int i = 0; i < nSC; i++) { CN3Shape * pShape = m_pSceneOutput->ShapeGet(i); if (pShape->m_iEventID || pShape->m_iEventType || pShape->m_iNPC_ID || - pShape->m_iNPC_Status) { // À̺¥Æ®°¡ ÀÖÀ¸¸é + pShape->m_iNPC_Status) { // If there is an event iEventObjectCount++; } } @@ -1573,7 +1591,8 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { CN3Shape * pShape = m_pSceneOutput->ShapeGet(i); short sEvent = 0; __Vector3 vPos; - if (pShape->m_iEventID || pShape->m_iEventType || pShape->m_iNPC_ID || pShape->m_iNPC_Status) // À̺¥Æ®°¡ ÀÖÀ¸¸é + if (pShape->m_iEventID || pShape->m_iEventType || pShape->m_iNPC_ID || + pShape->m_iNPC_Status) // If there is an event { WriteFile(hFile, &(pShape->m_iBelong), 4, &dwNum, NULL); sEvent = (short)(pShape->m_iEventID); @@ -1592,7 +1611,7 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { } } - //MapTile¼Ó¼º ÀúÀå... + //Save MapTile properties... // m_pEventMgr->MakeEventArray(); /* @@ -1611,19 +1630,19 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { m_pRegenUser->SaveServerData(hFile); m_pWarpMgr->SaveServerData(hFile); - // À̺¥Æ® Á¤º¸.. - // ÆÄÀÏ À̸§ + //Event information.. + // file name char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_PATH], szExt[_MAX_EXT]; _splitpath(lpszPathName, szDrive, szDir, szFName, szExt); - //À̺¥Æ® Á¤º¸ ÀúÀå.. + //Save event information.. char szEvent[_MAX_PATH]; char szEvtFName[_MAX_PATH]; sprintf(szEvtFName, "%s_Event", szFName); _makepath(szEvent, szDrive, szDir, szEvtFName, "txt"); - m_pEventMgr->SaveInfoTextFile(szEvent); //¼­¹ö¿¡¼­ ¾²´Â À̺¥Æ® ¾ÆÀ̵ð Á¶°ÇµéÀÌ µé¾î ÀÖ´Â ÅØ½ºÆ® ÆÄÀÏ.. + m_pEventMgr->SaveInfoTextFile(szEvent); //Text file containing event ID conditions used by the server.. - // ÅØ½ºÆ®ÆÄÀÏ·Î ÇÔ »Ì¾Æº¸ÀÚ.. + // Let's extract it as a text file. FILE * stream = fopen("c:\\move.txt", "w"); for (int z = m_pTerrain->m_iHeightMapSize - 1; z >= 0; z--) { for (int x = 0; x < m_pTerrain->m_iHeightMapSize; x++) { @@ -1633,16 +1652,16 @@ void CMapMng::MakeServerDataFiles(LPCTSTR lpszPathName) { fprintf(stream, "\n"); } fclose(stream); - //»Ì¾Ò´Ù. + // pulled. /* char szCollisionFN[512]; char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszPathName, szDrive, szDir, szFName, szExt); - _makepath(szCollisionFN, szDrive,szDir, szFName, ".scd"); // ´Ù¸¥ À̸§À¸·Î ÀúÀå.. + _makepath(szCollisionFN, szDrive,szDir, szFName, ".scd"); // Save as another name.. CFile file; file.Open(szCollisionFN, CFile::modeCreate | CFile::modeWrite); - ShapeMgr.SaveCollisionData((HANDLE)file.m_hFile); // Ãæµ¹ µ¥ÀÌÅ͸¸ ÀúÀå... + ShapeMgr.SaveCollisionData((HANDLE)file.m_hFile); // Save only collision data... file.Close(); */ CloseHandle(hFile); @@ -1753,7 +1772,7 @@ void CMapMng::RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd) { // begin pD3DDev->BeginScene(); - // ObjectÀÇ À§Ä¡ ¹× Å©±â ÆÄ¾Ç + // Determine the location and size of the object __Vector3 vDir(-1, -1, 3); vDir.Normalize(); __Vector3 vMin = pObj->Min(); @@ -1763,7 +1782,7 @@ void CMapMng::RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd) { vAt = vMin + (vMax - vMin) / 2.0f; vAt.y -= (vMax - vMin).Magnitude() / 8.0f; vEye = vAt - vDir * ((vMax - vMin).Magnitude() * 0.7f); - // pEng->s_CameraData.vEye = vEye; // ShapeÀÇ LOD¼³Á¤ ¶§¹®¿¡.. + // pEng->s_CameraData.vEye = vEye; // Due to the LOD setting of the shape.. // back up __Matrix44 mtxOldView, mtxOldProj; @@ -1772,7 +1791,7 @@ void CMapMng::RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd) { DWORD dwLighting; pD3DDev->GetRenderState(D3DRS_LIGHTING, &dwLighting); - // camera frustum ¼¼ÆÃ..(ApplyÇÔ¼ö ³»ºÎ¿¡¼­ transformÀ» ¹Ù²Ù±â¶§¹®¿¡ ÀÌ À§Ä¡¿¡ ³Ö¾î¾ß ÇÑ´Ù.) + // Setting.. (Because the transform is changed inside the Apply function, it must be placed in this location.) // pEng->s_CameraData.vAt = vAt; // TempCamera.s_CameraData = pEng->s_CameraData; CN3Camera TempCamera; @@ -1780,7 +1799,7 @@ void CMapMng::RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd) { TempCamera.AtPosSet(vAt); TempCamera.UpVectorSet(vUp); TempCamera.Tick(); - TempCamera.Apply(); // ÀÓ½ÃÄ«¸Þ¶ó¿¡ µ¥ÀÌÅ͸¦ ³Ö°í frustum Á¤º¸¸¦ °è»ê.. + TempCamera.Apply(); // Insert data into temporary camera and calculate frustum information.. // View Matrix ¹× Projection Matrix Setting // __Matrix44 viewmtx; @@ -1804,11 +1823,11 @@ void CMapMng::RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd) { pShape->Render(); } - CN3Base::s_AlphaMgr.Render(); // Alpha primitive ±×¸®±â... + CN3Base::s_AlphaMgr.Render(); // Draw Alpha primitive... pD3DDev->EndScene(); // end pEng->Present(hWnd); // present - // restore (ÀÌÀü »óÅ·ΠµÇµ¹·ÁÁÖÁö ¾ÊÀ¸¸é ÁöÇü¿¡¼­ pickingÀÌ Á¦´ë·Î µÇÁö ¾Ê´Â´Ù) + // restore (if you do not return it to the previous state, picking from the terrain will not work properly) pD3DDev->SetTransform(D3DTS_VIEW, &mtxOldView); pD3DDev->SetTransform(D3DTS_PROJECTION, &mtxOldProj); CopyMemory(&CN3Base::s_CameraData, &CameraDataBackUp, sizeof(CameraDataBackUp)); @@ -1829,7 +1848,7 @@ void CMapMng::SetCursorMode(int iMode) { m_pDummy->SetSelObj(NULL); } - m_pBrushDlg->SetTerrain(NULL); // Brush âÀ» º¸ÀÌÁö ¾Ê°ÔÇÑ´Ù. + m_pBrushDlg->SetTerrain(NULL); // Make the Brush window invisible. if (m_pTerrain) { m_pTerrain->SetEditMode(TEM_NOT); } @@ -1854,7 +1873,7 @@ void CMapMng::SetCursorMode(int iMode) { m_RiverMng.SetEditMode(FALSE); m_PondMng.SetEditMode(FALSE); - // Ç®½É±â + // Planting grass m_SowSeedMng.SetActive(FALSE); switch (iMode) { @@ -1866,14 +1885,14 @@ void CMapMng::SetCursorMode(int iMode) { break; case CM_POS: m_pDummy = &m_PosDummy; - m_pMainFrm->UpdateTransformInfo(); // À§Ä¡, ȸÀü°ªµîÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. + m_pMainFrm->UpdateTransformInfo(); // Update position, rotation value, etc. break; case CM_ROTATE: m_pDummy = &m_RotDummy; break; case CM_SCALE: m_pDummy = &m_ScaleDummy; - m_pMainFrm->UpdateTransformInfo(); // À§Ä¡, ȸÀü°ªµîÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. + m_pMainFrm->UpdateTransformInfo(); // Update position, rotation value, etc. break; case CM_EDIT_TERRAIN: m_pBrushDlg->SetTerrain(m_pTerrain); @@ -1920,12 +1939,12 @@ void CMapMng::SetCursorMode(int iMode) { (m_pTerrain->m_iHeightMapSize - 1) * TERRAIN_CELL_SIZE); int nSC = m_pSceneOutput->ShapeCount(); for (int i = 0; i < nSC; i++) { - ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Shape Ãß°¡. + ShapeMgr.Add(m_pSceneOutput->ShapeGet(i)); // Add Shape. } if (m_pWall) { m_pWall->AddWall2Coll(&ShapeMgr); } - ShapeMgr.GenerateCollisionData(); // Ãæµ¹ ¸Þ½Ã µ¥ÀÌÅ͸¦ »ý¼ºÇÑ´Ù.. + ShapeMgr.GenerateCollisionData(); // Generate collision mesh data. MakeTerrainMovableAttr(&ShapeMgr); m_pNPCPath->m_pppRefEvent = m_pEventMgr->m_ppEvent; @@ -1953,7 +1972,7 @@ void CMapMng::SetCursorMode(int iMode) { m_pSoundMgr->SetActive(true); } break; - // Ç®½É±â + // Planting grass case CM_EDIT_SEED: { m_SowSeedMng.SetActive(TRUE); } break; @@ -1978,7 +1997,7 @@ void CMapMng::SetCursorMode(int iMode) { m_pDummy->SetSelObj(NULL); } - m_pDummy->m_pTerrainRef = m_pTerrain; // ´õ¹Ì¿¡ ÁöÇü Æ÷ÀÎÅ͸¦ ³Ö¾îÁØ´Ù. + m_pDummy->m_pTerrainRef = m_pTerrain; // Insert a terrain pointer into the dummy. } m_pMainFrm->GetActiveView()->Invalidate(FALSE); } @@ -1992,7 +2011,7 @@ void CMapMng::Invalidate() { } } -void CMapMng::DropSelObjToTerrain() { // ¼±ÅÃÇÑ °´Ã¼¸¦ ÁöÇü¿¡ ºÙÀδÙ.(Y°ª¸¸ Á¶Á¤) +void CMapMng::DropSelObjToTerrain() { // Attach the selected object to the terrain. (Adjust Y value only) if (m_pTerrain == NULL) { return; } @@ -2055,7 +2074,8 @@ void CMapMng::ImportTerrainHeight(const char * szMeshFN) { m_bLoadingComplete = true; } -void CMapMng::RenderGrid(float fGridSize, float fMaxDistance) // fGridSizeÅ©±â·Î fMaxDistance°Å¸®±îÁö °ÝÀÚ¸¦ ±×·ÁÁØ´Ù +void CMapMng::RenderGrid(float fGridSize, + float fMaxDistance) // Draw a grid with fGridSize size up to fMaxDistance distance. { if (m_pMainFrm == NULL) { return; @@ -2120,11 +2140,11 @@ void CMapMng::SaveObjectPostData(LPCTSTR lpszFileName) { FILE* stream = fopen(lpszFileName, "w"); if (stream == NULL) { - m_pMainFrm->MessageBox("ÆÄÀÏÀ» ¸¸µé¼ö ¾ø½À´Ï´Ù."); + m_pMainFrm->MessageBox("The file cannot be created."); return; } - // Æú´õ À̸§À» ºÐ¸®Çϰí.. + // Separate the folder name... char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); @@ -2139,9 +2159,9 @@ void CMapMng::SaveObjectPostData(LPCTSTR lpszFileName) { char szSFN[MAX_PATH]; _makepath(szSFN, szDrive, szDir, pShape->Name(), ".n3shape"); - pShape->SaveToFile(szSFN); // Shape Á¤º¸ binary file·Î ÀúÀå.. + pShape->SaveToFile(szSFN); // Save shape information as binary file.. - fprintf(stream, "%s\n", pShape->Name()); // ÅØ½ºÆ®¿¡ Shape ÆÄÀÏ À̸§À» ¾´´Ù.. + fprintf(stream, "%s\n", pShape->Name()); // Write the shape file name in the text. } fclose(stream); // OldData @@ -2154,13 +2174,13 @@ void CMapMng::SaveObjectPostData(LPCTSTR lpszFileName) { FILE * stream = fopen(lpszFileName, "w"); if (stream == NULL) { - m_pMainFrm->MessageBox("ÆÄÀÏÀ» ¸¸µé¼ö ¾ø½À´Ï´Ù."); + m_pMainFrm->MessageBox("The file cannot be created."); return; } - // Æú´õ À̸§À» ºÐ¸®Çϰí.. + // Separate the folder name... char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; - _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); // ÆÄÀÏ À̸§°ú È®ÀåÀÚ¸¸ °®°í.. + _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); // Contains only the file name and extension. int iSC = m_pSceneOutput->ShapeCount(); fprintf(stream, "Shape Post Count : %d\n", iSC); @@ -2169,8 +2189,9 @@ void CMapMng::SaveObjectPostData(LPCTSTR lpszFileName) { for (int i = 0; i < iSC; ++i) { CN3Shape * pShape = m_pSceneOutput->ShapeGet(i); - _splitpath(pShape->FileName().c_str(), NULL, NULL, szFName, szExt); // ÆÄÀÏ À̸§°ú È®ÀåÀÚ¸¸ °®°í.. - _makepath(szSFN, NULL, NULL, szFName, szExt); // ÆÄÀÏ À̸§À» ´Ù½Ã ¸¸µç´Ù. + _splitpath(pShape->FileName().c_str(), NULL, NULL, szFName, + szExt); // Contains only the file name and extension. + _makepath(szSFN, NULL, NULL, szFName, szExt); // Recreate the file name. __Vector3 vPos = pShape->Pos(); __Vector3 vScale = pShape->Scale(); @@ -2199,13 +2220,13 @@ void CMapMng::SaveObjectPostDataPartition(LPCTSTR lpszFileName, float psx, float FILE * stream = fopen(lpszFileName, "w"); if (stream == NULL) { - m_pMainFrm->MessageBox("ÆÄÀÏÀ» ¸¸µé¼ö ¾ø½À´Ï´Ù."); + m_pMainFrm->MessageBox("The file cannot be created."); return; } - // Æú´õ À̸§À» ºÐ¸®Çϰí.. + // Separate the folder name... char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; - _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); // ÆÄÀÏ À̸§°ú È®ÀåÀÚ¸¸ °®°í.. + _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); // Contains only the file name and extension. float sx = (int)(psx / TERRAIN_CELL_SIZE) * TERRAIN_CELL_SIZE; float sz = (int)(psz / TERRAIN_CELL_SIZE) * TERRAIN_CELL_SIZE; @@ -2248,8 +2269,9 @@ void CMapMng::SaveObjectPostDataPartition(LPCTSTR lpszFileName, float psx, float int idx = (*it); CN3Shape * pShape = m_pSceneOutput->ShapeGet(idx); - _splitpath(pShape->FileName().c_str(), NULL, NULL, szFName, szExt); // ÆÄÀÏ À̸§°ú È®ÀåÀÚ¸¸ °®°í.. - _makepath(szSFN, NULL, NULL, szFName, szExt); // ÆÄÀÏ À̸§À» ´Ù½Ã ¸¸µç´Ù. + _splitpath(pShape->FileName().c_str(), NULL, NULL, szFName, + szExt); // Contains only the file name and extension. + _makepath(szSFN, NULL, NULL, szFName, szExt); // Recreate the file name. __Vector3 vPos = pShape->Pos(); vPos.x -= sx; @@ -2279,29 +2301,29 @@ void CMapMng::LoadObjectPostData(LPCTSTR lpszFileName) { return; } - // Scene ¿¡ ÀÖ´Â ¿ÀºêÁ§Æ®µé Release... + // Release the objects in the scene... m_pSceneOutput->ShapeRelease(); m_pSceneOutput->ChrRelease(); FILE * stream = fopen(lpszFileName, "r"); if (stream == NULL) { - m_pMainFrm->MessageBox("ÁöÁ¤ÇÑ ÅØ½ºÆ® ÆÄÀÏÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù."); + m_pMainFrm->MessageBox("The specified text file could not be found."); return; } - // Æú´õ À̸§À» ºÐ¸®Çϰí.. + // Separate the folder name... char szDrive[_MAX_DRIVE], szDir[_MAX_DIR], szFName[_MAX_FNAME], szExt[_MAX_EXT]; _splitpath(lpszFileName, szDrive, szDir, szFName, szExt); char szFirstLine[256]; - fgets(szFirstLine, 256, stream); // ù° ÁÙÀ» Àаí.. - if (strstr(szFirstLine, "Shape Count : ")) // ¹®ÀÚ¿­ÀÌ ÀÖÀ¸¸é ¿¹Àü µ¥ÀÌÅÍÀÌ´Ù.. + fgets(szFirstLine, 256, stream); // Read the first line... + if (strstr(szFirstLine, "Shape Count : ")) // If there is a string, it is old data. { int iSC = 0, result = 0; sscanf(szFirstLine, "Shape Count : %d\n", &iSC); for (int i = 0; i < iSC; ++i) { char szDestName[_MAX_PATH]; - result = fscanf(stream, "%s\n", szDestName); // ÆÄÀÏ À̸§À» Àаí.. + result = fscanf(stream, "%s\n", szDestName); // Read the file name... if (result == EOF) { break; } @@ -2313,17 +2335,17 @@ void CMapMng::LoadObjectPostData(LPCTSTR lpszFileName) { if (false == pShape->LoadFromFile(szSFN)) { delete pShape; pShape = NULL; - continue; // Shape Á¤º¸ binary file·Î Àбâ.. + continue; // Read shape information as binary file.. } - szDestName[lstrlen(szDestName) - 5] = NULL; // _0000 ¹®ÀÚ¿­À» »«´Ù.. + szDestName[lstrlen(szDestName) - 5] = NULL; // Subtract the _0000 string.. _makepath(szSFN, NULL, NULL, szDestName, ".n3shape"); pShape->m_szName = szDestName; - pShape->FileNameSet(std::string(szSFN)); // ´Ù½Ã ÆÄÀÏ À̸§ ¼³Á¤.. + pShape->FileNameSet(std::string(szSFN)); // Set file name again... m_pSceneOutput->ShapeAdd(pShape); } - } else // »õ·Î ¸¸µç µ¥ÀÌÅÍÀÌ´Ù.. + } else // This is newly created data.. { int iSC = 0; sscanf(szFirstLine, "Shape Post Count : %d\n", &iSC); @@ -2332,7 +2354,7 @@ void CMapMng::LoadObjectPostData(LPCTSTR lpszFileName) { char szLine[1024] = ""; for (int i = 0; i < iSC; ++i) { CN3Shape * pShape = new CN3Shape(); - m_pSceneOutput->ShapeAdd(pShape); // Ãß°¡.. + m_pSceneOutput->ShapeAdd(pShape); // addition.. int iSPC = 0, iBelong = 0, iEventID = 0, iEventType = 0, iNPC_ID = 0, iNPC_Status = 0; __Vector3 vPos(0, 0, 0); @@ -2347,9 +2369,9 @@ void CMapMng::LoadObjectPostData(LPCTSTR lpszFileName) { szSFN, &iSPC, &(vPos.x), &(vPos.y), &(vPos.z), &(qtRot.x), &(qtRot.y), &(qtRot.z), &(qtRot.w), &(vScale.x), &(vScale.y), &(vScale.z), &(iBelong), &(iEventID), &(iEventType), &(iNPC_ID), &(iNPC_Status)); - // ÅØ½ºÆ®¿¡ Shape ÆÄÀÏ À̸§À» ¾´´Ù.. + // Write the shape file name in the text. wsprintf(szSFN2, "Object\\%s", szSFN); - pShape->LoadFromFile(szSFN2); // ÆÄÀÏ¿¡¼­ Àаí.. + pShape->LoadFromFile(szSFN2); // Read from file... for (int j = 0; j < iSPC; j++) { fgets(szLine, 1024, stream); @@ -2365,7 +2387,7 @@ void CMapMng::LoadObjectPostData(LPCTSTR lpszFileName) { pShape->PosSet(vPos); pShape->RotSet(qtRot); pShape->ScaleSet(vScale); - pShape->ReCalcMatrix(); // Çà·Ä ´Ù½Ã °è»ê.. + pShape->ReCalcMatrix(); // Recalculate the matrix... pShape->m_iBelong = iBelong; pShape->m_iEventID = iEventID; @@ -2413,14 +2435,14 @@ void CMapMng::ImportPostDataFromScene(const char * szFileName) { float fFrmCur, fFrmStart, fFrmEnd; ReadFile(hFile, &nCameraActive, 4, &dwRWC, NULL); ReadFile(hFile, &fFrmCur, 4, &dwRWC, NULL); // Animation Frame; - ReadFile(hFile, &fFrmStart, 4, &dwRWC, NULL); // Àüü ÇÁ·¹ÀÓ. - ReadFile(hFile, &fFrmEnd, 4, &dwRWC, NULL); // Àüü ÇÁ·¹ÀÓ. + ReadFile(hFile, &fFrmStart, 4, &dwRWC, NULL); // Entire frame. + ReadFile(hFile, &fFrmEnd, 4, &dwRWC, NULL); // Entire frame. int nL = 0; char szName[512] = ""; int nCC = 0; - ReadFile(hFile, &nCC, 4, &dwRWC, NULL); // Ä«¸Þ¶ó.. + ReadFile(hFile, &nCC, 4, &dwRWC, NULL); // camera.. for (int i = 0; i < nCC; i++) { ReadFile(hFile, &nL, 4, &dwRWC, NULL); if (nL <= 0) { @@ -2432,7 +2454,7 @@ void CMapMng::ImportPostDataFromScene(const char * szFileName) { } int nLC = 0; - ReadFile(hFile, &nLC, 4, &dwRWC, NULL); // Ä«¸Þ¶ó.. + ReadFile(hFile, &nLC, 4, &dwRWC, NULL); // camera.. for (int i = 0; i < nLC; i++) { ReadFile(hFile, &nL, 4, &dwRWC, NULL); if (nL <= 0) { @@ -2459,7 +2481,7 @@ void CMapMng::ImportPostDataFromScene(const char * szFileName) { } int nChrC = 0; - ReadFile(hFile, &nChrC, 4, &dwRWC, NULL); // ij¸¯ÅÍ + ReadFile(hFile, &nChrC, 4, &dwRWC, NULL); // character for (int i = 0; i < nChrC; i++) { ReadFile(hFile, &nL, 4, &dwRWC, NULL); if (nL <= 0) { @@ -2470,7 +2492,7 @@ void CMapMng::ImportPostDataFromScene(const char * szFileName) { szName[nL] = NULL; } - m_pDlgOutputList->UpdateTree(m_pSceneOutput); // Æ®¸® ¾÷µ¥ÀÌÆ®... + m_pDlgOutputList->UpdateTree(m_pSceneOutput); // update tree... CloseHandle(hFile); } @@ -2489,7 +2511,7 @@ void CMapMng::DeleteUnusedFiles() { std::vector unusedFNs; std::string szFN; - // ÀÏ´Ü ¸ù¶¥ ´Ù ¸Ê¿¡ ³Ö´Â´Ù.. + // First, put everything into the map. mapBase mBases; int iSC = m_pSceneOutput->ShapeCount(); @@ -2522,7 +2544,7 @@ void CMapMng::DeleteUnusedFiles() { pPart = pShape->Part(j); if (NULL == pPart) { CString szErr; - szErr.Format("NULL Part : %s - %d¹øÂ° Part", pShape->FileName().c_str(), j); + szErr.Format("NULL Part : %s - %dth Part", pShape->FileName().c_str(), j); invalidFNs.push_back(szErr.operator LPCTSTR()); continue; } @@ -2534,7 +2556,7 @@ void CMapMng::DeleteUnusedFiles() { mBases.insert(valBase(szFN, pPMesh)); } else { CString szErr; - szErr.Format("NULL PMesh : %s - %d¹øÂ° Part", pShape->FileName().c_str(), j); + szErr.Format("NULL PMesh : %s - %dth Part", pShape->FileName().c_str(), j); invalidFNs.push_back(szErr.operator LPCTSTR()); } @@ -2547,7 +2569,7 @@ void CMapMng::DeleteUnusedFiles() { mBases.insert(valBase(szFN, pTex)); } else { CString szErr; - szErr.Format("NULL Texture : %s - %d¹øÂ° Part, %d¹øÂ° Texture", pShape->FileName().c_str(), j, k); + szErr.Format("NULL Texture : %s - %dth Part, %dth Texture", pShape->FileName().c_str(), j, k); invalidFNs.push_back(szErr.operator LPCTSTR()); continue; } @@ -2555,7 +2577,7 @@ void CMapMng::DeleteUnusedFiles() { } } - // ÆÄÀÏÀ» ã°í.. + // Find the file... std::string szPath = CN3Base::PathGet() + "object\\"; ::SetCurrentDirectory(szPath.c_str()); CFileFind ff; @@ -2577,7 +2599,7 @@ void CMapMng::DeleteUnusedFiles() { szFN = szFNTmp; it_Base it = mBases.find(szFN); if (it != mBases.end()) { - continue; // ã¾ÒÀ¸¸é ¾´°Å´Ù.. + continue; // If I found it, I wrote it. } unusedFNs.push_back(szFN); @@ -2596,7 +2618,7 @@ void CMapMng::DeleteUnusedFiles() { } } - // ÆÄÀÏ Áö¿ì±â ´ëÈ­»óÀÚ ¶ç¿ì±â.. + // Open the file deletion dialog box.. CDlgUnusedFiles dlg; int iUFC = unusedFNs.size(); for (int i = 0; i < iUFC; i++) { @@ -2610,14 +2632,14 @@ void CMapMng::DeleteUnusedFiles() { dlg.DoModal(); - // ¸ðµÎ ¾÷µ¥ÀÌÆ®.. - m_pSelSourceObj = NULL; // ÀÌ·¸°Ô ÇØÁÖ¾î¾ß »¶ÀÌ ¾È³­´Ù. + // Update all.. + m_pSelSourceObj = NULL; // If you do it like this, it won't work. m_SelOutputObjArray.RemoveAll(); - this->LoadSourceObjects(); // Source Object ¸¦ ´Ù½Ã Àаí.. - this->UpdateAll(); // ¸ù¶¥ ¾÷µ¥ÀÌÆ®... + this->LoadSourceObjects(); // Read the Source Object again... + this->UpdateAll(); // Update everything... } -void CMapMng::DeleteOverlappedObjects() // À§Ä¡°¡ °ãÄ£ Á§Æ®¸¦ ã´Â´Ù. +void CMapMng::DeleteOverlappedObjects() // Find objects with overlapping positions. { std::vector OverlappedObjects; int iSC = m_pSceneOutput->ShapeCount(); @@ -2644,14 +2666,14 @@ void CMapMng::DeleteUnusedFiles() { iSC = OverlappedObjects.size(); for (int i = 0; i < iSC; i++) { - m_pSceneOutput->ShapeDelete(OverlappedObjects[i]); // °ãÄ£°Å Áö¿ì±â.. + m_pSceneOutput->ShapeDelete(OverlappedObjects[i]); // Delete overlaps... } - // ¾÷µ¥ÀÌÆ®... - m_pSelSourceObj = NULL; // ÀÌ·¸°Ô ÇØÁÖ¾î¾ß »¶ÀÌ ¾È³­´Ù. + // update... + m_pSelSourceObj = NULL; // If you do it like this, it won't work. m_SelOutputObjArray.RemoveAll(); if (m_pDlgOutputList) { - m_pDlgOutputList->UpdateTree(m_pSceneOutput); // ¸ù¶¥ ¾÷µ¥ÀÌÆ®... + m_pDlgOutputList->UpdateTree(m_pSceneOutput); // Update everything... } } @@ -2673,14 +2695,14 @@ void CMapMng::DeleteSelectedSourceObjects() { iSC = SameObjects.size(); for (int i = 0; i < iSC; i++) { - m_pSceneOutput->ShapeDelete(SameObjects[i]); // °ãÄ£°Å Áö¿ì±â.. + m_pSceneOutput->ShapeDelete(SameObjects[i]); // Delete overlaps... } - // ¾÷µ¥ÀÌÆ®... + // update... m_pSceneSource->ShapeDelete((CN3Shape *)m_pSelSourceObj); - m_pSelSourceObj = NULL; // ÀÌ·¸°Ô ÇØÁÖ¾î¾ß »¶ÀÌ ¾È³­´Ù. + m_pSelSourceObj = NULL; // If you do it like this, it won't work. m_SelOutputObjArray.RemoveAll(); - this->UpdateAll(); // ¸ù¶¥ ¾÷µ¥ÀÌÆ®... + this->UpdateAll(); // Update everything... } CN3Camera * CMapMng::CameraGet() { @@ -2734,11 +2756,11 @@ void CMapMng::SetEditState(ENUM_EDIT_STATE eEditStat) { } break; case eEDIT_COPY: { - // ±âÁ¸¹é¾÷ÇѰŠÁö¿ì°í + // Delete the existing backup m_SelOutputObjBack.RemoveAll(); vOldPos.Zero(); - // ¼±ÅÃÇÑ °ÍµéÀ» ¹é¾÷Çϰí + // Back up the selected items CN3Transform * pDestObj = NULL; int iSize = m_SelOutputObjArray.GetSize(); for (int j = 0; j < iSize; ++j) { @@ -2765,7 +2787,7 @@ void CMapMng::SetEditState(ENUM_EDIT_STATE eEditStat) { return; } - // ÂïÀ» »õ·Î¿îÀ§Ä¡¸¦ ÀÔ·Â + // Enter a new location to take the picture ASSERT(m_pTerrain); CPoint point = ((CN3MEView *)m_pMainFrm->GetActiveView())->m_CurrMousePos; m_pTerrain->Pick(point.x, point.y, &vNewPos); @@ -2774,35 +2796,35 @@ void CMapMng::SetEditState(ENUM_EDIT_STATE eEditStat) { return; } - vNewPos -= vOldPos; // »õ·Î À̻簥 ¹éÅ͸¦ ±¸ÇÔ + vNewPos -= vOldPos; // Looking for a new space to move to - if (m_pDummy) // ´õ¹ÌÀÇ »õ·Î¿î ÁÂÇ¥ ÀÔ·Â + if (m_pDummy) // Input new coordinates of the dummy { m_pDummy->PosSet(m_pDummy->Pos() + vNewPos); } - m_SelOutputObjArray.RemoveAll(); // ±âÁ¸ ¼±ÅÃµÈ Á¤º¸¸¦ Áö¿ì°í + m_SelOutputObjArray.RemoveAll(); // Delete the existing selected information for (int j = 0; j < iSize; ++j) { - pDestObj = m_SelOutputObjBack.GetAt(j); // ¹é¾÷µÈ µ¥ÀÌÅ͸¦ ã´Â´Ù + pDestObj = m_SelOutputObjBack.GetAt(j); // Find backed up data if (pDestObj == NULL) { continue; } - pNewObj = AddObjectToOutputScene(pDestObj); // ÁÖ¼ÒÀÇ Á¤º¸·Î¸¸ »õ·Î¿î µ¥ÀÌÅ͸¦ ¸¸µç´Ù + pNewObj = AddObjectToOutputScene(pDestObj); // Create new data only with address information if (pNewObj == NULL) { continue; } - m_SelOutputObjArray.InsertAt(0, pNewObj); // ±âÁ¸ Á¤º¸¿¡ »õ·Î ÀÔ·ÂÇÑ´Ù + m_SelOutputObjArray.InsertAt(0, pNewObj); // Input new information into existing information - pNewObj->ScaleSet(pDestObj->Scale()); // Å©±â ÀÔ·Â - pNewObj->RotSet(pDestObj->Rot()); // ȸÀü°¢ ÀÔ·Â + pNewObj->ScaleSet(pDestObj->Scale()); // Enter size + pNewObj->RotSet(pDestObj->Rot()); // input rotation angle vObjPos = pDestObj->Pos() + vNewPos; vObjPos.y = m_pTerrain->GetHeight(vObjPos.x, vObjPos.z); - pNewObj->PosSet(vObjPos); // »õ·Î¿î À§Ä¡Á¡ ÀÔ·Â + pNewObj->PosSet(vObjPos); // Input new location point } - OnSelChanged(); // µ¥ÀÌÅÍÀÔ·Âµî »õ·Î¿îµ¥ÀÌÅÍ·Î °»½Å + OnSelChanged(); // Update with new data such as data input } } break; } diff --git a/src/tool/N3ME/MapMng.h b/src/tool/N3ME/MapMng.h index bcc23deb..e3d2aeb3 100644 --- a/src/tool/N3ME/MapMng.h +++ b/src/tool/N3ME/MapMng.h @@ -81,16 +81,16 @@ class CMapMng : public CN3Base { CN3Scene * GetSceneOutput() { return m_pSceneOutput; } D3DSHADEMODE m_ShadeMode; D3DFILLMODE m_FillMode; - bool m_bViewWireFrame; // ¼±ÅÃµÈ ¿ÀºêÁ§Æ®¸¦ ¿ÍÀ̾î ÇÁ·¹ÀÓÀ¸·Î º¸°Ô ÇÑ´Ù.. - bool m_bRenderAxisAndGrid; // Ãà°ú ±×¸®µå¸¦ ±×¸±Áö ¾È±×¸±Áö °áÁ¤.. + bool m_bViewWireFrame; // View the selected object as a wireframe. + bool m_bRenderAxisAndGrid; // Decide whether to draw the axis and grid or not. - int m_iZoneID; // Á¸ ¾ÆÀ̵ð... + int m_iZoneID; bool m_bHideObj; - bool m_bLoadingComplete; // ÀÌ°Ô ÂüÀ̾î¾ß¸¸ ·»´õ¸µÀ» ÇÑ´Ù.. + bool m_bLoadingComplete; // Only render if this is true. - CMainFrame * m_pMainFrm; // Main À©µµ¿ì + CMainFrame * m_pMainFrm; // Main window CSowSeedMng m_SowSeedMng; - CDlgShapeList * m_pDlgSourceList; // Object ¸ñ·ÏÀ» º¸¿©ÁÙ ´ÙÀÌ¾Ë·Î±× + CDlgShapeList * m_pDlgSourceList; // Dialog to show the object list CN3Transform * GetSelSourceObj() { return m_pSelSourceObj; } protected: @@ -105,39 +105,41 @@ class CMapMng : public CN3Base { CSoundMgr * m_pSoundMgr; CWarpMgr * m_pWarpMgr; CRegenUser * m_pRegenUser; - CEventMgr * m_pEventMgr; //Á¸ À̺¥Æ® °ü¸®... - CWallMgr * m_pWall; //Á¸ ¿Ü°¢ °¡Áö ¸øÇÏ´Â º®°ü¸®.. - CNPCPathMgr * m_pNPCPath; // NPC ±æ ¸¸µå´Â Ŭ·¡½º.. - CLyTerrain * m_pTerrain; // ÁöÇü - CN3Scene * m_pSceneSource; // source object ¸ñ·Ï¿¡ º¸¿©ÁÙ °ÍµéÀ» ´ãÀº Scene - CN3Scene * m_pSceneOutput; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object¸¦ Æ÷ÇÔÇÑ Scene - - //CDlgSceneGraph* m_pDlgSourceList; // Object ¸ñ·ÏÀ» º¸¿©ÁÙ ´ÙÀÌ¾Ë·Î±× - //CDlgSceneGraph* m_pDlgOutputList; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object¸¦ º¸¿©ÁÙ ´ÙÀÌ¾Ë·Î±× - CDlgShapeList * m_pDlgOutputList; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object¸¦ º¸¿©ÁÙ ´ÙÀÌ¾Ë·Î±× - CDlgBase * m_pDlgBase; // °´Ã¼ µî·ÏÁ¤º¸ ÆíÁý ´ëÈ­»óÀÚ.. - CBrushDlg * m_pBrushDlg; // ÁöÇü ÆíÁý ºê·¯½¬ ¿É¼ÇÁöÁ¤ÇØÁÖ´Â ´ëÈ­»óÀÚ - - CN3Transform * m_pSelSourceObj; // source object ¸ñ·Ï¿¡¼­ ¼±ÅÃÇÑ °Í - // CTypedPtrArray m_SelOutputObjArray; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object Áß ¼±ÅÃÇÑ °Íµé - CTypedPtrArray m_SelOutputObjArray; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object Áß ¼±ÅÃÇÑ °Íµé - - ENUM_EDIT_STATE m_eSelObjBackState; // Àӽú¹»ç(ctrl+c)ÀÇ »óÅÂÇ¥½Ã - CTypedPtrArray m_SelOutputObjBack; // ¸Ê¿¡ ¹èÄ¡ÇÑ Object Áß ¼±ÅÃÇÑ °Íµé °¡Áö°í ÀÖÀ½ - - int m_CursorMode; // ¸¶¿ì½ºÀÇ ±â´É ¸ðµå ±¸ºÐ - BOOL m_bRenderSelObj; // source object ¸ñ·Ï¿¡¼­ ¼±ÅÃµÈ °ÍÀ» ±×¸±Áö ¾È±×¸±Áö °áÁ¤ - - CTransDummy * m_pDummy; // ¹°Ã¼¸¦ À̵¿ ȸÀü È®´ë/Ãà¼Ò ÇÏ´Â ±â´ÉÀ» ´ã´çÇϴ Ŭ·¡½º - CPosDummy m_PosDummy; // À̵¿ - CRotDummy m_RotDummy; // ȸÀü - CScaleDummy m_ScaleDummy; // È®´ë/Ãà¼Ò - CRiverMng m_RiverMng; // °­¹° Á¤º¸°ü¸® - CPondMng m_PondMng; // ¿¬¸ø Á¤º¸°ü¸® - - RECT m_rcSelDrag; // µå·¡±× ¿µ¿ª - - struct __Sort // Object pickingÇÒ¶§ Á¤·ÄÇÏ´Â ±¸Á¶Ã¼ + CEventMgr * m_pEventMgr; //Zone event management... + CWallMgr * m_pWall; //Management of walls that do not allow access to the outside of the zone.. + CNPCPathMgr * m_pNPCPath; // NPC road making class.. + CLyTerrain * m_pTerrain; // terrain + CN3Scene * m_pSceneSource; // Scene containing things to show in the source object list + CN3Scene * m_pSceneOutput; // Scene containing objects placed on the map + + //CDlgSceneGraph* m_pDlgSourceList; // Dialog to show the object list + //CDlgSceneGraph* m_pDlgOutputList; // Dialog to show objects placed on the map + CDlgShapeList * m_pDlgOutputList; // Dialog to show objects placed on the map + CDlgBase * m_pDlgBase; // Object properties edit dialog box... + CBrushDlg * m_pBrushDlg; // Dialog box for specifying terrain editing brush options + + CN3Transform * m_pSelSourceObj; // selected from the source object list + // CTypedPtrArray m_SelOutputObjArray; // Selected objects among the objects placed on the map + CTypedPtrArray + m_SelOutputObjArray; // Selected objects among the objects placed on the map + + ENUM_EDIT_STATE m_eSelObjBackState; // Display status of temporary copy (ctrl+c) + CTypedPtrArray + m_SelOutputObjBack; // Contains selected objects among the objects placed on the map + + int m_CursorMode; // Classification of mouse function modes + BOOL m_bRenderSelObj; // Determines whether to draw or not draw the selected object from the source object list + + CTransDummy * m_pDummy; // Class responsible for moving, rotating, zooming in/out the object + CPosDummy m_PosDummy; // movement + CRotDummy m_RotDummy; // rotation + CScaleDummy m_ScaleDummy; // Zoom in zoom out + CRiverMng m_RiverMng; // River information management + CPondMng m_PondMng; // Pond information management + + RECT m_rcSelDrag; // drag area + + struct __Sort // Structure to sort when picking objects { CN3TransformCollision * pObj; float fCamDist; @@ -157,57 +159,62 @@ class CMapMng : public CN3Base { if (m_pTerrain) { m_pTerrain->m_iZoneID = id; } - } //ÁöÇü Á¸ ¾ÆÀ̵ð ¼ÂÆÃ. + } //Terrain zone ID setting. void ImportShape(const char * szFullPath); - void MakeTerrainMovableAttr(CN3ShapeMgr * pShapeMgr); //ÁöÇü¿¡¼­ °¥¼ö Àִ ŸÀϰú °¥ ¼ö ¾ø´Â ŸÀÏÀ» Á¤¸®Çضó.. - void ImportPostDataFromScene(const char * szFileName); // Scene ¿¡¼­ ¿ÀºêÁ§Æ® ¹èÄ¡µÈ°É ºÒ·¯¿Â´Ù.. + void MakeTerrainMovableAttr( + CN3ShapeMgr * + pShapeMgr); //Organize the tiles that can be accessed and those that cannot be accessed on the terrain. + void ImportPostDataFromScene(const char * szFileName); // Load the object placement in the scene. void UpDateFP(); void Tick(); void Render(); void Release(); void SavePartition(float x, float z, float width); - void SaveToFile(LPCTSTR lpszPathName); // Map ÆÄÀÏ ÀúÀå - void LoadFromFile(LPCTSTR lpszPathName); // Map ÆÄÀÏ ºÒ·¯¿À±â - BOOL MouseMsgFilter(LPMSG pMsg); // ¸¶¿ì½ºÀÇ ±â´É - void ImportTerrain(const char * szMeshFN); // VMesh ÆÄÀÏ¿¡¼­ ÁöÇü µ¥ÀÌÅÍ Àоî¿À±â - void ImportTerrainHeight(const char * szMeshFN); // VMesh ÆÄÀÏ¿¡¼­ ÁöÇüÀÇ ³ôÀ̰ª¸¸ Àоî¿À±â.. - void MakeGameFiles(LPCTSTR lpszPathName, float fSize = 128.0f); // °ÔÀÓ µ¥ÀÌÅÍ·Î º¯È¯Çϱâ + void SaveToFile(LPCTSTR lpszPathName); // Save Map file + void LoadFromFile(LPCTSTR lpszPathName); // Load Map file + BOOL MouseMsgFilter(LPMSG pMsg); // mouse functions + void ImportTerrain(const char * szMeshFN); // Read terrain data from VMesh file + void ImportTerrainHeight(const char * szMeshFN); // Read only the height value of the terrain from the VMesh file.. + void MakeGameFiles(LPCTSTR lpszPathName, float fSize = 128.0f); // Convert to game data void MakeServerDataFiles(LPCTSTR lpszPathName); - void SelectObject(CN3Base * pObj, BOOL IsSourceObj, BOOL bAdd = FALSE); // °´Ã¼¸¦ ¼±ÅÃÇÑ´Ù. - void RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd); // ƯÁ¤ À©µµ¿ì¿¡ Object¸¦ ±×·ÁÁØ´Ù. - void SetCursorMode(int iMode); // ¸¶¿ì½ºÄ¿¼­ÀÇ ÀÌ¿ë¹æ¹ýÀ» ¹Ù²Û´Ù. - int GetCursorMode() const { return m_CursorMode; } // ¸¶¿ì½º Ä¿¼­ÀÇ ÀÌ¿ë¹æ¹ýÀ» ¾ò´Â´Ù. - void Invalidate(); // View È­¸é °»½Å - void FocusSelObj(); // ¼±ÅÃµÈ °´Ã¼·Î Æ÷Åͽº¸¦ ¿Å±ä´Ù. - void FocusAll(); // Àüü ¸ÊÀ» º¼¼ö ÀÖµµ·Ï ÇÑ´Ù. - void FocusAt(__Vector3 v); // ÁöÁ¤µÈ Á¡À¸·Î Æ÷Ä¿½º ¿Å°Ü. - void DropSelObjToTerrain(); // ¼±ÅÃÇÑ °´Ã¼¸¦ ÁöÇü¿¡ ºÙÀδÙ.(Y°ª¸¸ Á¶Á¤) - void DeleteSelObjectFromOutputScene(); // OutputScene¿¡¼­ ¼±ÅÃÇÑ °´Ã¼¸¦ Áö¿î´Ù. - void RenderDragRect(RECT * rc); // µå·¡±× ¿µ¿ªÀ» ±×¸°´Ù. - void UpdateAll(); // source ¿Í output dialog¸¦ update½ÃŲ´Ù. - - void LoadObjectPostData(LPCTSTR lpszFileName); // Shape ¹èÄ¡Á¤º¸¸¦ textÆÄÀÏ¿¡¼­ Àоî¿Â´Ù. - void SaveObjectPostData(LPCTSTR lpszFileName); // Shape ¹èÄ¡Á¤º¸¸¦ textÆÄÀÏ·Î ÀúÀåÇÑ´Ù. + void SelectObject(CN3Base * pObj, BOOL IsSourceObj, BOOL bAdd = FALSE); // Select an object. + void RenderObjectToWindow(CN3TransformCollision * pObj, HWND hWnd); // Draws an object in a specific window. + void SetCursorMode(int iMode); // Change the way the mouse cursor is used. + int GetCursorMode() const { return m_CursorMode; } // Get information on how to use the mouse cursor. + void Invalidate(); // View screen update + void FocusSelObj(); // Move the porter to the selected object. + void FocusAll(); // Make the entire map visible. + void FocusAt(__Vector3 v); // Move focus to the specified point. + void DropSelObjToTerrain(); // Attach the selected object to the terrain. (Adjust Y value only) + void DeleteSelObjectFromOutputScene(); // Delete the selected object from the OutputScene. + void RenderDragRect(RECT * rc); // Draw the drag area. + void UpdateAll(); // Update source and output dialog. + + void LoadObjectPostData(LPCTSTR lpszFileName); // Read shape placement information from text file. + void SaveObjectPostData(LPCTSTR lpszFileName); // Save shape placement information as a text file. void SaveObjectPostDataPartition(LPCTSTR lpszFileName, float psx, float psz, float width); - void RenderGrid(float fGridSize, float fMaxDistance); // ¸Ê¿¡ ÀÏÁ¤°£°ÝÀ¸·ÎGrid¸¦ ±×·ÁÁØ´Ù - void OnSelChanged(); // ¼±ÅÃÇÑ °´Ã¼°¡ ¹Ù²î¾úÀ»¶§ ÇØÁٰ͵é - void SelectObjectByDragRect(RECT * pRect, BOOL bAdd); // µå·¡±× ÇØ¼­ °´Ã¼ ¼±ÅÃÇϱâ - void LoadSourceObjects(); // Folder ¿¡¼­ Source Object ¸¦ Àоî¿Â´Ù. + void RenderGrid(float fGridSize, float fMaxDistance); // Draws a grid at regular intervals on the map + void OnSelChanged(); // Things to do when the selected object changes + void SelectObjectByDragRect(RECT * pRect, BOOL bAdd); // Select object by dragging + void LoadSourceObjects(); // Read Source Object from Folder. CN3Transform * AddChr(CN3Scene * pDestScene, const std::string & szFN, - BOOL bGenerateChainNumber); // ƯÁ¤Scene¿¡ ij¸¯ÅÍ °´Ã¼¸¦ º¹»çÇØ Ãß°¡ + BOOL bGenerateChainNumber); // Copy and add the character object to a specific scene CN3Transform * AddShape(CN3Scene * pDestScene, const std::string & szFN, - BOOL bGenerateChainNumber); // ƯÁ¤Scene¿¡ Shape °´Ã¼¸¦ º¹»çÇØ Ãß°¡ + BOOL bGenerateChainNumber); // Copy and add the Shape object to a specific scene CN3Transform * AddObjectToOutputScene( - CN3Transform * pObj); // ¼Ò½º¸ñ·Ï¿¡¼­ ¼±ÅÃÇÑ Object¸¦ ³ÖÀ¸¸é OutputSceneÀ¸·Î º¹»çÇØ¼­ ³Ö¾îÁØ´Ù. + CN3Transform * + pObj); // If you insert the object selected from the source list, it is copied and inserted into the OutputScene. CN3Camera * CameraGet(); - CN3Base * Pick(POINT point, int * pnPart); // °´Ã¼ picking ÇÔ¼ö - static int SortByCameraDistance(const void * pArg1, const void * pArg2); // Ä«¸Þ¶ó °Å¸®¿¡ µû¸¥ Á¤·ÄÇÔ¼ö qsort¿¡ ÀÌ¿ë + CN3Base * Pick(POINT point, int * pnPart); // object picking function + static int SortByCameraDistance(const void * pArg1, + const void * pArg2); // Used for sorting function qsort according to camera distance - // BOOL CameraMove(LPMSG pMsg); // Ä«¸Þ¶ó À̵¿¿¡ °üÇÑ ¸Þ¼¼Áö ó¸® - BOOL GetObjectMinMax(CN3Transform * pObj, __Vector3 & vMin, __Vector3 & vMax); // °´Ã¼ÀÇ ÃÖ´ëÃÖ¼ÒÁ¡ ã±â + // BOOL CameraMove(LPMSG pMsg); // Process messages about camera movement + BOOL GetObjectMinMax(CN3Transform * pObj, __Vector3 & vMin, + __Vector3 & vMax); // Find the maximum and minimum points of the object CStatusBar * GetStatusBar(); - void SetEditState(ENUM_EDIT_STATE eEditStat); // µå·Î¿ìÇØ¼­ ¼±ÅÃÇÑ ¿ÀºêÁ§Æ®¸¦ edit + void SetEditState(ENUM_EDIT_STATE eEditStat); // Draw and edit the selected object }; diff --git a/src/tool/N3ME/N3ME.cpp b/src/tool/N3ME/N3ME.cpp index 881435a6..1eb7c3dc 100644 --- a/src/tool/N3ME/N3ME.cpp +++ b/src/tool/N3ME/N3ME.cpp @@ -107,6 +107,8 @@ class CAboutDlg : public CDialog { // No message handlers //}}AFX_MSG DECLARE_MESSAGE_MAP() + public: + afx_msg void OnBnClickedOk(); }; CAboutDlg::CAboutDlg() @@ -125,6 +127,7 @@ BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP +ON_BN_CLICKED(IDOK, &CAboutDlg::OnBnClickedOk) END_MESSAGE_MAP() // App command to run the dialog @@ -135,3 +138,8 @@ void CN3MEApp::OnAppAbout() { ///////////////////////////////////////////////////////////////////////////// // CN3MEApp message handlers + +void CAboutDlg::OnBnClickedOk() { + // TODO: Add your control notification handler code here + CDialog::OnOK(); +} diff --git a/src/tool/N3ME/N3ME.rc b/src/tool/N3ME/N3ME.rc index 55941474..0f3b0606 100644 --- a/src/tool/N3ME/N3ME.rc +++ b/src/tool/N3ME/N3ME.rc @@ -1,4 +1,4 @@ -//Microsoft Developer Studio generated resource script. +// Microsoft Visual C++ generated resource script. // #include "resource.h" @@ -13,13 +13,11 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Korean resources +// Korean (Korea) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) -#ifdef _WIN32 LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT #pragma code_page(949) -#endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -27,18 +25,18 @@ LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT // TEXTINCLUDE // -1 TEXTINCLUDE DISCARDABLE +1 TEXTINCLUDE BEGIN "resource.h\0" END -2 TEXTINCLUDE DISCARDABLE +2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END -3 TEXTINCLUDE DISCARDABLE +3 TEXTINCLUDE BEGIN "#define _AFX_NO_SPLITTER_RESOURCES\r\n" "#define _AFX_NO_OLE_RESOURCES\r\n" @@ -66,23 +64,27 @@ END // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -IDR_MAINFRAME ICON DISCARDABLE "res\\N3ME.ico" -IDR_N3METYPE ICON DISCARDABLE "res\\N3MEDoc.ico" +IDR_MAINFRAME ICON "res\\N3ME.ico" + +IDR_N3METYPE ICON "res\\N3MEDoc.ico" + ///////////////////////////////////////////////////////////////////////////// // // Bitmap // -IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp" -IDB_SCENE_NODES BITMAP DISCARDABLE "res\\SceneNodes.bmp" +IDR_MAINFRAME BITMAP "res\\Toolbar.bmp" + +IDB_SCENE_NODES BITMAP "res\\SceneNodes.bmp" + ///////////////////////////////////////////////////////////////////////////// // // Toolbar // -IDR_MAINFRAME TOOLBAR DISCARDABLE 32, 32 +IDR_MAINFRAME TOOLBAR 32, 32 BEGIN BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN @@ -107,120 +109,111 @@ END // Menu // -IDR_MAINFRAME MENU PRELOAD DISCARDABLE +IDR_MAINFRAME MENU BEGIN - POPUP "ÆÄÀÏ(&F)" + POPUP "File(&F)" BEGIN - MENUITEM "Resource °æ·Î ÁöÁ¤(&R)...\tCtrl+R", ID_RESOURCE_PATH_SET - MENUITEM "»õ ÆÄÀÏ(&N)\tCtrl+N", ID_FILE_NEW - MENUITEM "¿­±â(&O)...\tCtrl+O", ID_FILE_OPEN - MENUITEM "ÀúÀå(&S)\tCtrl+S", ID_FILE_SAVE - MENUITEM "´Ù¸¥ À̸§À¸·Î ÀúÀå(&A)...", ID_FILE_SAVE_AS - MENUITEM "Àß¶ó¼­ ÀúÀå", ID_FILE_SAVE_DIVIDE + MENUITEM "Specify Resource Path(&R)...\tCtrl+R", ID_RESOURCE_PATH_SET + MENUITEM "New file(&N)\tCtrl+N", ID_FILE_NEW + MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN + MENUITEM "Save(&S)\tCtrl+S", ID_FILE_SAVE + MENUITEM "Save As(&A)...", ID_FILE_SAVE_AS + MENUITEM "Save as cut", ID_FILE_SAVE_DIVIDE MENUITEM SEPARATOR - MENUITEM "VMesh¿¡¼­ ³ôÀ̰ªºÎ¸£±â", ID_FILE_IMPORT_HEIGHT - MENUITEM "ÁöÇü VMesh Import(&I)", ID_FILE_IMPORT + MENUITEM "Call height value from VMesh", ID_FILE_IMPORT_HEIGHT + MENUITEM "Terrain VMesh Import(&I)", ID_FILE_IMPORT MENUITEM "Export HeightBMP", ID_FILE_EXPORT_HEIGHT_BMP MENUITEM "Import HegihtBMP", ID_FILE_IMPORT_HEIGHT_BMP MENUITEM SEPARATOR - MENUITEM "Shape ºÒ·¯¿À±â", ID_FILE_IMPORT_SHAPES - MENUITEM "°ÔÀÓ ÆÄÀÏ·Î ÀúÀåÇϱâ(&E)...", ID_FILE_EXPORT - MENUITEM "¼­¹ö µ¥ÀÌŸ ÀúÀåÇϱâ(&V)...", ID_FILE_SERVER_DATA - MENUITEM "Ä÷¯¸Ê ºÒ·¯¿À±â(&C)", ID_FILE_COLORMAP_LOAD - MENUITEM "Ä÷¯¸Ê ÀúÀåÇϱâ", ID_FILE_COLORMAP_SAVE - MENUITEM "°ÔÀÓ¿ë ŸÀÏ ÅØ½ºÃÄ µ¥ÀÌŸ·Î ÀúÀå", - ID_FILE_GAMETILETEX_SAVE + MENUITEM "Load Shape", ID_FILE_IMPORT_SHAPES + MENUITEM "Save as game file(&E)...", ID_FILE_EXPORT + MENUITEM "Save server data(&V)...", ID_FILE_SERVER_DATA + MENUITEM "Load color map(&C)", ID_FILE_COLORMAP_LOAD + MENUITEM "Save color map", ID_FILE_COLORMAP_SAVE + MENUITEM "Save as game tile texture data", ID_FILE_GAMETILETEX_SAVE MENUITEM SEPARATOR - MENUITEM "*.N3Scene À¸·Î ºÎÅÍ ¿ÀºêÁ§Æ® ¹èÄ¡ µ¥ÀÌÅÍ ºÎ¸£±â", - ID_FILE_IMPORT_POST_DATA_FROM_SCENE - + MENUITEM "Load object placement data from *.N3Scene", ID_FILE_IMPORT_POST_DATA_FROM_SCENE MENUITEM SEPARATOR - MENUITEM "ÃÖ±Ù ÆÄÀÏ", ID_FILE_MRU_FILE1, GRAYED + MENUITEM "Recent files", ID_FILE_MRU_FILE1, GRAYED MENUITEM SEPARATOR - MENUITEM "Á¾·á(&X)", ID_APP_EXIT + MENUITEM "Exit(&X)", ID_APP_EXIT END - POPUP "ÆíÁý(&E)" + POPUP "Edit(&E)" BEGIN - MENUITEM "Ãë¼Ò(&U)\tCtrl+Z", ID_EDIT_UNDO + MENUITEM "Undo(&U)\tCtrl+Z", ID_EDIT_UNDO MENUITEM SEPARATOR - MENUITEM "Àß¶ó³»±â(&T)\tCtrl+X", ID_EDIT_CUT - MENUITEM "º¹»ç(&C)\tCtrl+C", ID_EDIT_COPY - MENUITEM "ºÙ¿©³Ö±â(&P)\tCtrl+V", ID_EDIT_PASTE + MENUITEM "Cut(&T)\tCtrl+X", ID_EDIT_CUT + MENUITEM "Copy(&C)\tCtrl+C", ID_EDIT_COPY + MENUITEM "Paste(&P)\tCtrl+V", ID_EDIT_PASTE MENUITEM SEPARATOR - MENUITEM "µî·ÏÁ¤º¸ (R)", ID_EDIT_PROPERTY - MENUITEM "Detail TextureÆíÁý", ID_EDIT_DTEX + MENUITEM "Registration information (R)", ID_EDIT_PROPERTY + MENUITEM "Detail Texture Edit", ID_EDIT_DTEX END - POPUP "º¸±â(&V)" + POPUP "View(&V)" BEGIN - MENUITEM "µµ±¸ ¸ðÀ½(&T)", ID_VIEW_TOOLBAR - MENUITEM "»óÅ ǥ½ÃÁÙ(&S)", ID_VIEW_STATUS_BAR + MENUITEM "Toolbar(&T)", ID_VIEW_TOOLBAR + MENUITEM "Status bar(&S)", ID_VIEW_STATUS_BAR MENUITEM "Source Object List(&C)", ID_VIEW_SOURCEOBJECT MENUITEM "Output Object List(&O)", ID_VIEW_OUTPUTOBJECT MENUITEM "Detail Texture List(&D)", ID_VIEW_DTEX MENUITEM SEPARATOR MENUITEM "WIREFRAME MODE(&W)", ID_VIEW_WIREFRAME MENUITEM "SOLID MODE(&L)", ID_VIEW_SOLID - MENUITEM "¼±ÅÃµÈ Object Wire Frame À¸·Î º¸±â", - ID_VIEW_SELECTED_OBJECT_WIREFRAME - , CHECKED - MENUITEM "Ãà°ú Grid º¸±â", ID_VIEW_AXIS_AND_GRID - MENUITEM "¿ÀºêÁ§Æ® ¼û±â±â\tH", ID_VIEW_HIDE_OBJ - MENUITEM "¿ø±Ù°¨ ¾øÀÌ º¸±â", ID_VIEW_ORTH - MENUITEM "¾È°³ Äѱâ / ²ô±â", ID_VIEW_TOGGLE_FOG + MENUITEM "View Selected Object as Wire Frame", ID_VIEW_SELECTED_OBJECT_WIREFRAME, CHECKED + MENUITEM "View Axes and Grid", ID_VIEW_AXIS_AND_GRID + MENUITEM "Hide Objects\tH", ID_VIEW_HIDE_OBJ + MENUITEM "View without perspective", ID_VIEW_ORTH + MENUITEM "Toggle Fog On/Off", ID_VIEW_TOGGLE_FOG END - POPUP "Ä¿¼­(&C)" + POPUP "Cursor(&C)" BEGIN - MENUITEM "¼±ÅÃ\tQ", ID_CURSOR_SELECT - MENUITEM "°´Ã¼ À§Ä¡Á¶Á¤\tW", ID_CURSOR_POS - MENUITEM "°´Ã¼ ȸÀü\tE", ID_CURSOR_ROTATE - MENUITEM "°´Ã¼ Ãà¼Ò/È®´ë\tR", ID_CURSOR_SCALE + MENUITEM "Select\tQ", ID_CURSOR_SELECT + MENUITEM "Adjust Object Position\tW", ID_CURSOR_POS + MENUITEM "Rotate Object\tE", ID_CURSOR_ROTATE + MENUITEM "Scale Object\tR", ID_CURSOR_SCALE MENUITEM "Object Brush\tT", ID_CURSOR_OBJ_BRUSH - MENUITEM "ÁöÇüÆíÁý", ID_CURSOR_EDIT_TERRAIN + MENUITEM "Terrain edit", ID_CURSOR_EDIT_TERRAIN MENUITEM "Smooth", ID_CURSOR_SMOOTH_TERRAIN - MENUITEM "µðÅ×ÀÏÅØ½ºÃÄ\tD", ID_CURSOR_DTEX - MENUITEM "°­¹° ÆíÁý", ID_CURSOR_EDIT_RIVER - MENUITEM "¿¬¸ø ÆíÁý", ID_CURSOR_EDIT_POND - MENUITEM "¶óÀÌÆ®¸Ê ±×¸®±â", ID_CURSOR_EDIT_LIGHTMAP - MENUITEM "NPC Path ¸¸µé±â", ID_CURSOR_MAKE_NPCPATH - MENUITEM "º® ¸¸µé±â", ID_CURSOR_MAKE_WALL - MENUITEM "À̺¥Æ® ÆíÁý", ID_CURSOR_EDIT_EVENT - MENUITEM "Æò¸é¸¸µé±â", ID_CURSOR_FLAT_TERRAIN - MENUITEM "À¯Àú¸®Á¨¿µ¿ª", ID_CURSOR_REGEN_USER - MENUITEM "ȯ°æ¼Ò¸®È¿°ú³Ö±â", ID_CURSOR_SOUND - MENUITEM "¶óÀÌÆ®¹èÄ¡", ID_CURSOR_LIGHTOBJ + MENUITEM "Detail texture\tD", ID_CURSOR_DTEX + MENUITEM "River edit", ID_CURSOR_EDIT_RIVER + MENUITEM "Pond edit", ID_CURSOR_EDIT_POND + MENUITEM "Draw lightmap", ID_CURSOR_EDIT_LIGHTMAP + MENUITEM "Create NPC Path", ID_CURSOR_MAKE_NPCPATH + MENUITEM "Create walls", ID_CURSOR_MAKE_WALL + MENUITEM "Edit event", ID_CURSOR_EDIT_EVENT + MENUITEM "Create a plane", ID_CURSOR_FLAT_TERRAIN + MENUITEM "User regen area", ID_CURSOR_REGEN_USER + MENUITEM "Add environmental sound effects", ID_CURSOR_SOUND + MENUITEM "Light placement", ID_CURSOR_LIGHTOBJ END - POPUP "±âŸ±â´É(&T)" + POPUP "Other features(&T)" BEGIN - MENUITEM "¼±Åð´Ã¼ Æ÷Ä¿½º\tF", ID_TIP_FOCUS_SELOBJ - MENUITEM "Àüü¸Ê Æ÷Ä¿½º\tA", ID_TIP_FOCUS_ALL + MENUITEM "Focus selected object\tF", ID_TIP_FOCUS_SELOBJ + MENUITEM "Entire map focus\tA", ID_TIP_FOCUS_ALL MENUITEM SEPARATOR - MENUITEM "ÁöÇü¿¡ °´Ã¼ºÙÀ̱â", ID_TIP_DROP - MENUITEM "¼±ÅÃÇѰ´Ã¼ Áö¿ì±â\tDel", ID_TIP_DELETE_OBJ + MENUITEM "Attach objects to terrain", ID_TIP_DROP + MENUITEM "Delete selected object\tDel", ID_TIP_DELETE_OBJ MENUITEM SEPARATOR - MENUITEM "Ä÷¯¸Ê ¸¸µé±â \tC", ID_TIP_GENERATE_COLORMAP - MENUITEM "Àüü Ä÷¯¸Ê ¸¸µé±â\tX", ID_TIP_GENERATE_COLORMAP_ALL - MENUITEM "ÇöÀçŸÀÏ·Î Àüü Ä¥Çϱâ \tV", ID_TIP_TILING_ALL + MENUITEM "Create a colormap \tC", ID_TIP_GENERATE_COLORMAP + MENUITEM "Create a full colormap\tX", ID_TIP_GENERATE_COLORMAP_ALL + MENUITEM "Fill entire with current tile \tV", ID_TIP_TILING_ALL MENUITEM SEPARATOR - MENUITEM "±âº»ÀçÁú·Î ¸¸µé±â\t(&D)", ID_TIP_DEFAULT_MATERIAL - MENUITEM "Alpha Blending Flag Á¦°Å\t(&R)", ID_TIP_REMOVE_ALPHAFLAG + MENUITEM "Make default material\t(&D)", ID_TIP_DEFAULT_MATERIAL + MENUITEM "Remove Alpha Blending Flag\t(&R)", ID_TIP_REMOVE_ALPHAFLAG MENUITEM SEPARATOR - MENUITEM "¾¾¾Ñ »Ñ¸®±â", ID_TIP_SOW_SEED - MENUITEM "¾È¾²´Â ÆÄÀÏ ¸®½ºÆ® ¸¸µé±â", ID_TIP_DELETE_UNUSED_FILES - MENUITEM "À§Ä¡°¡ °ãÄ£ ¿ÀºêÁ§Æ® Á¦°ÅÇϱâ", - ID_TIP_DELETE_OVERLAPPED_OBJECTS - - MENUITEM "¼±ÅÃÇÑ ¼Ò½º ¿ÀºêÁ§Æ® ¸ðµÎ Áö¿ì±â", - ID_TIP_DELETE_SELECTED_SOURCE_OBJECTS - + MENUITEM "Sow seeds", ID_TIP_SOW_SEED + MENUITEM "Delete unused files", ID_TIP_DELETE_UNUSED_FILES + MENUITEM "Removing objects with overlapping positions", ID_TIP_DELETE_OVERLAPPED_OBJECTS + MENUITEM "Clear all selected source objects", ID_TIP_DELETE_SELECTED_SOURCE_OBJECTS MENUITEM SEPARATOR - MENUITEM "Warp Info ÀÔ·Â", ID_TIP_SET_WARP_INFO - MENUITEM "Àüü ³ôÀÌ ½ºÄÉÀÏ ¸ÂÃß±â", ID_TIP_SET_HEIGHT_SCALE + MENUITEM "Set warp info", ID_TIP_SET_WARP_INFO + MENUITEM "Set height scale", ID_TIP_SET_HEIGHT_SCALE MENUITEM SEPARATOR - MENUITEM "Àüü¸Êº¸±â && ºÎºÐ ¸Ê¼öÁ¤", ID_SELECT_MAP_EDIT + MENUITEM "View entire map && Edit partial map", ID_SELECT_MAP_EDIT END - POPUP "µµ¿ò¸»(&H)" + POPUP "Help(&H)" BEGIN - MENUITEM "N3ME Á¤º¸(&A)...", ID_APP_ABOUT + MENUITEM "N3ME About(&A)...", ID_APP_ABOUT END END @@ -230,7 +223,7 @@ END // Accelerator // -IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE +IDR_MAINFRAME ACCELERATORS BEGIN "A", ID_TIP_FOCUS_ALL, VIRTKEY, NOINVERT "C", ID_TIP_GENERATE_COLORMAP, VIRTKEY, NOINVERT @@ -267,649 +260,900 @@ END // Dialog // -IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 339, 55 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "N3ME Á¤º¸" -FONT 9, "±¼¸²" +IDD_MAKE_NPCPATH DIALOG 0, 0, 153, 573 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Make NPC Path " +FONT 9, "µ¸¿ò" BEGIN - ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 - LTEXT "Noah System Map Editor ¹öÀü 3",IDC_STATIC,40,10,146,8, - SS_NOPREFIX - LTEXT "Copyleft (C) 2002",IDC_STATIC,40,25,119,8 - DEFPUSHBUTTON "È®ÀÎ",IDOK,282,7,50,14,WS_GROUP + CONTROL "Create a starting area",IDC_RDO_START_RGN,"Button",BS_AUTORADIOBUTTON | WS_GROUP,11,252,60,10 + CONTROL "Create a road",IDC_RDO_MAKE_PATH,"Button",BS_AUTORADIOBUTTON,11,264,43,10 + CONTROL "Create activity area",IDC_RDO_MAKE_ACT_RGN,"Button",BS_AUTORADIOBUTTON,11,277,64,10 + COMBOBOX IDC_COMBO_NPC,4,112,145,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "NPC type:",IDC_STATIC,5,99,36,8 + EDITTEXT IDC_EDIT_NUM_NPC,35,131,31,14,ES_AUTOHSCROLL + LTEXT "Number of animals",IDC_STATIC,70,135,15,8 + PUSHBUTTON "¡å",IDC_BTN_RECORD,2,337,72,14 + LTEXT "* Deployed NPCs",IDC_STATIC,6,357,51,8 + LISTBOX IDC_LIST_NPCPATH,3,369,147,180,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Load",IDC_BTN_LOAD_PATHSET,4,39,31,14 + PUSHBUTTON "Save",IDC_BTN_SAVE_PATHSET,37,39,32,14 + LTEXT "* Current file name",IDC_STATIC,3,12,50,8 + LTEXT "/npclist/pathset.txt",IDC_PATHSETNAME,4,24,117,8 + GROUPBOX "* File Management *",IDC_STATIC,0,1,153,58 + LTEXT "regen time :",IDC_STATIC,5,149,39,8 + EDITTEXT IDC_EDIT_REGENTIME,46,147,31,14,ES_AUTOHSCROLL + LTEXT "sec.",IDC_STATIC,79,149,15,8 + LTEXT "Behavior type:",IDC_STATIC,5,167,33,8 + COMBOBOX IDC_COMBO_ACTIONTYPE,40,162,73,95,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "How many ?",IDC_STATIC,6,133,27,8 + PUSHBUTTON "Server data storage",IDC_BTN_SAVE_SERVER_PATHSET,71,39,50,14 + PUSHBUTTON "¡ã",IDC_BTN_PATH_MODIFY,78,337,72,14 + PUSHBUTTON "Del",IDC_BTN_PATH_DELETE,59,354,27,13 + GROUPBOX "",IDC_STATIC,3,243,147,48 + EDITTEXT IDC_EDT_NPCPATHNAME,4,319,146,14,ES_AUTOHSCROLL + LTEXT "* NPC path name",IDC_STATIC,6,307,44,8 + LTEXT "* Number of dots that can be captured :",IDC_STATIC,6,294,75,8 + LTEXT "32",IDC_NUM_POINT,83,294,8,8 + GROUPBOX "Do you want to see the area you can’t go to?",IDC_STATIC,0,63,153,31 + CONTROL "uh. I want to see it.^^",IDC_RDO_VIEW_NONMOVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,77,50,10 + CONTROL "I don't want to watch it.",IDC_RDO_VIEW_NONE,"Button",BS_AUTORADIOBUTTON,56,77,64,10 + PUSHBUTTON "Add color",IDC_BTN_SETCOLOR,119,302,33,14 + PUSHBUTTON "Read NPC type",IDC_BTN_LOAD_NPCLIST,89,97,61,14 + EDITTEXT IDC_EDT_TRANS_X,12,554,27,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_TRANS_Z,54,554,27,14,ES_AUTOHSCROLL + PUSHBUTTON "Move the entire location",IDC_BTN_TRANS,85,554,65,15 + LTEXT "x",IDC_STATIC,4,554,8,8 + LTEXT "z",IDC_STATIC,46,554,8,8 + LTEXT "Group attributes:",IDC_STATIC,2,183,31,8 + COMBOBOX IDC_COMBO_NPC_ATTR_GROUP,33,181,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + LTEXT "Regen attribute:",IDC_STATIC,2,198,31,8 + COMBOBOX IDC_COMBO_NPC_ATTR_REGEN,33,196,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + LTEXT "Create attribute:",IDC_STATIC,2,213,31,8 + COMBOBOX IDC_COMBO_NPC_ATTR_CREATE,33,211,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "load",IDC_BTN_LOAD_GROUP,132,179,20,14 + PUSHBUTTON "load",IDC_BTN_LOAD_REGEN,132,195,20,14 + PUSHBUTTON "load",IDC_BTN_LOAD_CREATE,132,211,20,14 + LTEXT "Other options:",IDC_STATIC,2,228,31,8 + COMBOBOX IDC_COMBO_NPC_OPTION,33,225,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "load",IDC_BTN_LOAD_OPTION,132,225,20,14 END -IDR_MAINFRAME DIALOG DISCARDABLE 0, 0, 459, 49 -STYLE WS_CHILD -FONT 9, "±¼¸²" -BEGIN - EDITTEXT IDC_E_PATH,69,0,177,12,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "Resource °æ·Î ¼³Á¤",IDC_B_SET_RESOURCE_PATH,0,0,69,12 - EDITTEXT IDC_E_TRANSFORM_X,279,0,42,12,ES_AUTOHSCROLL - RTEXT "Transform",IDC_STATIC_TRANSFORM,243,0,36,11, - SS_CENTERIMAGE - EDITTEXT IDC_E_TRANSFORM_Y,321,0,42,12,ES_AUTOHSCROLL - EDITTEXT IDC_E_TRANSFORM_Z,363,0,42,12,ES_AUTOHSCROLL - CONTROL "Slider1",IDC_SLIDER_FARPLANE,"msctls_trackbar32", - TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,36,15,162,15 - CONTROL "Slider1",IDC_SLIDER_TILEREGION,"msctls_trackbar32", - TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,243,15,162,15 - LTEXT "Far Plane",IDC_STATIC,3,18,32,8 - LTEXT "ŸÀÏ¿µ¿ª",IDC_STATIC,210,18,28,8 - EDITTEXT IDC_E_ZONEID,417,15,40,14,ES_AUTOHSCROLL - LTEXT "Zone ID",IDC_STATIC,423,3,26,8 - CONTROL "Slider1",IDC_SLIDER_LIGHT,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,23,32,428,15 - LTEXT "Light",IDC_STATIC,3,34,16,8 -END -IDD_SCENE_GRAPH DIALOGEX 0, 0, 206, 336 -STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "Scene Graph" -FONT 9, "±¼¸²", 0, 0, 0x1 -BEGIN - CONTROL "Tree1",IDC_TREE_OBJ,"SysTreeView32",TVS_HASBUTTONS | - TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS | - TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,0,0,207,231 - CONTROL "",IDC_PREVIEW,"Static",SS_GRAYFRAME,45,233,115,102 -END +///////////////////////////////////////////////////////////////////////////// +// +// Version +// -IDD_BRUSH DIALOGEX 0, 0, 126, 172 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -FONT 9, "±¼¸²", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_SHAPE,5,5,65,55,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - CONTROL "Slider1",IDC_SLIDER_SIZE,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,5,35,65,15 - CONTROL "Slider1",IDC_SLIDER_FALLOFF,"msctls_trackbar32", - TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,5,70,65,15 - LTEXT "Size",IDC_STATIC,5,25,65,10 - LTEXT "Fall off",IDC_STATIC,5,60,65,10 - EDITTEXT IDC_EDIT_SIZE,80,35,25,15,ES_CENTER | ES_AUTOHSCROLL | - ES_READONLY - EDITTEXT IDC_EDIT_FALLOFF,80,70,25,15,ES_CENTER | ES_AUTOHSCROLL | - ES_READONLY - CONTROL "ÆòÆòÇϰÔ",IDC_CHECK_FLAT,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,76,92,43,10 - CONTROL "³ôÀ̰ªÁ¤Çϱâ",IDC_RDO_GET_HEIGHT,"Button", - BS_AUTORADIOBUTTON | WS_GROUP,12,128,57,10 - CONTROL "Æò¸é¸¸µé±â",IDC_RDO_FLATEN,"Button",BS_AUTORADIOBUTTON, - 12,142,50,10 - LTEXT "³ôÀ̰ª",IDC_STATIC,83,130,22,8 - LTEXT "0",IDC_FLAT_HEIGHT,82,142,28,8 - GROUPBOX "Æò¸é¸¸µé±â",IDC_STATIC,7,114,113,47 -END - -IDD_TERRAINSIZE DIALOG DISCARDABLE 0, 0, 168, 26 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Set Terrain Size" -FONT 9, "±¼¸²" +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,4,2,1440 + PRODUCTVERSION 2,4,2,1440 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L BEGIN - DEFPUSHBUTTON "OK",IDOK,126,6,39,15 - LTEXT "Terrain Size :",IDC_STATIC,7,8,45,8 - EDITTEXT IDC_EDIT1,54,7,50,12,ES_AUTOHSCROLL - LTEXT "m",IDC_STATIC,108,9,8,8 - LTEXT "2",IDC_STATIC,116,7,8,8 + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "noah system" + VALUE "FileDescription", "N3ME_debug" + VALUE "FileVersion", "2, 4, 2, 1440" + VALUE "InternalName", "N3ME_debug" + VALUE "LegalCopyright", "Copyright ¨Ï 2002" + VALUE "OriginalFilename", "N3ME_debug.exe" + VALUE "ProductName", "noah system N3ME_debug" + VALUE "ProductVersion", "2, 4, 2, 1440" + END + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "NoahSystem 3D Map Editor" + VALUE "FileVersion", "2, 4, 2, 1440" + VALUE "InternalName", "N3ME" + VALUE "LegalCopyright", "Copyright (C) 2001" + VALUE "OriginalFilename", "N3ME.EXE" + VALUE "ProductName", "N3MapEditor" + VALUE "ProductVersion", "2, 4, 2, 1440" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200, 0x409, 1200 + END END -IDD_SETDETAILTEXTURE DIALOG DISCARDABLE 0, 0, 410, 445 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "ÅØ½ºÃļӼº Á¤ÀÇ & ÆíÁý" -FONT 9, "±¼¸²" + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO BEGIN - DEFPUSHBUTTON "´Ý ±â",IDOK,323,419,75,16 - COMBOBOX IDC_COMBO_FILELIST,54,3,243,97,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_TEXTUREVIEW,"Static",SS_BLACKFRAME,105,41,37,35 - LTEXT "* ÅØ½ºÃÄ ÆÄÀÏ: ",IDC_STATIC,3,6,48,8 - LTEXT "* ±×·ì ¸ñ·Ï",IDC_STATIC,8,28,40,8 - LTEXT "* ¼Ó¼º : ",IDC_STATIC,107,29,28,8 - LTEXT "±æ - NORMAL",IDC_ATTR,136,29,212,8 - LISTBOX IDC_LIST_GROUP,7,41,95,362,LBS_NOINTEGRALHEIGHT | - WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Ãß°¡",IDC_BTN_ADDGROUP,50,27,24,11 - PUSHBUTTON "»èÁ¦",IDC_BTN_DELGROUP,77,27,24,11 - PUSHBUTTON "ÅØ½ºÃÄÃß°¡",IDC_BTN_ADDDTEX,304,3,42,13 - PUSHBUTTON "ÅØ½ºÃÄ»èÁ¦",IDC_BTN_DELDTEX,351,3,42,13 - LTEXT "* ÇöÀç »ç¿ëÁßÀΠŸÀÏ¼ÂÆ® :",IDC_STATIC,114,392,84,8 - LTEXT "¾Æ¹«°Íµµ ¾ø´Âµ¥¿©...^^",IDC_STATIC_TILESETNAME,202,392, - 191,8 - PUSHBUTTON "ŸÀÏ¼ÂÆ® ºÒ·¯¿À±â",IDC_BTN_LOAD_TILESET,14,419,74,16 - PUSHBUTTON "ŸÀÏ¼ÂÆ® ÀúÀåÇϱâ",IDC_BTN_SAVE_TILESET,102,419,84,16 - PUSHBUTTON "ŸÀÏ¼ÂÆ® »õÀ̸§À¸·Î ÀúÀåÇϱâ", - IDC_BTN_SAVE_NEWNAME_TILESET,200,419,109,16 + IDD_MAKE_NPCPATH, DIALOG + BEGIN + END END +#endif // APSTUDIO_INVOKED -IDD_INPUT_ATTR DIALOGEX 0, 0, 111, 198 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "¼Ó¼º³Ö±â" -FONT 9, "±¼¸²", 0, 0, 0x1 + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_MOVE CURSOR "res\\move.cur" + +IDC_ROTATE CURSOR "res\\rotate.cur" + +IDC_ZOOM CURSOR "res\\zoom.cur" + +IDC_TRANSFORM CURSOR "res\\transform.cur" + +IDC_LOAD CURSOR "res\\load.cur" + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE BEGIN - DEFPUSHBUTTON "³Ö±â",IDOK,3,174,51,21 - PUSHBUTTON "Ãë¼Ò",IDCANCEL,60,174,48,21 - LISTBOX IDC_LB_GROUP,3,3,105,168,LBS_NOINTEGRALHEIGHT | - WS_VSCROLL | WS_TABSTOP + IDR_MAINFRAME "N3ME\n\nN3ME\nN3ME file (*.n3m)\n.n3m\nN3ME.Document\nN3ME Document" END -IDD_INPUT_GROUP DIALOGEX 0, 0, 151, 35 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "±×·ìÃß°¡" -FONT 9, "±¼¸²", 0, 0, 0x1 +STRINGTABLE BEGIN - EDITTEXT IDC_EDIT_INPUTGROUP,42,2,108,14,ES_AUTOHSCROLL | - WS_GROUP - DEFPUSHBUTTON "Ãß°¡",IDOK,77,19,73,14 - PUSHBUTTON "Ãë¼Ò",IDCANCEL,2,19,72,14 - LTEXT "±×·ìÀ̸§ : ",IDC_STATIC,3,4,39,8 + AFX_IDS_APP_TITLE "N3ME" + AFX_IDS_IDLEMESSAGE "Preparation" END -IDD_DEL_GROUP DIALOGEX 0, 0, 129, 186 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "±×·ì Áö¿ì±â" -FONT 9, "±¼¸²", 0, 0, 0x1 +STRINGTABLE BEGIN - LISTBOX IDC_LIST_DELGROUP,3,3,120,153,LBS_NOINTEGRALHEIGHT | - WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Áö¿ì±â",IDOK,3,162,57,21 - PUSHBUTTON "Ãë¼Ò",IDCANCEL,66,162,57,21 + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "CAP" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "SCRL" + ID_INDICATOR_OVR "OVR" + ID_INDICATOR_REC "REC" END -IDD_DTEX_GROUP DIALOGEX 0, 0, 103, 483 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "µðÅ×ÀÏ ÅØ½ºÃÄ ±×·ì ¸ñ·Ï" -FONT 9, "±¼¸²", 0, 0, 0x1 -BEGIN - CONTROL "ÀÚµ¿",IDC_TILEAUTO,"Button",BS_AUTORADIOBUTTON | - WS_GROUP,0,3,23,10 - CONTROL "Tree1",IDC_TREE_DTEX_GROUP,"SysTreeView32", - TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | - TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_BORDER | - WS_TABSTOP,2,71,97,294 - CONTROL "¼öµ¿",IDC_TILEMANUEL,"Button",BS_AUTORADIOBUTTON,25,3, - 25,10 - CONTROL "",IDC_PREVIEW_DTEX_GROUP,"Static",SS_BLACKFRAME,2,371, - 97,106 - CONTROL "Slider1",IDC_SLIDER_DTEX,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,3,30,97,29 - GROUPBOX "Ææ±½±â",IDC_STATIC,0,17,102,48 - CONTROL "¼öµ¿full",IDC_TILEMANUELNOMIX,"Button", - BS_AUTORADIOBUTTON,54,4,37,10 -END - -IDD_RIVER_PROPERTY DIALOG DISCARDABLE 0, 0, 183, 205 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "River Properties" -FONT 9, "±¼¸²" -BEGIN - DEFPUSHBUTTON "OK",IDOK,1,153,126,50 - PUSHBUTTON "Cancel",IDCANCEL,125,153,57,50 - LISTBOX IDC_LP_RIVER,0,0,182,153,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - CTEXT "Not Selected..",IDC_NOTSELECTED,6,19,164,30, - SS_CENTERIMAGE | NOT WS_VISIBLE - PUSHBUTTON "Extrude Edge",IDC_BUTTON_EXTRUDE,0,172,90,14 - PUSHBUTTON "Delete Vertex",IDC_BUTTON_DELETE_VERTEX,90,172,90,14 - PUSHBUTTON "Recalc UV",IDC_BUTTON_RECALC_UV,0,186,90,14 - PUSHBUTTON "Delete River",IDC_BUTTON_DELETE_RIVER,90,186,90,14 - PUSHBUTTON "Recalc Selected Vertex",IDC_BUTTON_RECALCVERTEX,0,156, - 90,15 - COMBOBOX IDC_COMBO_RIBER,90,155,92,115,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP +STRINGTABLE +BEGIN + ID_FILE_NEW "Create a new document\nNew file" + ID_FILE_OPEN "Open an existing document\nOpen" + ID_FILE_CLOSE "Close the currently open document\nClose" + ID_FILE_SAVE "Saves the currently open document\nSave" + ID_FILE_SAVE_AS "Save the currently open document under a different name\nSave as" END -IDD_BASE DIALOGEX 0, 0, 234, 387 -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW -FONT 9, "±¼¸²", 0, 0, 0x1 -BEGIN - EDITTEXT IDC_E_NAME,0,9,234,12,ES_AUTOHSCROLL - LTEXT "µî·ÏÁ¤º¸",IDC_STATIC_NAME,0,0,234,8 - LISTBOX IDC_LP_TRANSFORM,0,21,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - LISTBOX IDC_LP_SHAPE,0,159,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - LISTBOX IDC_LP_CHR,0,214,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - COMBOBOX IDC_CB_PART_SHAPE,0,147,234,165,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_CB_LOD,114,201,120,165,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP - COMBOBOX IDC_CB_PART_CHARACTER,0,201,111,165,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - LISTBOX IDC_LP_CAMERA,0,63,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - LISTBOX IDC_LP_LIGHT,0,105,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - LISTBOX IDC_LP_MATERIAL,0,348,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - COMBOBOX IDC_CB_PLUG_CHARACTER,0,295,234,165,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP - LISTBOX IDC_LP_CHR_PART,0,253,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - LISTBOX IDC_LP_CHR_PLUG,0,309,234,39,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP -END - -IDD_ADDDTEX DIALOG DISCARDABLE 0, 0, 222, 145 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "ÅØ½ºÃÄ Ãß°¡Çϱâ" -FONT 9, "±¼¸²" +STRINGTABLE BEGIN - DEFPUSHBUTTON "OK",IDOK,168,2,50,66 - PUSHBUTTON "Cancel",IDCANCEL,168,74,50,66 - LISTBOX IDC_ADDDTEXLIST,1,1,165,141,LBS_NOINTEGRALHEIGHT | - WS_VSCROLL | WS_TABSTOP + ID_APP_ABOUT "Displays program information, version information, and copyright information\nInformation" + ID_APP_EXIT "The application will ask you to save the document\nExit" END -IDD_MODIFY_DTEX DIALOGEX 0, 0, 42, 75 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION -EXSTYLE WS_EX_TOOLWINDOW -CAPTION "Tile Control" -FONT 9, "±¼¸²", 0, 0, 0x1 +STRINGTABLE BEGIN - PUSHBUTTON "CANCEL",IDCANCEL,0,60,42,15 - DEFPUSHBUTTON "MIRROR",ID_MODIFY_DTEX_MIRROR,0,0,42,15 - DEFPUSHBUTTON "CW90D",ID_MODIFY_DTEX_CW90D,0,15,42,15 - DEFPUSHBUTTON "CW180D",ID_MODIFY_DTEX_CW180D,0,30,42,15 - DEFPUSHBUTTON "CW270D",ID_MODIFY_DTEX_CW270D,0,45,42,15 + ID_FILE_MRU_FILE1 "Open this document" + ID_FILE_MRU_FILE2 "Open this document" + ID_FILE_MRU_FILE3 "Open this document" + ID_FILE_MRU_FILE4 "Open this document" + ID_FILE_MRU_FILE5 "Open this document" + ID_FILE_MRU_FILE6 "Open this document" + ID_FILE_MRU_FILE7 "Open this document" + ID_FILE_MRU_FILE8 "Open this document" + ID_FILE_MRU_FILE9 "Open this document" + ID_FILE_MRU_FILE10 "Open this document" + ID_FILE_MRU_FILE11 "Open this document" + ID_FILE_MRU_FILE12 "Open this document" + ID_FILE_MRU_FILE13 "Open this document" + ID_FILE_MRU_FILE14 "Open this document" + ID_FILE_MRU_FILE15 "Open this document" + ID_FILE_MRU_FILE16 "Open this document" END -IDD_BROWSE_PATH DIALOGEX 0, 0, 167, 272 -STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_APPWINDOW -CAPTION "Browse Path" -FONT 9, "±¼¸²", 0, 0, 0x1 +STRINGTABLE BEGIN - DEFPUSHBUTTON "OK",IDOK,6,249,72,14 - PUSHBUTTON "Cancel",IDCANCEL,90,249,68,14 - CONTROL "Tree1",IDC_BROWSE_TREE,"SysTreeView32",TVS_HASBUTTONS | - TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_TABSTOP, - 6,24,153,219 - COMBOBOX IDC_FILELIST,5,5,133,80,CBS_DROPDOWN | CBS_AUTOHSCROLL | - CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "->",IDC_SYNCH_FOLDERS,144,6,15,14 + ID_NEXT_PANE "Switch to the next window\nNext window" + ID_PREV_PANE "Switch to previous window\nPrevious window" END -IDD_SET_LIGHTMAP DIALOG DISCARDABLE 0, 0, 123, 263 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "¶óÀÌÆ®¸Ê ±×¸®±â" -FONT 9, "±¼¸²" +STRINGTABLE BEGIN - CONTROL "Slider1",IDC_LM_SLD_PEN_SIZE,"msctls_trackbar32", - TBS_AUTOTICKS | WS_TABSTOP,8,14,108,20 - CONTROL "Slider4",IDC_LM_SLD_HARD,"msctls_trackbar32",WS_TABSTOP, - 8,67,108,20 - LTEXT "small",IDC_STATIC,14,39,22,8 - LTEXT "large",IDC_STATIC,99,39,17,8 - LTEXT "1%",IDC_STATIC,12,90,11,8 - LTEXT "100%",IDC_STATIC,101,89,19,8 - CONTROL "Ä¥Çϱâ",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | - WS_GROUP,8,177,46,10 - CONTROL "Áö¿ì±â",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,65,177, - 46,10 - GROUPBOX "Ææ±½±â",IDC_STATIC,4,5,117,46 - GROUPBOX "³óµµ",IDC_STATIC,4,58,117,46 - GROUPBOX "Ä¥ÇÏ´Â ¹æ¹ý",IDC_STATIC,4,160,117,37 - CONTROL "",IDC_STATIC_SELECTEDCOLOR,"Static",SS_BLACKFRAME,11, - 216,41,20 - GROUPBOX "ÇöÀç »ö±ò",IDC_STATIC,4,203,117,40 - PUSHBUTTON "»ö±ò °í¸£±â",IDC_BTN_SELECT_COLOR,61,218,50,14 - LTEXT " ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ¸·Î ¶óÀÎÀ» ±×¸± ¼ö ÀÖ½À´Ï´Ù.", - IDC_STATIC,2,244,121,19 - CONTROL "Slider4",IDC_LM_SLD_OPACITY,"msctls_trackbar32", - WS_TABSTOP,8,117,108,20 - LTEXT "1%",IDC_STATIC,12,139,11,8 - LTEXT "100%",IDC_STATIC,101,139,19,8 - GROUPBOX "Opacity",IDC_STATIC,4,107,117,46 + ID_WINDOW_SPLIT "Split the currently open window\nSplit" END -IDD_LOAD_TILESET DIALOG DISCARDABLE 0, 0, 226, 253 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "ŸÀÏ¼ÂÆ® ºÒ·¯¿À±â" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - DEFPUSHBUTTON "OK",IDOK,169,8,50,111 - PUSHBUTTON "Cancel",IDCANCEL,169,134,50,111 - LISTBOX IDC_LIST_LOAD_TILESET,7,7,158,239,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + ID_EDIT_CLEAR "Clear the selection\nClear" + ID_EDIT_CLEAR_ALL "Delete everything\nClear everything" + ID_EDIT_COPY "Copy the selection and place it on the clipboard\nCopy" + ID_EDIT_CUT "Cut the selection and place it on the clipboard\nCut" + ID_EDIT_FIND "Find the specified string\nFind" + ID_EDIT_PASTE "Paste the contents of the clipboard\nPaste" + ID_EDIT_REPEAT "Repeats the last executed action\nRepeat" + ID_EDIT_REPLACE "Replaces the specified string with another string\nReplace" + ID_EDIT_SELECT_ALL "Select the entire document\nSelect all" + ID_EDIT_UNDO "Undo the last action\nUndo" + ID_EDIT_REDO "Redo a previously undone action\nRedo" END -IDD_SAVE_NEW_TILESET DIALOG DISCARDABLE 0, 0, 327, 261 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "»õÀ̸§À¸·Î ŸÀÏ¼ÂÆ® ÀúÀåÇϱâ" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - DEFPUSHBUTTON "ÀúÀå",IDOK,270,15,50,102 - PUSHBUTTON "Ãë¼Ò",IDCANCEL,270,143,50,102 - LISTBOX IDC_LIST_TILESET,7,19,255,188,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_EDIT_NEWTILESETNAME,7,227,254,14,ES_AUTOHSCROLL - LTEXT "* ÇöÀç Á¸ÀçÇϴ ŸÀÏ¼ÂÆ®",IDC_STATIC,7,7,80,8 - LTEXT "* ÀúÀåÇÒ Å¸ÀÏ¼ÂÆ® À̸§",IDC_STATIC,7,216,73,8 + ID_VIEW_TOOLBAR "Show/hide toolbar\nSwitch toolbar" + ID_VIEW_STATUS_BAR "Show or hide the status bar\nToggle the status bar" END -IDD_MAKE_NPCPATH DIALOG DISCARDABLE 0, 0, 153, 573 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Make NPC Path " -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - CONTROL "½ÃÀÛ¿µ¿ª¸¸µé±â",IDC_RDO_START_RGN,"Button", - BS_AUTORADIOBUTTON | WS_GROUP,11,252,60,10 - CONTROL "±æ¸¸µé±â",IDC_RDO_MAKE_PATH,"Button",BS_AUTORADIOBUTTON, - 11,264,43,10 - CONTROL "Ȱµ¿¿µ¿ª¸¸µé±â",IDC_RDO_MAKE_ACT_RGN,"Button", - BS_AUTORADIOBUTTON,11,277,64,10 - COMBOBOX IDC_COMBO_NPC,4,112,145,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "NPC Á¾·ù :",IDC_STATIC,5,99,36,8 - EDITTEXT IDC_EDIT_NUM_NPC,35,131,31,14,ES_AUTOHSCROLL - LTEXT "¸¶¸®",IDC_STATIC,70,135,15,8 - PUSHBUTTON "¡å",IDC_BTN_RECORD,2,337,72,14 - LTEXT "* ¹èÄ¡µÈ NPCµé",IDC_STATIC,6,357,51,8 - LISTBOX IDC_LIST_NPCPATH,3,369,147,180,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "ºÒ·¯¿À±â",IDC_BTN_LOAD_PATHSET,4,39,31,14 - PUSHBUTTON "ÀúÀåÇϱâ",IDC_BTN_SAVE_PATHSET,37,39,32,14 - LTEXT "* ÇöÀç ÆÄÀÏÀ̸§",IDC_STATIC,3,12,50,8 - LTEXT "/npclist/pathset.txt",IDC_PATHSETNAME,4,24,117,8 - GROUPBOX "* ÆÄÀϰü¸® *",IDC_STATIC,0,1,153,58 - LTEXT "regen time :",IDC_STATIC,5,149,39,8 - EDITTEXT IDC_EDIT_REGENTIME,46,147,31,14,ES_AUTOHSCROLL - LTEXT "sec.",IDC_STATIC,79,149,15,8 - LTEXT "ÇൿŸÀÔ :",IDC_STATIC,5,167,33,8 - COMBOBOX IDC_COMBO_ACTIONTYPE,40,162,73,95,CBS_DROPDOWN | - CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "¸î¸¶¸® ?",IDC_STATIC,6,133,27,8 - PUSHBUTTON "¼­¹öµ¥ÀÌÅÍÀúÀå",IDC_BTN_SAVE_SERVER_PATHSET,71,39,50,14 - PUSHBUTTON "¡ã",IDC_BTN_PATH_MODIFY,78,337,72,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_PATH_DELETE,59,354,27,13 - GROUPBOX "",IDC_STATIC,3,243,147,48 - EDITTEXT IDC_EDT_NPCPATHNAME,4,319,146,14,ES_AUTOHSCROLL - LTEXT "* NPC±æ À̸§",IDC_STATIC,6,307,44,8 - LTEXT "* ÂïÀ» ¼ö ÀÖ´Â Á¡ÀÇ ¼ö :",IDC_STATIC,6,294,75,8 - LTEXT "32",IDC_NUM_POINT,83,294,8,8 - GROUPBOX "¸ø°¡´Â ¿µ¿ª º¼·¡?",IDC_STATIC,0,63,153,31 - CONTROL "¾î. º¼·¡.^^",IDC_RDO_VIEW_NONMOVE,"Button", - BS_AUTORADIOBUTTON | WS_GROUP,7,77,50,10 - CONTROL "½È¾î ¾Èº¼·¡.-.-",IDC_RDO_VIEW_NONE,"Button", - BS_AUTORADIOBUTTON,56,77,64,10 - PUSHBUTTON "»ö±ò³Ö±â",IDC_BTN_SETCOLOR,119,302,33,14 - PUSHBUTTON "NPCÁ¾·ù Àоî¿À±â",IDC_BTN_LOAD_NPCLIST,89,97,61,14 - EDITTEXT IDC_EDT_TRANS_X,12,554,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_TRANS_Z,54,554,27,14,ES_AUTOHSCROLL - PUSHBUTTON "Åë°·Î À§Ä¡ ¿Å±â±â",IDC_BTN_TRANS,85,554,65,15 - LTEXT "x",IDC_STATIC,4,554,8,8 - LTEXT "z",IDC_STATIC,46,554,8,8 - LTEXT "Áý´Ü¼Ó¼º:",IDC_STATIC,2,183,31,8 - COMBOBOX IDC_COMBO_NPC_ATTR_GROUP,33,181,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "¸®Á¨¼Ó¼º:",IDC_STATIC,2,198,31,8 - COMBOBOX IDC_COMBO_NPC_ATTR_REGEN,33,196,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "»ý¼º¼Ó¼º:",IDC_STATIC,2,213,31,8 - COMBOBOX IDC_COMBO_NPC_ATTR_CREATE,33,211,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "load",IDC_BTN_LOAD_GROUP,132,179,20,14 - PUSHBUTTON "load",IDC_BTN_LOAD_REGEN,132,195,20,14 - PUSHBUTTON "load",IDC_BTN_LOAD_CREATE,132,211,20,14 - LTEXT "±âŸ¿É¼Ç:",IDC_STATIC,2,228,31,8 - COMBOBOX IDC_COMBO_NPC_OPTION,33,225,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "load",IDC_BTN_LOAD_OPTION,132,225,20,14 + AFX_IDS_SCSIZE "Change the size of the window" + AFX_IDS_SCMOVE "Change the position of the window" + AFX_IDS_SCMINIMIZE "Minimize the window" + AFX_IDS_SCMAXIMIZE "Expand the window to its maximum size" + AFX_IDS_SCNEXTWINDOW "Switch to the next document window" + AFX_IDS_SCPREVWINDOW "Switch to the previous document window" + AFX_IDS_SCCLOSE "Asking whether to close the currently open window and save the document" END -IDD_LOAD_NPCPATH DIALOG DISCARDABLE 0, 0, 231, 209 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Load NPC Path" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - DEFPUSHBUTTON "Load",IDOK,180,6,50,95 - PUSHBUTTON "Cancel",IDCANCEL,180,108,50,95 - LISTBOX IDC_LIST_NPCPATH,1,1,177,207,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + AFX_IDS_SCRESTORE "Restore the window to its original size" + AFX_IDS_SCTASKLIST "Activate the task list" END -IDD_SAVE_NPCPATH DIALOG DISCARDABLE 0, 0, 247, 265 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Save NPC Path" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - DEFPUSHBUTTON "Save",IDOK,190,43,50,74 - PUSHBUTTON "Cancel",IDCANCEL,190,148,50,74 - LISTBOX IDC_LIST_NPCPATHFILENAME,7,7,171,226,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_EDIT_NPCPATHFILENAME,7,244,171,14,ES_AUTOHSCROLL + ID_CURSOR_SELECT "Select an object.\nSelect" + ID_CURSOR_OBJ_BRUSH "Place the object.\nPlacement" + ID_FILLMODE_WIREFRAME "View in wireframe mode\nWireframe mode" + ID_FILLMODE_SOLID "View in solid mode\nSolid mode" + ID_CURSOR_ROTATE "Rotates the selected object.\nRotate" + ID_CURSOR_POS "Move the selected object.\nMove" + ID_CURSOR_SCALE "Zoom in/out the selected object.\nZoom in/out" END -IDD_SOW_SEED DIALOG DISCARDABLE 0, 0, 301, 229 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION -CAPTION "Ç®½É±â" -FONT 9, "µ¸¿ò" -BEGIN - COMBOBOX IDC_CB_SEED,141,177,149,170,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_CB_TILEGROUP,1,177,137,171,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - LTEXT "* ½É°ÜÁø Ç®µé",IDC_STATIC,7,137,43,8 - PUSHBUTTON "Áö¿ì±â",IDC_BTN_DEL_SEED,17,151,33,13 - PUSHBUTTON "Ç® Á¤º¸ ÆÄÀÏ Àбâ",IDC_BTN_GRASSINFOLOAD,157,106,64,23 - PUSHBUTTON "°×µ¥ÀÌŸÀúÀå",IDC_BTN_SAVEGAME,0,201,214,28 - CONTROL "",IDC_STATIC_GRASS,"Static",SS_BLACKFRAME,5,5,130,121 - PUSHBUTTON "Ç® Á¤º¸ ÆÄÀÏ ÀúÀå",IDC_BTN_GRASSINFOSAVE,224,106,64,23 - GROUPBOX "ŸÀÏ´ç µðÅ×ÀÏ",IDC_STATIC,153,11,142,32 - GROUPBOX "Brush Size",IDC_STATIC,153,57,142,32 - GROUPBOX "¼±ÅÃ",IDC_STATIC,153,135,142,32,WS_GROUP - CONTROL "Ç®½É±â",IDC_RADIO_SOW,"Button",BS_AUTORADIOBUTTON,166, - 147,49,9 - CONTROL "±×·ì¼±ÅÃ",IDC_RADIO_SELECT,"Button",BS_AUTORADIOBUTTON, - 224,147,49,9 - PUSHBUTTON "Á¾·á",IDC_SEED_EXIT,223,200,66,28 - PUSHBUTTON "¼¯±â",IDC_BUTTON_RANDOM,89,141,53,24 - CONTROL "Slider1",IDC_S_TILE_DETAIL,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,161,27,128,12 - CONTROL "Slider2",IDC_SOW_BRUSH_SIZE,"msctls_trackbar32", - TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,161,69,128,12 -END - -IDD_MAKE_WALL DIALOG DISCARDABLE 0, 0, 93, 249 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "º® ¸¸µé±â" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - EDITTEXT IDC_EDIT_WALL,0,16,92,14,ES_AUTOHSCROLL - LISTBOX IDC_LIST_WALL,0,69,92,180,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "¡å",IDC_BTN_WALL_RECORD,8,33,36,14 - PUSHBUTTON "¡ã",IDC_BTN_WALL_EDIT,48,33,36,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DELETE,41,53,27,14 - LTEXT "* ÇöÀç ÆíÁýÁßÀÎ º®",IDC_STATIC,2,5,59,8 - LTEXT "* ÆíÁýµÈ º®",IDC_STATIC,2,57,36,8 + ID_CURSOR_EDIT_TERRAIN "Modify the terrain.\nModify the terrain" + ID_TIP_DROP "Attach the selected object to the terrain.\nDrop" END -IDD_EDIT_EVENT DIALOG DISCARDABLE 0, 0, 106, 373 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "À̺¥Æ® ÆíÁý" -FONT 9, "µ¸¿ò" +STRINGTABLE BEGIN - LTEXT "* ÇöÀç ÆíÁýÁßÀÎ À̺¥Æ®",IDC_STATIC,3,67,73,8 - LTEXT "* ¸¸µé¾îÁø À̺¥Æ®",IDC_STATIC,2,127,57,8 - LISTBOX IDC_EVENT_LIST,3,142,100,228,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "¡å",IDC_BTN_EVENT_RECORD,3,100,48,14 - PUSHBUTTON "¡ã",IDC_BTN_EVENT_EDIT,55,100,48,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_EVENT_DEL,64,124,35,13 - LTEXT "NONE",IDC_STATIC_CURR_EVENT,7,81,89,8 - GROUPBOX "* ÆíÁýÁßÀÎ ÆÄÀÏ *",IDC_STATIC,4,4,99,53 - LTEXT "^^",IDC_STATIC_CURR_FILENAME,8,17,91,10 - PUSHBUTTON "ºÒ·¯¿ÍºÁ",IDC_BTN_LOAD_EVTFILE,8,38,41,14 - PUSHBUTTON "ÀúÀåÇÒ²¸",IDC_BTN_SAVE_EVTFILE,56,38,41,14 + ID_CURSOR_SMOOTH_TERRAIN "Smooth Tool\nSmooth Tool" + ID_PROJECT_SET "Specify the Project path.\\Specify the Project path" + ID_FILE_COLORMAP_LOAD "Call the color map. (*.bmp)\\Read the color map" + ID_FILE_COLORMAP_SAVE "Save the color map. (*.bmp)\\Save color map" + ID_RESOURCE_PATH_SET "Specify the path to Resource Files.\nSpecify Resource Path" END -IDD_EDIT_EVENT_ATTR DIALOG DISCARDABLE 0, 0, 245, 262 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "À̺¥Æ® ÆíÁý" -FONT 10, "System" +STRINGTABLE BEGIN - DEFPUSHBUTTON "OK",IDOK,191,6,50,192 - PUSHBUTTON "Cancel",IDCANCEL,191,212,50,46 - LTEXT "* Event ID :",IDC_STATIC,3,41,38,8 - EDITTEXT IDC_EDIT_EVENT_ATTR_ID,42,38,42,14,ES_AUTOHSCROLL - LTEXT "* Event Type :",IDC_STATIC,3,58,47,8 - EDITTEXT IDC_EDIT_EVENT_ATTR_TYPE,50,55,42,14,ES_AUTOHSCROLL - LTEXT "* con1 :",IDC_STATIC,3,81,26,8 - LTEXT "* con2 :",IDC_STATIC,3,98,26,8 - LTEXT "* con3 :",IDC_STATIC,3,116,26,8 - LTEXT "* con4 :",IDC_STATIC,3,133,26,8 - LTEXT "* con5 :",IDC_STATIC,3,149,26,8 - LTEXT "* exe1 :",IDC_STATIC,3,179,26,8 - LTEXT "* exe2 :",IDC_STATIC,3,197,26,8 - LTEXT "* exe3 :",IDC_STATIC,3,214,26,8 - LTEXT "* exe4 :",IDC_STATIC,3,231,26,8 - LTEXT "* exe5 :",IDC_STATIC,3,248,26,8 - EDITTEXT IDC_EDIT_EVENT_ATTR_CON1,32,78,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_CON2,32,95,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_CON3,32,112,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_CON4,32,129,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_CON5,32,146,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_EXE1,32,176,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_EXE2,32,193,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_EXE3,32,210,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_EXE4,32,227,150,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_ATTR_EXE5,32,244,150,14,ES_AUTOHSCROLL - LTEXT "* Event Name :",IDC_STATIC,3,24,50,8 - EDITTEXT IDC_EDIT_EVENT_ATTR_NAME,53,21,82,14,ES_AUTOHSCROLL - LTEXT "* Zone ID : ",IDC_STATIC,3,6,38,8 - EDITTEXT IDC_EDIT_EVENT_ZONE_ID,41,4,49,14,ES_AUTOHSCROLL + ID_VIEW_SELECTED_OBJECT_WIREFRAME + "View with selected Object Wire Frame\nView with selected Object Wire Frame" + ID_FILE_IMPORT_POST_DATA_FROM_SCENE + "Loading object batch data from *.N3Scene\nImport batch data" END -IDD_POND_PROPERTY DIALOG DISCARDABLE 0, 0, 159, 228 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Pond Propertys" -FONT 10, "System" -BEGIN - DEFPUSHBUTTON "OK",IDOK,0,133,159,58 - PUSHBUTTON "Cancel",IDCANCEL,0,190,159,37 - LISTBOX IDC_LP_POND,0,0,159,132,LBS_OWNERDRAWVARIABLE | - LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | - WS_HSCROLL | WS_TABSTOP - PUSHBUTTON "Edit Pond",IDC_BUTTON_EDITPOND,79,182,80,15 - PUSHBUTTON "Move Pond",IDC_BUTTON_MOVE_POND,0,197,79,14 - PUSHBUTTON "ÀçÁ¤·Ä",IDC_BUTTON_STATION_POND,0,211,79,15 - PUSHBUTTON "Delete Pond",IDC_BUTTON_DELETE_POND,79,211,80,15 - LTEXT "Static",IDC_WIDTHLENGTH,34,164,41,9 - LTEXT "Static",IDC_HEIGHTLENGTH,111,164,43,9 - LTEXT "x °Å¸® : ",IDC_STATICNAME1,6,164,26,9 - LTEXT "y °Å¸® : ",IDC_STATICNAME2,80,164,26,8 - PUSHBUTTON "UV Àç Á¤·Ä",IDC_BU_RECALCUV,0,182,79,15 - PUSHBUTTON "±×·ì",IDC_GROUP,79,197,80,14 - GROUPBOX "¼¿°£ÀÇ °Å¸®",IDC_STATIC3,2,153,157,25 - COMBOBOX IDC_COMBO_GOPOND,80,136,73,76,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - LTEXT "°¡°íÀÚÇÏ´Â ¿¬¸ø",IDC_STATIC4,5,138,70,11 -END - -IDD_LOAD_EVENT DIALOG DISCARDABLE 0, 0, 187, 217 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" -FONT 9, "µ¸¿ò" -BEGIN - DEFPUSHBUTTON "OK",IDOK,141,8,43,55 +#endif // Korean (Korea) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU +BEGIN + POPUP "File(&F)" + BEGIN + MENUITEM "Set resource path(&R)...\tCtrl+R", ID_RESOURCE_PATH_SET + MENUITEM "New(&N)\tCtrl+N", ID_FILE_NEW + MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN + MENUITEM "Save(&S)\tCtrl+S", ID_FILE_SAVE + MENUITEM "Save as(&A)...", ID_FILE_SAVE_AS + MENUITEM "Save with cutted", ID_FILE_SAVE_DIVIDE + MENUITEM SEPARATOR + MENUITEM "Generate height data from VMesh", ID_FILE_IMPORT_HEIGHT + MENUITEM "Import height data from VMesh(&I)", ID_FILE_IMPORT + MENUITEM "Export HeightBMP", ID_FILE_EXPORT_HEIGHT_BMP + MENUITEM "Import HegihtBMP", ID_FILE_IMPORT_HEIGHT_BMP + MENUITEM SEPARATOR + MENUITEM "Open Shape", ID_FILE_IMPORT_SHAPES + MENUITEM "Save as game format(&E)...", ID_FILE_EXPORT + MENUITEM "Save as server format(&V)", ID_FILE_SERVER_DATA + MENUITEM "Import colormap(&C)", ID_FILE_COLORMAP_LOAD + MENUITEM "Export colormap", ID_FILE_COLORMAP_SAVE + MENUITEM "Save tile game formatted texture data", ID_FILE_GAMETILETEX_SAVE + MENUITEM SEPARATOR + MENUITEM "Import *.N3Scene object position data", ID_FILE_IMPORT_POST_DATA_FROM_SCENE + MENUITEM SEPARATOR + MENUITEM "Recent files", ID_FILE_MRU_FILE1, GRAYED + MENUITEM SEPARATOR + MENUITEM "Exit(&X)", ID_APP_EXIT + END + POPUP "Edit(&E)" + BEGIN + MENUITEM "Undo(&U)\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "Cur(&T)\tCtrl+X", ID_EDIT_CUT + MENUITEM "Copy(&C)\tCtrl+C", ID_EDIT_COPY + MENUITEM "Paste(&P)\tCtrl+V", ID_EDIT_PASTE + MENUITEM SEPARATOR + MENUITEM "Property(R)", ID_EDIT_PROPERTY + MENUITEM "Edit Detail Texture", ID_EDIT_DTEX + END + POPUP "View(&V)" + BEGIN + MENUITEM "Tool bar(&T)", ID_VIEW_TOOLBAR + MENUITEM "Status bar(&S)", ID_VIEW_STATUS_BAR + MENUITEM "Source Object List(&C)", ID_VIEW_SOURCEOBJECT + MENUITEM "Output Object List(&O)", ID_VIEW_OUTPUTOBJECT + MENUITEM "Detail Texture List(&D)", ID_VIEW_DTEX + MENUITEM SEPARATOR + MENUITEM "Focus selected object\tF", ID_TIP_FOCUS_SELOBJ + MENUITEM "Focus whole map\tA", ID_TIP_FOCUS_ALL + MENUITEM SEPARATOR + MENUITEM "WIREFRAME MODE(&W)", ID_VIEW_WIREFRAME + MENUITEM "SOLID MODE(&L)", ID_VIEW_SOLID + MENUITEM "View selected object by wire Frame", ID_VIEW_SELECTED_OBJECT_WIREFRAME, CHECKED + MENUITEM "View axis and grid", ID_VIEW_AXIS_AND_GRID + MENUITEM "Hide objects\tH", ID_VIEW_HIDE_OBJ + MENUITEM "View perspective", ID_VIEW_ORTH + MENUITEM "Toggle fog", ID_VIEW_TOGGLE_FOG + END + POPUP "Edit mode(&C)" + BEGIN + MENUITEM "Select\tQ", ID_CURSOR_SELECT + MENUITEM "Move\tW", ID_CURSOR_POS + MENUITEM "Rotate\tE", ID_CURSOR_ROTATE + MENUITEM "Scale\tR", ID_CURSOR_SCALE + MENUITEM "Object Brush\tT", ID_CURSOR_OBJ_BRUSH + MENUITEM "Edit terrain", ID_CURSOR_EDIT_TERRAIN + MENUITEM "Smooth", ID_CURSOR_SMOOTH_TERRAIN + MENUITEM "Detail texture\tD", ID_CURSOR_DTEX + MENUITEM "River", ID_CURSOR_EDIT_RIVER + MENUITEM "Pond", ID_CURSOR_EDIT_POND + MENUITEM "Light map", ID_CURSOR_EDIT_LIGHTMAP + MENUITEM "NPC Path", ID_CURSOR_MAKE_NPCPATH + MENUITEM "Wall", ID_CURSOR_MAKE_WALL + MENUITEM "Event", ID_CURSOR_EDIT_EVENT + MENUITEM "Plane", ID_CURSOR_FLAT_TERRAIN + MENUITEM "User regeneration region", ID_CURSOR_REGEN_USER + MENUITEM "Environment sound effect", ID_CURSOR_SOUND + END + POPUP "Tool(&T)" + BEGIN + MENUITEM "Attach object to terrain", ID_TIP_DROP + MENUITEM "Delete selected object\tDel", ID_TIP_DELETE_OBJ + MENUITEM SEPARATOR + MENUITEM "Make colormap\tC", ID_TIP_GENERATE_COLORMAP + MENUITEM "Make whole colormap\tX", ID_TIP_GENERATE_COLORMAP_ALL + MENUITEM "Fill whole map with current tile\tV", ID_TIP_TILING_ALL + MENUITEM SEPARATOR + MENUITEM "Set to basic material\t(&D)", ID_TIP_DEFAULT_MATERIAL + MENUITEM "Remove Alpha Blending Flag\t(&R)", ID_TIP_REMOVE_ALPHAFLAG + MENUITEM SEPARATOR + MENUITEM "Spread seed", ID_TIP_SOW_SEED + MENUITEM "Make unused file list", ID_TIP_DELETE_UNUSED_FILES + MENUITEM "Remove overlapped objects", ID_TIP_DELETE_OVERLAPPED_OBJECTS + MENUITEM "Remove selected source objects", ID_TIP_DELETE_SELECTED_SOURCE_OBJECTS + MENUITEM SEPARATOR + MENUITEM "Make warp info", ID_TIP_SET_WARP_INFO + MENUITEM "Adjust height scale", ID_TIP_SET_HEIGHT_SCALE + MENUITEM SEPARATOR + MENUITEM "View whole map && edit partial", ID_SELECT_MAP_EDIT + END + POPUP "Help(&H)" + BEGIN + MENUITEM "About N3MapEditor\t(&A)", ID_APP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOGEX 0, 0, 339, 55 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "N3ME" +FONT 9, "??", 0, 0, 0x0 +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "Noah System Map Editor Version 3",IDC_STATIC,40,10,146,8,SS_NOPREFIX + LTEXT "Copyleft (C) 2002",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "Close",IDOK,282,7,50,14,WS_GROUP +END + +IDR_MAINFRAME DIALOGEX 0, 0, 459, 49 +STYLE DS_SETFONT | WS_CHILD +FONT 9, "??", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_E_PATH,79,0,167,12,ES_AUTOHSCROLL | ES_READONLY + PUSHBUTTON "Resource path settings",IDC_B_SET_RESOURCE_PATH,2,0,77,12 + EDITTEXT IDC_E_TRANSFORM_X,279,0,42,12,ES_AUTOHSCROLL + RTEXT "Transform",IDC_STATIC_TRANSFORM,243,0,36,11,SS_CENTERIMAGE + EDITTEXT IDC_E_TRANSFORM_Y,321,0,42,12,ES_AUTOHSCROLL + EDITTEXT IDC_E_TRANSFORM_Z,363,0,42,12,ES_AUTOHSCROLL + CONTROL "Slider1",IDC_SLIDER_FARPLANE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,36,15,162,15 + CONTROL "Slider1",IDC_SLIDER_TILEREGION,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,243,15,162,15 + LTEXT "Far Plane",IDC_STATIC,3,18,32,8 + LTEXT "Tile area",IDC_STATIC,200,18,38,8 + EDITTEXT IDC_E_ZONEID,417,15,40,14,ES_AUTOHSCROLL + LTEXT "Zone ID",IDC_STATIC,423,3,26,8 + CONTROL "Slider1",IDC_SLIDER_LIGHT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,23,32,428,15 + LTEXT "Light",IDC_STATIC,3,34,16,8 +END + +IDD_SCENE_GRAPH DIALOGEX 0, 0, 206, 336 +STYLE DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Scene Graph" +FONT 9, "??", 0, 0, 0x1 +BEGIN + CONTROL "Tree1",IDC_TREE_OBJ,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,0,0,207,231 + CONTROL "",IDC_PREVIEW,"Static",SS_GRAYFRAME,7,233,192,101 +END + +IDD_BRUSH DIALOGEX 0, 0, 175, 172 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "??", 0, 0, 0x1 +BEGIN + COMBOBOX IDC_SHAPE,5,5,65,55,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Slider1",IDC_SLIDER_SIZE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,5,35,121,15 + CONTROL "Slider1",IDC_SLIDER_FALLOFF,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,5,70,117,15 + LTEXT "Size",IDC_STATIC,5,25,65,10 + LTEXT "Fall off",IDC_STATIC,5,60,65,10 + EDITTEXT IDC_EDIT_SIZE,137,35,31,15,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY + EDITTEXT IDC_EDIT_FALLOFF,138,69,30,15,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY + CONTROL "????",IDC_CHECK_FLAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,93,43,10 + CONTROL "Setting height value",IDC_RDO_GET_HEIGHT,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,128,77,10 + CONTROL "Creating a plane",IDC_RDO_FLATEN,"Button",BS_AUTORADIOBUTTON,12,142,68,10 + LTEXT "Height value",IDC_STATIC,128,129,40,8 + LTEXT "0",IDC_FLAT_HEIGHT,127,141,41,8 + GROUPBOX "Creating a plane",IDC_STATIC,7,114,161,47 +END + +IDD_TERRAINSIZE DIALOG 0, 0, 168, 26 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Set Terrain Size" +FONT 9, "??" +BEGIN + DEFPUSHBUTTON "OK",IDOK,126,6,39,15 + LTEXT "Terrain Size :",IDC_STATIC,7,8,45,8 + EDITTEXT IDC_EDIT1,54,7,50,12,ES_AUTOHSCROLL + LTEXT "m",IDC_STATIC,108,9,8,8 + LTEXT "2",IDC_STATIC,116,7,8,8 +END + +IDD_SETDETAILTEXTURE DIALOGEX 0, 0, 410, 445 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Define & edit texture properties" +FONT 9, "??", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",IDOK,323,419,75,16 + COMBOBOX IDC_COMBO_FILELIST,54,3,243,97,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_TEXTUREVIEW,"Static",SS_BLACKFRAME,105,41,37,35 + LTEXT "* Texture files:",IDC_STATIC,3,6,48,8 + LTEXT "* Group list",IDC_STATIC,8,28,40,8 + LTEXT "* Properties :",IDC_STATIC,107,29,43,8 + LTEXT "Road - NORMAL",IDC_ATTR,154,29,210,8 + LISTBOX IDC_LIST_GROUP,7,41,95,362,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Add",IDC_BTN_ADDGROUP,50,27,24,11 + PUSHBUTTON "Delete",IDC_BTN_DELGROUP,77,27,24,11 + PUSHBUTTON "Add texture",IDC_BTN_ADDDTEX,304,3,42,13 + PUSHBUTTON "Delete texture",IDC_BTN_DELDTEX,351,3,47,13 + LTEXT "* Tileset currently in use:",IDC_STATIC,114,392,84,8 + LTEXT "There is nothing...^^",IDC_STATIC_TILESETNAME,202,392,191,8 + PUSHBUTTON "Load tileset",IDC_BTN_LOAD_TILESET,14,419,74,16 + PUSHBUTTON "Save tileset",IDC_BTN_SAVE_TILESET,102,419,84,16 + PUSHBUTTON "Save tile set with new name",IDC_BTN_SAVE_NEWNAME_TILESET,200,419,109,16 +END + +IDD_INPUT_ATTR DIALOGEX 0, 0, 111, 198 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Insert properties" +FONT 9, "??", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Insert",IDOK,3,174,51,21 + PUSHBUTTON "Cancel",IDCANCEL,60,174,48,21 + LISTBOX IDC_LB_GROUP,3,3,105,168,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + +IDD_INPUT_GROUP DIALOGEX 0, 0, 151, 35 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Add group" +FONT 9, "??", 0, 0, 0x1 +BEGIN + EDITTEXT IDC_EDIT_INPUTGROUP,42,2,108,14,ES_AUTOHSCROLL | WS_GROUP + DEFPUSHBUTTON "Add",IDOK,77,19,73,14 + PUSHBUTTON "Cancel",IDCANCEL,2,19,72,14 + LTEXT "Group name:",IDC_STATIC,3,4,42,8 +END + +IDD_DEL_GROUP DIALOGEX 0, 0, 129, 186 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Delete group" +FONT 9, "??", 0, 0, 0x1 +BEGIN + LISTBOX IDC_LIST_DELGROUP,3,3,120,153,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Delete",IDOK,3,162,57,21 + PUSHBUTTON "Cancel",IDCANCEL,66,162,57,21 +END + +IDD_DTEX_GROUP DIALOGEX 0, 0, 149, 483 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Detail Texture Group List" +FONT 9, "??", 0, 0, 0x1 +BEGIN + CONTROL "Automatic",IDC_TILEAUTO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,0,3,44,10 + CONTROL "Tree1",IDC_TREE_DTEX_GROUP,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,2,71,145,294 + CONTROL "Manual",IDC_TILEMANUEL,"Button",BS_AUTORADIOBUTTON,43,3,34,10 + CONTROL "",IDC_PREVIEW_DTEX_GROUP,"Static",SS_BLACKFRAME,2,371,145,106 + CONTROL "Slider1",IDC_SLIDER_DTEX,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,3,30,140,29 + GROUPBOX "Pen thickness",IDC_STATIC,0,17,145,48 + CONTROL "Full manual mode",IDC_TILEMANUELNOMIX,"Button",BS_AUTORADIOBUTTON,79,3,68,10 +END + +IDD_RIVER_PROPERTY DIALOGEX 0, 0, 183, 206 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "River Properties" +FONT 9, "??", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,1,154,126,50 + PUSHBUTTON "Cancel",IDCANCEL,125,154,57,50 + LISTBOX IDC_LP_RIVER,0,0,182,153,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + CTEXT "Not Selected..",IDC_NOTSELECTED,6,19,164,30,SS_CENTERIMAGE | NOT WS_VISIBLE + PUSHBUTTON "Extrude Edge",IDC_BUTTON_EXTRUDE,0,172,90,14 + PUSHBUTTON "Delete Vertex",IDC_BUTTON_DELETE_VERTEX,90,172,90,14 + PUSHBUTTON "Recalc UV",IDC_BUTTON_RECALC_UV,0,186,90,14 + PUSHBUTTON "Delete River",IDC_BUTTON_DELETE_RIVER,90,186,90,14 + PUSHBUTTON "Recalc Selected Vertex",IDC_BUTTON_RECALCVERTEX,0,156,90,15 + COMBOBOX IDC_COMBO_RIBER,90,155,92,115,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP +END + +IDD_BASE DIALOGEX 0, 0, 234, 387 +STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +FONT 9, "??", 0, 0, 0x1 +BEGIN + EDITTEXT IDC_E_NAME,0,9,234,12,ES_AUTOHSCROLL + LTEXT "Registration information",IDC_STATIC_NAME,0,0,234,8 + LISTBOX IDC_LP_TRANSFORM,0,21,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LISTBOX IDC_LP_SHAPE,0,159,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LISTBOX IDC_LP_CHR,0,214,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_PART_SHAPE,0,147,234,165,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_LOD,114,201,120,165,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_PART_CHARACTER,0,201,111,165,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LP_CAMERA,0,63,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LISTBOX IDC_LP_LIGHT,0,105,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LISTBOX IDC_LP_MATERIAL,0,348,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_PLUG_CHARACTER,0,295,234,165,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LP_CHR_PART,0,253,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LISTBOX IDC_LP_CHR_PLUG,0,309,234,39,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END + +IDD_ADDDTEX DIALOGEX 0, 0, 222, 145 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Add Textures" +FONT 9, "??", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,168,2,50,66 + PUSHBUTTON "Cancel",IDCANCEL,168,74,50,66 + LISTBOX IDC_ADDDTEXLIST,1,1,165,141,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + +IDD_MODIFY_DTEX DIALOGEX 0, 0, 42, 75 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Tile Control" +FONT 9, "??", 0, 0, 0x1 +BEGIN + PUSHBUTTON "CANCEL",IDCANCEL,0,60,42,15 + DEFPUSHBUTTON "MIRROR",ID_MODIFY_DTEX_MIRROR,0,0,42,15 + DEFPUSHBUTTON "CW90D",ID_MODIFY_DTEX_CW90D,0,15,42,15 + DEFPUSHBUTTON "CW180D",ID_MODIFY_DTEX_CW180D,0,30,42,15 + DEFPUSHBUTTON "CW270D",ID_MODIFY_DTEX_CW270D,0,45,42,15 +END + +IDD_BROWSE_PATH DIALOGEX 0, 0, 167, 272 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_APPWINDOW +CAPTION "Browse Path" +FONT 9, "??", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,6,249,72,14 + PUSHBUTTON "Cancel",IDCANCEL,90,249,68,14 + CONTROL "Tree1",IDC_BROWSE_TREE,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_TABSTOP,6,24,153,219 + COMBOBOX IDC_FILELIST,5,5,133,80,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "->",IDC_SYNCH_FOLDERS,144,6,15,14 +END + +IDD_SET_LIGHTMAP DIALOGEX 0, 0, 123, 263 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Draw lightmap" +FONT 9, "??", 0, 0, 0x0 +BEGIN + CONTROL "Slider1",IDC_LM_SLD_PEN_SIZE,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,8,14,108,20 + CONTROL "Slider4",IDC_LM_SLD_HARD,"msctls_trackbar32",WS_TABSTOP,8,67,108,20 + LTEXT "small",IDC_STATIC,14,39,22,8 + LTEXT "large",IDC_STATIC,99,39,17,8 + LTEXT "1%",IDC_STATIC,12,90,11,8 + LTEXT "100%",IDC_STATIC,101,89,19,8 + CONTROL "Paint",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,8,177,46,10 + CONTROL "Erase",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,65,177,46,10 + GROUPBOX "Pen thickness",IDC_STATIC,4,5,117,46 + GROUPBOX "Density",IDC_STATIC,4,58,117,46 + GROUPBOX "Painting method",IDC_STATIC,4,160,117,37 + CONTROL "",IDC_STATIC_SELECTEDCOLOR,"Static",SS_BLACKFRAME,11,216,41,20 + GROUPBOX "Current color",IDC_STATIC,4,203,117,40 + PUSHBUTTON "Choose",IDC_BTN_SELECT_COLOR,61,218,50,14 + LTEXT "You can draw a line with the right mouse button.",IDC_STATIC,2,244,121,19 + CONTROL "Slider4",IDC_LM_SLD_OPACITY,"msctls_trackbar32",WS_TABSTOP,8,117,108,20 + LTEXT "1%",IDC_STATIC,12,139,11,8 + LTEXT "100%",IDC_STATIC,101,139,19,8 + GROUPBOX "Opacity",IDC_STATIC,4,107,117,46 +END + +IDD_LOAD_TILESET DIALOGEX 0, 0, 226, 253 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Load tileset" +FONT 9, "??", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,169,8,50,111 + PUSHBUTTON "Cancel",IDCANCEL,169,134,50,111 + LISTBOX IDC_LIST_LOAD_TILESET,7,7,158,239,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + +IDD_SAVE_NEW_TILESET DIALOGEX 0, 0, 327, 261 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Save tileset with new name" +FONT 9, "??", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Save",IDOK,270,15,50,102 + PUSHBUTTON "Cancel",IDCANCEL,270,143,50,102 + LISTBOX IDC_LIST_TILESET,7,19,255,188,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_EDIT_NEWTILESETNAME,7,227,254,14,ES_AUTOHSCROLL + LTEXT "* Currently existing tile set",IDC_STATIC,7,7,80,8 + LTEXT "* Tileset name to save",IDC_STATIC,7,216,73,8 +END + +IDD_LOAD_NPCPATH DIALOG 0, 0, 231, 209 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Load NPC Path" +FONT 9, "??" +BEGIN + DEFPUSHBUTTON "Load",IDOK,180,6,50,95 + PUSHBUTTON "Cancel",IDCANCEL,180,108,50,95 + LISTBOX IDC_LIST_NPCPATH,1,1,177,207,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + +IDD_SAVE_NPCPATH DIALOG 0, 0, 247, 265 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Save NPC Path" +FONT 9, "??" +BEGIN + DEFPUSHBUTTON "Save",IDOK,190,43,50,74 + PUSHBUTTON "Cancel",IDCANCEL,190,148,50,74 + LISTBOX IDC_LIST_NPCPATHFILENAME,7,7,171,226,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_EDIT_NPCPATHFILENAME,7,244,171,14,ES_AUTOHSCROLL +END + +IDD_SOW_SEED DIALOGEX 0, 0, 301, 229 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "Plant grass" +FONT 9, "??", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_CB_SEED,141,177,149,170,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_TILEGROUP,1,177,137,171,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "* Planted grasses",IDC_STATIC,7,137,66,8 + PUSHBUTTON "Clear",IDC_BTN_DEL_SEED,17,151,33,13 + PUSHBUTTON "Load grass information file",IDC_BTN_GRASSINFOLOAD,153,92,142,17 + PUSHBUTTON "Save game data",IDC_BTN_SAVEGAME,0,201,214,28 + CONTROL "",IDC_STATIC_GRASS,"Static",SS_BLACKFRAME,5,5,130,121 + PUSHBUTTON "Save grass information file",IDC_BTN_GRASSINFOSAVE,154,111,140,16 + GROUPBOX "Tile Detail",IDC_STATIC,153,11,142,32 + GROUPBOX "Brush Size",IDC_STATIC,153,57,142,32 + GROUPBOX "Select",IDC_STATIC,153,135,142,32,WS_GROUP + CONTROL "Planting grass",IDC_RADIO_SOW,"Button",BS_AUTORADIOBUTTON,159,147,56,9 + CONTROL "Select group",IDC_RADIO_SELECT,"Button",BS_AUTORADIOBUTTON,224,147,49,9 + PUSHBUTTON "Close",IDC_SEED_EXIT,223,200,66,28 + PUSHBUTTON "Mix",IDC_BUTTON_RANDOM,89,141,53,24 + CONTROL "Slider1",IDC_S_TILE_DETAIL,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,161,27,128,12 + CONTROL "Slider2",IDC_SOW_BRUSH_SIZE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,161,69,128,12 +END + +IDD_MAKE_WALL DIALOGEX 0, 0, 110, 249 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Creating a wall" +FONT 9, "??", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_EDIT_WALL,2,16,92,14,ES_AUTOHSCROLL + LISTBOX IDC_LIST_WALL,0,69,109,180,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "?",IDC_BTN_WALL_RECORD,8,33,36,14 + PUSHBUTTON "?",IDC_BTN_WALL_EDIT,48,33,36,14 + PUSHBUTTON "Del",IDC_BTN_DELETE,41,53,27,14 + LTEXT "* The wall currently being edited",IDC_STATIC,1,5,109,8 + LTEXT "* Edited walls",IDC_STATIC,2,57,36,8 +END + +IDD_EDIT_EVENT DIALOGEX 0, 0, 106, 373 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Edit event" +FONT 9, "??", 0, 0, 0x0 +BEGIN + LTEXT "* Event currently being edited",IDC_STATIC,3,67,73,8 + LTEXT "* Created events",IDC_STATIC,2,127,57,8 + LISTBOX IDC_EVENT_LIST,3,142,100,228,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "?",IDC_BTN_EVENT_RECORD,3,100,48,14 + PUSHBUTTON "?",IDC_BTN_EVENT_EDIT,55,100,48,14 + PUSHBUTTON "Del",IDC_BTN_EVENT_DEL,64,124,35,13 + LTEXT "NONE",IDC_STATIC_CURR_EVENT,7,81,89,8 + GROUPBOX "* File being edited *",IDC_STATIC,4,4,99,53 + LTEXT "^^",IDC_STATIC_CURR_FILENAME,8,17,91,10 + PUSHBUTTON "Load",IDC_BTN_LOAD_EVTFILE,8,38,41,14 + PUSHBUTTON "Save",IDC_BTN_SAVE_EVTFILE,56,38,41,14 +END + +IDD_EDIT_EVENT_ATTR DIALOGEX 0, 0, 245, 262 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Edit event" +FONT 10, "System", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,191,6,50,192 + PUSHBUTTON "Cancel",IDCANCEL,191,212,50,46 + LTEXT "* Event ID :",IDC_STATIC,3,41,38,8 + EDITTEXT IDC_EDIT_EVENT_ATTR_ID,42,38,42,14,ES_AUTOHSCROLL + LTEXT "* Event Type :",IDC_STATIC,3,58,47,8 + EDITTEXT IDC_EDIT_EVENT_ATTR_TYPE,50,55,42,14,ES_AUTOHSCROLL + LTEXT "* con1 :",IDC_STATIC,3,81,26,8 + LTEXT "* con2 :",IDC_STATIC,3,98,26,8 + LTEXT "* con3 :",IDC_STATIC,3,116,26,8 + LTEXT "* con4 :",IDC_STATIC,3,133,26,8 + LTEXT "* con5 :",IDC_STATIC,3,149,26,8 + LTEXT "* exe1 :",IDC_STATIC,3,179,26,8 + LTEXT "* exe2 :",IDC_STATIC,3,197,26,8 + LTEXT "* exe3 :",IDC_STATIC,3,214,26,8 + LTEXT "* exe4 :",IDC_STATIC,3,231,26,8 + LTEXT "* exe5 :",IDC_STATIC,3,248,26,8 + EDITTEXT IDC_EDIT_EVENT_ATTR_CON1,32,78,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_CON2,32,95,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_CON3,32,112,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_CON4,32,129,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_CON5,32,146,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_EXE1,32,176,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_EXE2,32,193,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_EXE3,32,210,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_EXE4,32,227,150,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_EVENT_ATTR_EXE5,32,244,150,14,ES_AUTOHSCROLL + LTEXT "* Event Name :",IDC_STATIC,3,24,50,8 + EDITTEXT IDC_EDIT_EVENT_ATTR_NAME,53,21,82,14,ES_AUTOHSCROLL + LTEXT "* Zone ID : ",IDC_STATIC,3,6,38,8 + EDITTEXT IDC_EDIT_EVENT_ZONE_ID,41,4,49,14,ES_AUTOHSCROLL +END + +IDD_POND_PROPERTY DIALOGEX 0, 0, 601, 313 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Pond Propertys" +FONT 10, "System", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,0,134,601,101 + PUSHBUTTON "Cancel",IDCANCEL,0,275,601,37 + LISTBOX IDC_LP_POND,0,0,601,132,LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "Edit Pond",IDC_BUTTON_EDITPOND,521,182,80,15 + PUSHBUTTON "Move Pond",IDC_BUTTON_MOVE_POND,0,197,79,14 + PUSHBUTTON "Rearrange",IDC_BUTTON_STATION_POND,0,211,79,15 + PUSHBUTTON "Delete Pond",IDC_BUTTON_DELETE_POND,521,211,80,15 + LTEXT "Static",IDC_WIDTHLENGTH,43,164,41,9 + LTEXT "Static",IDC_HEIGHTLENGTH,563,164,38,9 + LTEXT "x-distance:",IDC_STATICNAME1,6,164,35,9 + LTEXT "y-distance:",IDC_STATICNAME2,80,164,38,8 + PUSHBUTTON "UV reorganization",IDC_BU_RECALCUV,0,182,79,15 + PUSHBUTTON "Group",IDC_GROUP,521,197,80,14 + GROUPBOX "Distance between cells",IDC_STATIC3,444,153,157,25 + COMBOBOX IDC_COMBO_GOPOND,80,136,73,76,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "Select pond",IDC_STATIC4,5,138,70,11 +END + +IDD_LOAD_EVENT DIALOG 0, 0, 187, 217 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 9, "??" +BEGIN + DEFPUSHBUTTON "OK",IDOK,141,8,43,55 PUSHBUTTON "Cancel",IDCANCEL,141,69,43,55 - LISTBOX IDC_LIST_SAVED_EVT_FILE,3,4,135,209,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_SAVED_EVT_FILE,3,4,135,209,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP END -IDD_SAVE_EVENT DIALOG DISCARDABLE 0, 0, 187, 283 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_SAVE_EVENT DIALOGEX 0, 0, 187, 283 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Save Event File " -FONT 9, "µ¸¿ò" +FONT 9, "??", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,137,172,47,51 PUSHBUTTON "Cancel",IDCANCEL,137,227,47,51 - LISTBOX IDC_LIST_SAVED_EVT_FILE,3,16,131,232,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_SAVED_EVT_FILE,3,16,131,232,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP EDITTEXT IDC_EDIT_NEW_EVT_FILE,3,265,131,14,ES_AUTOHSCROLL - LTEXT "* ÇöÀç ÀÖ´Â ÆÄÀϵé",IDC_STATIC,2,5,59,8 - LTEXT "* ÀúÀåÇÒ ÆÄÀÏ À̸§",IDC_STATIC,2,255,59,8 + LTEXT "* Current files",IDC_STATIC,2,5,59,8 + LTEXT "* File name to save",IDC_STATIC,2,255,90,8 END -IDD_UNUSED_FILES DIALOG DISCARDABLE 0, 0, 379, 363 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "¾È¾²´Â ÆÄÀÏ Áö¿ì±â" -FONT 9, "µ¸¿ò" +IDD_UNUSED_FILES DIALOGEX 0, 0, 379, 363 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Delete unused files" +FONT 9, "??", 0, 0, 0x0 BEGIN - LISTBOX IDC_LIST_FILES,3,15,372,179,LBS_SORT | - LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | - WS_TABSTOP - PUSHBUTTON "¼±ÅÃµÈ ÆÄÀÏ Áö¿ì±â",IDC_DELETE,3,197,312,30 - PUSHBUTTON "´Ý±â",ID_CANCEL,315,197,60,30 - LTEXT "¿¡·¯ ÀÖ´Â ¿ÀºêÁ§Æ®",IDC_STATIC,3,237,63,9 - LISTBOX IDC_LIST_INVALID_OBJECTS,3,249,372,111,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_FILES,3,15,372,179,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Clear selected files",IDC_DELETE,3,197,312,30 + PUSHBUTTON "Close",ID_CANCEL,315,197,60,30 + LTEXT "Object with error",IDC_STATIC,3,237,63,9 + LISTBOX IDC_LIST_INVALID_OBJECTS,3,249,372,111,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP END -IDD_MAKE_REGEN_USER DIALOG DISCARDABLE 0, 0, 125, 311 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_MAKE_REGEN_USER DIALOGEX 0, 0, 125, 311 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Make Region Regen User" -FONT 9, "µ¸¿ò" +FONT 9, "??", 0, 0, 0x0 BEGIN - LTEXT "* ¹èÄ¡µÈ REGION",-1,3,85,55,8 - LISTBOX IDC_LIST_REGENUSERREGION,1,97,122,211,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "ºÒ·¯¿À±â",IDC_BTN_LOAD_PATHSET,13,62,31,14 - PUSHBUTTON "ÀúÀåÇϱâ",IDC_BTN_SAVE_PATHSET,46,62,32,14 - LTEXT "* ÇöÀç ÆÄÀÏÀ̸§",-1,3,13,50,8 - GROUPBOX "* ÆÄÀϰü¸® *",-1,1,1,122,79 - PUSHBUTTON "»õÀ̸§ÀúÀå",IDC_BTN_SAVE_AS,80,62,41,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_PATH_DELETE,63,83,27,13 - EDITTEXT IDC_EDT_PATHNAME,3,25,118,32,ES_MULTILINE | ES_READONLY | - NOT WS_BORDER + LTEXT "* Placed REGION",-1,3,85,56,8 + LISTBOX IDC_LIST_REGENUSERREGION,1,97,122,211,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Load",IDC_BTN_LOAD_PATHSET,3,63,31,14 + PUSHBUTTON "Save",IDC_BTN_SAVE_PATHSET,36,63,32,14 + LTEXT "* Current file name",-1,3,13,50,8 + GROUPBOX "* File Management *",-1,1,1,122,79 + PUSHBUTTON "Save new name",IDC_BTN_SAVE_AS,69,63,53,14 + PUSHBUTTON "Del",IDC_BTN_PATH_DELETE,63,83,27,13 + EDITTEXT IDC_EDT_PATHNAME,3,25,118,32,ES_MULTILINE | ES_READONLY | NOT WS_BORDER END IDD_SHAPE_LIST DIALOGEX 0, 0, 166, 336 -STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +STYLE DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW CAPTION "Shape List" -FONT 9, "±¼¸²", 0, 0, 0x1 +FONT 9, "??", 0, 0, 0x1 BEGIN - CONTROL "",IDC_PREVIEW,"Static",SS_GRAYFRAME,3,233,88,98 - LISTBOX IDC_LIST_OBJ,0,18,165,212,LBS_SORT | - LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | - WS_TABSTOP - PUSHBUTTON "Á¤ ·Ä",IDC_BTN_SORT,0,0,50,14 + CONTROL "",IDC_PREVIEW,"Static",SS_GRAYFRAME,0,233,166,98 + LISTBOX IDC_LIST_OBJ,0,18,165,212,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Sort",IDC_BTN_SORT,0,0,50,14 END -IDD_EDIT_WARP DIALOG DISCARDABLE 0, 0, 173, 375 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "set warp " -FONT 9, "µ¸¿ò" +IDD_EDIT_WARP DIALOGEX 0, 0, 173, 375 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Set warp " +FONT 9, "??", 0, 0, 0x0 BEGIN - DEFPUSHBUTTON "´Ý±â",IDOK,127,360,45,14 + DEFPUSHBUTTON "Close",IDOK,127,360,45,14 EDITTEXT IDC_EDIT_ID,41,9,40,14,ES_AUTOHSCROLL LTEXT "ID :",IDC_STATIC,23,9,12,8 - LTEXT "À̸§ :",IDC_STATIC,16,25,19,8 + LTEXT "Name:",IDC_STATIC,14,25,21,8 EDITTEXT IDC_EDIT_NAME,41,25,128,14,ES_AUTOHSCROLL - LTEXT "µ¿Àǹ® :",IDC_STATIC,9,41,26,8 - EDITTEXT IDC_EDIT_AGREE,41,41,128,86,ES_MULTILINE | - ES_AUTOVSCROLL + LTEXT "Agreement:",IDC_STATIC,3,41,36,8 + EDITTEXT IDC_EDIT_AGREE,41,41,128,86,ES_MULTILINE | ES_AUTOVSCROLL EDITTEXT IDC_EDIT_MONEY,41,130,40,14,ES_AUTOHSCROLL - LTEXT "µ· :",IDC_STATIC,23,130,12,8 + LTEXT "Money:",IDC_STATIC,8,130,27,8 EDITTEXT IDC_EDIT_ZONE,41,147,40,14,ES_AUTOHSCROLL LTEXT "Zone ID :",IDC_STATIC,2,147,31,8 EDITTEXT IDC_EDIT_POS_X,41,164,40,14,ES_AUTOHSCROLL @@ -918,62 +1162,56 @@ BEGIN EDITTEXT IDC_EDIT_POS_Z,129,164,40,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_RAD,41,181,40,14,ES_AUTOHSCROLL LTEXT "Rad. :",IDC_STATIC,15,181,20,8 - LISTBOX IDC_LIST_WARP,0,216,172,140,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_WARP,0,216,172,140,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP LTEXT "List",IDC_STATIC,3,204,12,8 - PUSHBUTTON "Áö¿ì±â",IDC_BTN_DELETE,24,202,29,14 - PUSHBUTTON "¡å",IDC_BTN_UPDATE,88,202,29,14 - PUSHBUTTON "¡ã",IDC_BTN_EDIT,56,202,29,14 + PUSHBUTTON "Clear",IDC_BTN_DELETE,24,202,29,14 + PUSHBUTTON "?",IDC_BTN_UPDATE,88,202,29,14 + PUSHBUTTON "?",IDC_BTN_EDIT,56,202,29,14 GROUPBOX "edit..",IDC_STATIC,0,0,172,199 PUSHBUTTON "Export",IDC_BTN_EXPORT,1,360,41,14 PUSHBUTTON "Import",IDC_BTN_IMPORT,47,360,41,14 END -IDD_SAVE_DIVIDE DIALOG DISCARDABLE 0, 0, 368, 423 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Àß¶ó¼­ ÀúÀåÇϱâ" -FONT 9, "µ¸¿òü" +IDD_SAVE_DIVIDE DIALOGEX 0, 0, 368, 423 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Save after cutting" +FONT 9, "???", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Save",IDOK,316,409,50,14 PUSHBUTTON "Cancel",IDCANCEL,1,409,50,14 - LTEXT "*Àüü ¸ÊÀÇ Å©±â:",IDC_STATIC,4,4,64,8 - LTEXT "4096m",IDC_STC_TOTAL_SIZE,69,4,21,8 - COMBOBOX IDC_CB_DIVISION,133,0,67,122,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - LTEXT "*³ª´©±â:",IDC_STATIC,100,4,32,8 - CONTROL "",IDC_STATIC_MINIMAP,"Static",SS_BLACKFRAME,0,17,368, - 389 + LTEXT "*Size of the entire map:",IDC_STATIC,4,4,79,8 + LTEXT "4096m",IDC_STC_TOTAL_SIZE,83,4,36,8 + COMBOBOX IDC_CB_DIVISION,169,1,67,122,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "*divide:",IDC_STATIC,133,4,32,8 + CONTROL "",IDC_STATIC_MINIMAP,"Static",SS_BLACKFRAME,0,17,368,389 END -IDD_CONTROL_HEIGHT_SCALE DIALOG DISCARDABLE 0, 0, 83, 231 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "³ôÀÌ ½ºÄÉÀÏ Á¶Á¤" -FONT 9, "µ¸¿òü" +IDD_CONTROL_HEIGHT_SCALE DIALOGEX 0, 0, 83, 231 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Height scale" +FONT 9, "???", 0, 0, 0x0 BEGIN - CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_VERT | TBS_BOTH | WS_TABSTOP,5,0,37,231 + CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,5,0,37,231 END -IDD_EDIT_BGM DIALOG DISCARDABLE 0, 0, 298, 339 -STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "ȯ°æ ¼Ò¸®È¿°ú ¼³Á¤Çϱâ" -FONT 9, "µ¸¿ò" +IDD_EDIT_BGM DIALOGEX 0, 0, 298, 339 +STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Set environmental sound effects" +FONT 9, "??", 0, 0, 0x0 BEGIN - LISTBOX IDC_LIST_SOUNDGROUP,5,13,90,306,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_SOUNDGROUP,5,13,90,306,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP LTEXT "none",IDC_BGM_NAME1,109,17,153,8 LTEXT "Static",IDC_BGM_NAME2,109,33,153,8 LTEXT "Static",IDC_BGM_NAME3,109,49,153,8 LTEXT "Static",IDC_BGM_NAME4,109,65,153,8 - GROUPBOX "* À½¾Ç *",IDC_STATIC,103,4,192,78,BS_CENTER - PUSHBUTTON "Ãß°¡",IDC_BTN_ADD_SOUNDGROUP,7,321,26,14 + GROUPBOX "* Music *",IDC_STATIC,103,4,192,78,BS_CENTER + PUSHBUTTON "Add",IDC_BTN_ADD_SOUNDGROUP,7,321,26,14 LTEXT "Static",IDC_BGE_NAME1,109,101,153,8 LTEXT "Static",IDC_BGE_NAME2,109,117,153,8 LTEXT "Static",IDC_BGE_NAME3,109,133,153,8 LTEXT "Static",IDC_BGE_NAME4,109,149,153,8 - GROUPBOX "* È¿°ú *",IDC_STATIC,103,87,192,78,BS_CENTER - LISTBOX IDC_LIST_SOUNDINFO,126,178,165,155,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + GROUPBOX "* Effect *",IDC_STATIC,103,87,192,78,BS_CENTER + LISTBOX IDC_LIST_SOUNDINFO,126,178,165,155,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP LTEXT "Static",IDC_BGM_REGENTIME1,268,17,19,8 LTEXT "Static",IDC_BGM_REGENTIME2,268,33,19,8 LTEXT "Static",IDC_BGM_REGENTIME3,268,49,19,8 @@ -982,164 +1220,156 @@ BEGIN LTEXT "Static",IDC_BGE_REGENTIME2,268,117,19,8 LTEXT "Static",IDC_BGE_REGENTIME3,268,133,19,8 LTEXT "Static",IDC_BGE_REGENTIME4,268,149,19,8 - PUSHBUTTON "»èÁ¦",IDC_BTN_DELETE_SOUNDGROUP,35,321,26,14 + PUSHBUTTON "Del",IDC_BTN_DELETE_SOUNDGROUP,35,321,26,14 PUSHBUTTON "->",IDC_BTN_INPUT_INFO,106,180,17,18 - GROUPBOX "* ÆíÁýµÈ ¼Ò¸® Á¤º¸ *",IDC_STATIC,103,167,192,170, - BS_CENTER - PUSHBUTTON "ÆíÁý",IDC_BTN_INPUT_INFO_EDIT,106,202,17,18 - PUSHBUTTON "»èÁ¦",IDC_BTN_INPUT_INFO_DEL,106,224,17,18 - GROUPBOX "* ¼Ò¸® ¹­À½ ¸ñ·Ï *",IDC_STATIC,2,4,97,334,BS_CENTER - PUSHBUTTON "¼öÁ¤",IDC_BTN_MODIFY_SOUNDGROUP,63,321,26,14 + GROUPBOX "* Edited sound information *",IDC_STATIC,103,167,192,170,BS_CENTER + PUSHBUTTON "Edit",IDC_BTN_INPUT_INFO_EDIT,106,202,17,18 + PUSHBUTTON "Del",IDC_BTN_INPUT_INFO_DEL,106,224,17,18 + GROUPBOX "*List of sound bundles*",IDC_STATIC,2,4,97,334,BS_CENTER + PUSHBUTTON "Edit",IDC_BTN_MODIFY_SOUNDGROUP,63,321,26,14 END -IDD_ADD_SOUNDGROUP DIALOG DISCARDABLE 0, 0, 255, 233 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "¼Ò¸®¹­À½Ãß°¡" -FONT 9, "µ¸¿ò" +IDD_ADD_SOUNDGROUP DIALOGEX 0, 0, 262, 233 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Add sound bundle" +FONT 9, "??", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,195,214,52,16 PUSHBUTTON "Cancel",IDCANCEL,136,214,52,16 - LTEXT "¹­À½À̸§ :",IDC_STATIC,3,3,32,8 - EDITTEXT IDC_EDT_GROUPNAME,37,0,215,14,ES_AUTOHSCROLL - GROUPBOX "* À½¾Ç *",IDC_STATIC,0,21,255,91 - LTEXT "- ÆÄÀÏÀ̸§ -",IDC_STATIC,5,34,40,8 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGM_NAME1,192,46,30,14 + LTEXT "Bundle name:",IDC_STATIC,3,3,45,8 + EDITTEXT IDC_EDT_GROUPNAME,53,1,197,14,ES_AUTOHSCROLL + GROUPBOX "* Music *",IDC_STATIC,0,21,262,91 + LTEXT "- File name -",IDC_STATIC,5,34,40,8 + PUSHBUTTON "Find file",IDC_BTN_BGM_NAME1,192,46,30,14 LTEXT "none",IDC_BGM_NAME1,5,46,153,8 LTEXT "Static",IDC_BGM_NAME2,5,62,153,8 LTEXT "Static",IDC_BGM_NAME3,5,78,153,8 LTEXT "Static",IDC_BGM_NAME4,5,94,153,8 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGM_NAME2,192,62,30,14 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGM_NAME3,192,78,30,14 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGM_NAME4,192,94,30,14 - EDITTEXT IDC_EDT_BGM_REGEN1,225,46,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGM_REGEN2,225,62,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGM_REGEN3,225,78,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGM_REGEN4,225,94,27,14,ES_AUTOHSCROLL - LTEXT "- ¸®Á¨Å¸ÀÓ -",IDC_STATIC,206,34,40,8 - GROUPBOX "* È¿°ú *",IDC_STATIC,0,117,255,91 - LTEXT "- ÆÄÀÏÀ̸§ -",IDC_STATIC,5,129,40,8 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGE_NAME1,192,141,30,14 + PUSHBUTTON "Find file",IDC_BTN_BGM_NAME2,192,62,30,14 + PUSHBUTTON "Find file",IDC_BTN_BGM_NAME3,192,78,30,14 + PUSHBUTTON "Find file",IDC_BTN_BGM_NAME4,192,94,30,14 + EDITTEXT IDC_EDT_BGM_REGEN1,225,46,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGM_REGEN2,225,62,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGM_REGEN3,225,78,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGM_REGEN4,225,94,30,14,ES_AUTOHSCROLL + LTEXT "- Regentime -",IDC_STATIC,201,34,45,8 + GROUPBOX "* Effect *",IDC_STATIC,0,117,262,91 + LTEXT "- File name -",IDC_STATIC,5,129,40,8 + PUSHBUTTON "Find file",IDC_BTN_BGE_NAME1,192,141,30,14 LTEXT "none",IDC_BGE_NAME1,5,141,153,8 LTEXT "Static",IDC_BGE_NAME2,5,157,153,8 LTEXT "Static",IDC_BGE_NAME3,5,173,153,8 LTEXT "Static",IDC_BGE_NAME4,5,189,153,8 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGE_NAME2,192,157,30,14 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGE_NAME3,192,173,30,14 - PUSHBUTTON "ÆÄÀÏã±â",IDC_BTN_BGE_NAME4,192,189,30,14 - EDITTEXT IDC_EDT_BGE_REGEN1,225,141,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGE_REGEN2,225,157,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGE_REGEN3,225,173,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_BGE_REGEN4,225,189,27,14,ES_AUTOHSCROLL - LTEXT "- ¸®Á¨Å¸ÀÓ -",IDC_STATIC,206,129,40,8 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGM_NAME1,170,46,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGM_NAME2,170,62,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGM_NAME3,170,78,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGM_NAME4,170,94,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGE_NAME1,170,142,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGE_NAME2,170,158,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGE_NAME3,170,174,20,14 - PUSHBUTTON "»èÁ¦",IDC_BTN_DEL_BGE_NAME4,170,190,20,14 -END - -IDD_ALL_MAP_VIEW DIALOG DISCARDABLE 0, 0, 257, 276 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION -CAPTION "Àüü ¸Ê º¸±â" -FONT 10, "System" + PUSHBUTTON "Find file",IDC_BTN_BGE_NAME2,192,157,30,14 + PUSHBUTTON "Find file",IDC_BTN_BGE_NAME3,192,173,30,14 + PUSHBUTTON "Find file",IDC_BTN_BGE_NAME4,192,189,30,14 + EDITTEXT IDC_EDT_BGE_REGEN1,225,141,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGE_REGEN2,225,157,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGE_REGEN3,225,173,30,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_BGE_REGEN4,225,189,30,14,ES_AUTOHSCROLL + LTEXT "- Regentime -",IDC_STATIC,206,129,40,8 + PUSHBUTTON "Del",IDC_BTN_DEL_BGM_NAME1,170,46,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGM_NAME2,170,62,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGM_NAME3,170,78,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGM_NAME4,170,94,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGE_NAME1,170,142,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGE_NAME2,170,158,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGE_NAME3,170,174,20,14 + PUSHBUTTON "Del",IDC_BTN_DEL_BGE_NAME4,170,190,20,14 +END + +IDD_ALL_MAP_VIEW DIALOGEX 0, 0, 257, 276 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "View full map" +FONT 10, "System", 0, 0, 0x0 BEGIN CONTROL "",IDC_MAP_VIEW,"Static",SS_BLACKFRAME,0,0,256,256 - PUSHBUTTON "¸Ê ¾÷µ¥ÀÌÆ®",IDC_MAP_UPDATA,39,260,76,12 + PUSHBUTTON "Map update",IDC_MAP_UPDATA,42,259,76,12 PUSHBUTTON "CANCEL",IDC_MAP_VIEW_CANCEL,119,259,76,12 END -IDD_LIGHT DIALOG DISCARDABLE 0, 0, 139, 329 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_LIGHT DIALOG 0, 0, 139, 329 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Lights" -FONT 9, "µ¸¿ò" +FONT 9, "??" BEGIN DEFPUSHBUTTON "OK",IDOK,0,0,6,6,NOT WS_VISIBLE PUSHBUTTON "Import",IDC_BTN_IMPORT,67,37,33,11 PUSHBUTTON "Export",IDC_BTN_EXPORT,103,37,33,11 LTEXT "^^",IDC_PATHNAME,4,12,131,20 GROUPBOX "",IDC_STATIC,0,0,138,51,BS_LEFT - LISTBOX IDC_LIST_LIGHTS,0,145,138,183,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LISTBOX IDC_LIST_LIGHTS,0,145,138,183,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP CONTROL "",IDC_STC_COLOR,"Static",SS_BLACKFRAME,27,74,107,14 - CONTROL "Slider1",IDC_SLD_RANGE,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,29,90,106,15 + CONTROL "Slider1",IDC_SLD_RANGE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,29,90,106,15 LTEXT "Color :",IDC_STATIC,2,77,23,8 EDITTEXT IDC_EDT_NAME,27,57,107,14,ES_AUTOHSCROLL GROUPBOX "",IDC_STATIC,0,49,138,77 LTEXT "Name :",IDC_STATIC,2,60,23,8 LTEXT "Range :",IDC_STATIC,2,94,26,8 - CONTROL "Slider1",IDC_SLD_ATTEN,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,44,108,91,15 + CONTROL "Slider1",IDC_SLD_ATTEN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,44,108,91,15 LTEXT "Attenuation :",IDC_STATIC,2,111,41,8 - PUSHBUTTON "¡ã",IDC_BTN_DOWNLOAD,1,129,43,14 - PUSHBUTTON "¡å",IDC_BTN_UPLOAD,47,129,43,14 + PUSHBUTTON "?",IDC_BTN_DOWNLOAD,1,129,43,14 + PUSHBUTTON "?",IDC_BTN_UPLOAD,47,129,43,14 PUSHBUTTON "Delete",IDC_BTN_DELETE,93,129,43,14 END - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,4,2,1440 - PRODUCTVERSION 2,4,2,1440 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L +IDD_MAKE_NPCPATH DIALOGEX 0, 0, 163, 571 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Make NPC Path " +FONT 9, "µ¸¿ò", 0, 0, 0x0 BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", "noah system\0" - VALUE "FileDescription", "N3ME_debug\0" - VALUE "FileVersion", "2, 4, 2, 1440\0" - VALUE "InternalName", "N3ME_debug\0" - VALUE "LegalCopyright", "Copyright ¨Ï 2002\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "N3ME_debug.exe\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "noah system N3ME_debug\0" - VALUE "ProductVersion", "2, 4, 2, 1440\0" - VALUE "SpecialBuild", "\0" - END - BLOCK "041204b0" - BEGIN - VALUE "Comments", "\0" - VALUE "CompanyName", "\0" - VALUE "FileDescription", "NoahSystem 3D Map Editor\0" - VALUE "FileVersion", "2, 4, 2, 1440\0" - VALUE "InternalName", "N3ME\0" - VALUE "LegalCopyright", "Copyright (C) 2001\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "N3ME.EXE\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "N3MapEditor\0" - VALUE "ProductVersion", "2, 4, 2, 1440\0" - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200, 0x412, 1200 - END + CONTROL "Edit Start Region",IDC_RDO_START_RGN,"Button",BS_AUTORADIOBUTTON | WS_GROUP,11,252,66,10 + CONTROL "Make Path",IDC_RDO_MAKE_PATH,"Button",BS_AUTORADIOBUTTON,11,264,50,10 + CONTROL "Edit Action Region",IDC_RDO_MAKE_ACT_RGN,"Button",BS_AUTORADIOBUTTON,11,277,75,10 + COMBOBOX IDC_COMBO_NPC,4,112,145,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "NPC Type :",IDC_STATIC,5,99,38,8 + EDITTEXT IDC_EDIT_NUM_NPC,46,131,31,14,ES_AUTOHSCROLL + PUSHBUTTON "?",IDC_BTN_RECORD,2,337,72,14 + LTEXT "* NPC paths..",IDC_STATIC,6,357,46,8 + LISTBOX IDC_LIST_NPCPATH,3,369,158,180,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Load",IDC_BTN_LOAD_PATHSET,4,39,31,14 + PUSHBUTTON "Save",IDC_BTN_SAVE_PATHSET,37,39,32,14 + LTEXT "* Current file name",IDC_STATIC,3,12,50,8 + LTEXT "/npclist/pathset.txt",IDC_PATHSETNAME,4,24,117,8 + GROUPBOX "* File *",IDC_STATIC,0,1,159,58 + LTEXT "regen time :",IDC_STATIC,5,149,39,8 + EDITTEXT IDC_EDIT_REGENTIME,46,147,31,14,ES_AUTOHSCROLL + LTEXT "sec.",IDC_STATIC,79,149,15,8 + LTEXT "Action Type:",IDC_STATIC,5,167,41,8 + COMBOBOX IDC_COMBO_ACTIONTYPE,48,164,73,95,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "How many? :",IDC_STATIC,2,133,42,8 + PUSHBUTTON "Save Server Data",IDC_BTN_SAVE_SERVER_PATHSET,71,39,61,14 + PUSHBUTTON "?",IDC_BTN_PATH_MODIFY,78,337,72,14 + PUSHBUTTON "Del",IDC_BTN_PATH_DELETE,59,354,27,13 + GROUPBOX "",IDC_STATIC,3,243,147,48 + EDITTEXT IDC_EDT_NPCPATHNAME,4,319,146,14,ES_AUTOHSCROLL + LTEXT "* Current NPC path name",IDC_STATIC,6,307,82,8 + LTEXT "* remaining path :",IDC_STATIC,6,294,58,8 + LTEXT "32",IDC_NUM_POINT,67,294,8,8 + GROUPBOX "View Movable Region",IDC_STATIC,0,63,162,31 + CONTROL "No",IDC_RDO_VIEW_NONMOVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,77,25,10 + CONTROL "Yes",IDC_RDO_VIEW_NONE,"Button",BS_AUTORADIOBUTTON,56,77,29,10 + PUSHBUTTON "color",IDC_BTN_SETCOLOR,119,302,33,14 + PUSHBUTTON "Load NPC Type",IDC_BTN_LOAD_NPCLIST,89,97,61,14 + EDITTEXT IDC_EDT_TRANS_X,12,554,27,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDT_TRANS_Z,52,554,27,14,ES_AUTOHSCROLL + PUSHBUTTON "Move Whole NPC Path",IDC_BTN_TRANS,82,554,78,15,WS_DISABLED + LTEXT "x",IDC_STATIC,4,554,8,8 + LTEXT "z",IDC_STATIC,46,554,8,8 + LTEXT "Group Attr.:",IDC_STATIC,2,183,38,8 + COMBOBOX IDC_COMBO_NPC_ATTR_GROUP,41,181,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + LTEXT "Regen Attr.:",IDC_STATIC,2,198,39,8 + COMBOBOX IDC_COMBO_NPC_ATTR_REGEN,41,196,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + LTEXT "Create Attr.:",IDC_STATIC,2,213,39,8 + COMBOBOX IDC_COMBO_NPC_ATTR_CREATE,41,211,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "load",IDC_BTN_LOAD_GROUP,140,179,20,14 + PUSHBUTTON "load",IDC_BTN_LOAD_REGEN,140,195,20,14 + PUSHBUTTON "load",IDC_BTN_LOAD_CREATE,140,211,20,14 + LTEXT "Option:",IDC_STATIC,2,228,24,8 + COMBOBOX IDC_COMBO_NPC_OPTION,41,225,97,179,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "load",IDC_BTN_LOAD_OPTION,140,225,20,14 END -#endif // !_MAC - ///////////////////////////////////////////////////////////////////////////// // @@ -1147,7 +1377,7 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE +GUIDELINES DESIGNINFO BEGIN IDD_ABOUTBOX, DIALOG BEGIN @@ -1157,6 +1387,10 @@ BEGIN BOTTOMMARGIN, 48 END + IDR_MAINFRAME, DIALOG + BEGIN + END + IDD_SCENE_GRAPH, DIALOG BEGIN LEFTMARGIN, 7 @@ -1167,7 +1401,7 @@ BEGIN IDD_BRUSH, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 119 + RIGHTMARGIN, 168 TOPMARGIN, 7 BOTTOMMARGIN, 165 END @@ -1185,6 +1419,14 @@ BEGIN LEFTMARGIN, 7 END + IDD_INPUT_ATTR, DIALOG + BEGIN + END + + IDD_INPUT_GROUP, DIALOG + BEGIN + END + IDD_DEL_GROUP, DIALOG BEGIN LEFTMARGIN, 7 @@ -1195,13 +1437,14 @@ BEGIN IDD_DTEX_GROUP, DIALOG BEGIN + RIGHTMARGIN, 147 BOTTOMMARGIN, 482 END IDD_RIVER_PROPERTY, DIALOG BEGIN RIGHTMARGIN, 182 - BOTTOMMARGIN, 203 + BOTTOMMARGIN, 204 END IDD_BASE, DIALOG @@ -1212,78 +1455,137 @@ BEGIN BOTTOMMARGIN, 380 END - IDD_ADDDTEX, DIALOG + IDD_ADDDTEX, DIALOG + BEGIN + LEFTMARGIN, 7 + END + + IDD_MODIFY_DTEX, DIALOG + BEGIN + RIGHTMARGIN, 36 + BOTTOMMARGIN, 52 + END + + IDD_BROWSE_PATH, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 160 + TOPMARGIN, 7 + BOTTOMMARGIN, 265 + END + + IDD_SET_LIGHTMAP, DIALOG + BEGIN + END + + IDD_LOAD_TILESET, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 219 + TOPMARGIN, 7 + BOTTOMMARGIN, 246 + END + + IDD_SAVE_NEW_TILESET, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 320 + TOPMARGIN, 7 + BOTTOMMARGIN, 254 + END + + IDD_LOAD_NPCPATH, DIALOG + BEGIN + END + + IDD_SAVE_NPCPATH, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 258 + END + + IDD_SOW_SEED, DIALOG + BEGIN + END + + IDD_MAKE_WALL, DIALOG + BEGIN + RIGHTMARGIN, 93 + END + + IDD_EDIT_EVENT, DIALOG + BEGIN + BOTTOMMARGIN, 372 + END + + IDD_EDIT_EVENT_ATTR, DIALOG + BEGIN + END + + IDD_POND_PROPERTY, DIALOG + BEGIN + BOTTOMMARGIN, 312 + END + + IDD_LOAD_EVENT, DIALOG + BEGIN + END + + IDD_SAVE_EVENT, DIALOG + BEGIN + BOTTOMMARGIN, 280 + END + + IDD_UNUSED_FILES, DIALOG + BEGIN + END + + IDD_MAKE_REGEN_USER, DIALOG + BEGIN + END + + IDD_SHAPE_LIST, DIALOG BEGIN - LEFTMARGIN, 7 END - IDD_MODIFY_DTEX, DIALOG + IDD_EDIT_WARP, DIALOG BEGIN - RIGHTMARGIN, 36 - BOTTOMMARGIN, 52 END - IDD_BROWSE_PATH, DIALOG + IDD_SAVE_DIVIDE, DIALOG BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 160 - TOPMARGIN, 7 - BOTTOMMARGIN, 265 END - IDD_LOAD_TILESET, DIALOG + IDD_CONTROL_HEIGHT_SCALE, DIALOG BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 219 - TOPMARGIN, 7 - BOTTOMMARGIN, 246 END - IDD_SAVE_NEW_TILESET, DIALOG + IDD_EDIT_BGM, DIALOG BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 320 - TOPMARGIN, 7 - BOTTOMMARGIN, 254 END - IDD_SAVE_NPCPATH, DIALOG + IDD_ADD_SOUNDGROUP, DIALOG BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 240 - TOPMARGIN, 7 - BOTTOMMARGIN, 258 + RIGHTMARGIN, 255 END - IDD_EDIT_EVENT, DIALOG + IDD_ALL_MAP_VIEW, DIALOG BEGIN - BOTTOMMARGIN, 372 END - IDD_POND_PROPERTY, DIALOG + IDD_LIGHT, DIALOG BEGIN - BOTTOMMARGIN, 227 END - IDD_SAVE_EVENT, DIALOG + IDD_MAKE_NPCPATH, DIALOG BEGIN - BOTTOMMARGIN, 280 END END #endif // APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Cursor -// - -IDC_MOVE CURSOR DISCARDABLE "res\\move.cur" -IDC_ROTATE CURSOR DISCARDABLE "res\\rotate.cur" -IDC_ZOOM CURSOR DISCARDABLE "res\\zoom.cur" -IDC_TRANSFORM CURSOR DISCARDABLE "res\\transform.cur" -IDC_LOAD CURSOR DISCARDABLE "res\\load.cur" - ///////////////////////////////////////////////////////////////////////////// // // Dialog Info @@ -1312,359 +1614,165 @@ END ///////////////////////////////////////////////////////////////////////////// // -// String Table +// AFX_DIALOG_LAYOUT // -STRINGTABLE PRELOAD DISCARDABLE +IDD_ABOUTBOX AFX_DIALOG_LAYOUT BEGIN - IDR_MAINFRAME "N3ME\n\nN3ME\nN3ME ÆÄÀÏ (*.n3m)\n.n3m\nN3ME.Document\nN3ME Document" + 0 END -STRINGTABLE PRELOAD DISCARDABLE +IDD_ADD_SOUNDGROUP AFX_DIALOG_LAYOUT BEGIN - AFX_IDS_APP_TITLE "N3ME" - AFX_IDS_IDLEMESSAGE "Áغñ" + 0 END -STRINGTABLE DISCARDABLE +IDD_ADDDTEX AFX_DIALOG_LAYOUT BEGIN - ID_INDICATOR_EXT "EXT" - ID_INDICATOR_CAPS "CAP" - ID_INDICATOR_NUM "NUM" - ID_INDICATOR_SCRL "SCRL" - ID_INDICATOR_OVR "OVR" - ID_INDICATOR_REC "REC" + 0 END -STRINGTABLE DISCARDABLE +IDD_ALL_MAP_VIEW AFX_DIALOG_LAYOUT BEGIN - ID_FILE_NEW "»õ ¹®¼­¸¦ ÀÛ¼ºÇÕ´Ï´Ù\n»õ ÆÄÀÏ" - ID_FILE_OPEN "±âÁ¸ ¹®¼­¸¦ ¿±´Ï´Ù\n¿­±â" - ID_FILE_CLOSE "ÇöÀç ¿­¸° ¹®¼­¸¦ ´Ý½À´Ï´Ù\n´Ý±â" - ID_FILE_SAVE "ÇöÀç ¿­¸° ¹®¼­¸¦ ÀúÀåÇÕ´Ï´Ù\nÀúÀå" - ID_FILE_SAVE_AS "ÇöÀç ¿­¸° ¹®¼­¸¦ ´Ù¸¥ À̸§À¸·Î ÀúÀåÇÕ´Ï´Ù\n´Ù¸¥ À̸§À¸·Î ÀúÀå" + 0 END -STRINGTABLE DISCARDABLE +IDD_BASE AFX_DIALOG_LAYOUT BEGIN - ID_APP_ABOUT "ÇÁ·Î±×·¥ Á¤º¸¿Í ¹öÀü Á¤º¸, ÀúÀÛ±Ç Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù\nÁ¤º¸" - ID_APP_EXIT "ÀÀ¿ë ÇÁ·Î±×·¥À» Á¾·áÇϱâ À§ÇØ ¹®¼­¸¦ ÀúÀåÇÒ °ÍÀÎÁö ¹¯½À´Ï´Ù\nÁ¾·á" + 0 END -STRINGTABLE DISCARDABLE +IDD_BRUSH AFX_DIALOG_LAYOUT BEGIN - ID_FILE_MRU_FILE1 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE2 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE3 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE4 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE5 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE6 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE7 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE8 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE9 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE10 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE11 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE12 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE13 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE14 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE15 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" - ID_FILE_MRU_FILE16 "ÀÌ ¹®¼­¸¦ ¿±´Ï´Ù" + 0 END -STRINGTABLE DISCARDABLE +IDD_CONTROL_HEIGHT_SCALE AFX_DIALOG_LAYOUT BEGIN - ID_NEXT_PANE "´ÙÀ½ âÀ¸·Î ÀüȯÇÕ´Ï´Ù\n´ÙÀ½ â" - ID_PREV_PANE "ÀÌÀü âÀ¸·Î ÀüȯÇÕ´Ï´Ù\nÀÌÀü â" + 0 END -STRINGTABLE DISCARDABLE +IDD_DEL_GROUP AFX_DIALOG_LAYOUT BEGIN - ID_WINDOW_SPLIT "ÇöÀç ¿­¸° âÀ» ³ª´¯´Ï´Ù\n³ª´©±â" + 0 END -STRINGTABLE DISCARDABLE +IDD_DTEX_GROUP AFX_DIALOG_LAYOUT BEGIN - ID_EDIT_CLEAR "¼±Åà ºÎºÐÀ» Áö¿ó´Ï´Ù\nÁö¿ì±â" - ID_EDIT_CLEAR_ALL "¸ðµç °ÍÀ» Áö¿ó´Ï´Ù\n¸ðµÎ Áö¿ì±â" - ID_EDIT_COPY "¼±Åà ºÎºÐÀ» º¹»çÇÏ¿© Ŭ¸³º¸µå¿¡ ³Ö½À´Ï´Ù\nº¹»ç" - ID_EDIT_CUT "¼±Åà ºÎºÐÀ» Àß¶ó³»¾î Ŭ¸³º¸µå¿¡ ³Ö½À´Ï´Ù\nÀß¶ó³»±â" - ID_EDIT_FIND "ÁöÁ¤ÇÑ ¹®ÀÚ¿­À» ã½À´Ï´Ù\nã±â" - ID_EDIT_PASTE "Ŭ¸³º¸µåÀÇ ³»¿ëÀ» ºÙ¿© ³Ö½À´Ï´Ù\nºÙ¿©³Ö±â" - ID_EDIT_REPEAT "¸¶Áö¸·À¸·Î ½ÇÇàÇÑ µ¿ÀÛÀ» ¹Ýº¹ÇÕ´Ï´Ù\n¹Ýº¹" - ID_EDIT_REPLACE "ÁöÁ¤ÇÑ ¹®ÀÚ¿­À» ´Ù¸¥ ¹®ÀÚ¿­·Î ¹Ù²ß´Ï´Ù\n¹Ù²Ù±â" - ID_EDIT_SELECT_ALL "¹®¼­ Àüü¸¦ ¼±ÅÃÇÕ´Ï´Ù\nÀüü ¼±ÅÃ" - ID_EDIT_UNDO "¸¶Áö¸·À¸·Î ÇÑ µ¿ÀÛÀ» Ãë¼ÒÇÕ´Ï´Ù\n½ÇÇà Ãë¼Ò" - ID_EDIT_REDO "ÀÌÀü¿¡ Ãë¼ÒÇÑ µ¿ÀÛÀ» ´Ù½Ã ¼öÇàÇÕ´Ï´Ù\n´Ù½Ã ½ÇÇà" + 0 END -STRINGTABLE DISCARDABLE +IDD_EDIT_BGM AFX_DIALOG_LAYOUT BEGIN - ID_VIEW_TOOLBAR "µµ±¸ ¸ðÀ½À» º¸À̰ųª °¨Ãä´Ï´Ù\nµµ±¸ ¸ðÀ½ Àüȯ" - ID_VIEW_STATUS_BAR "»óÅ ǥ½ÃÁÙÀ» Ç¥½ÃÇϰųª °¨Ãä´Ï´Ù\n»óÅ ǥ½ÃÁÙ Àüȯ" + 0 END -STRINGTABLE DISCARDABLE +IDD_EDIT_EVENT AFX_DIALOG_LAYOUT BEGIN - AFX_IDS_SCSIZE "âÀÇ Å©±â¸¦ º¯°æÇÕ´Ï´Ù" - AFX_IDS_SCMOVE "âÀÇ À§Ä¡¸¦ º¯°æÇÕ´Ï´Ù" - AFX_IDS_SCMINIMIZE "âÀ» ¾ÆÀÌÄÜÀ¸·Î ÁÙ¿©¼­ Ç¥½ÃÇÕ´Ï´Ù" - AFX_IDS_SCMAXIMIZE "âÀ» ÃÖ´ë Å©±â·Î È®ÀåÇÕ´Ï´Ù" - AFX_IDS_SCNEXTWINDOW "´ÙÀ½ ¹®¼­ âÀ¸·Î ÀüȯÇÕ´Ï´Ù" - AFX_IDS_SCPREVWINDOW "ÀÌÀü ¹®¼­ âÀ¸·Î ÀüȯÇÕ´Ï´Ù" - AFX_IDS_SCCLOSE "ÇöÀç ¿­¸° âÀ» ´Ý°í ¹®¼­¸¦ ÀúÀåÇÒ °ÍÀÎÁö¸¦ ¹¯½À´Ï´Ù" + 0 END -STRINGTABLE DISCARDABLE +IDD_EDIT_EVENT_ATTR AFX_DIALOG_LAYOUT BEGIN - AFX_IDS_SCRESTORE "âÀ» ¿ø·¡ Å©±â·Î º¹¿øÇÕ´Ï´Ù" - AFX_IDS_SCTASKLIST "ÀÛ¾÷ ¸ñ·ÏÀ» Ȱ¼ºÈ­ÇÕ´Ï´Ù" + 0 END -STRINGTABLE DISCARDABLE +IDD_EDIT_WARP AFX_DIALOG_LAYOUT BEGIN - ID_CURSOR_SELECT "°´Ã¼¸¦ ¼±ÅÃÇÕ´Ï´Ù.\n¼±ÅÃ" - ID_CURSOR_OBJ_BRUSH "°´Ã¼¸¦ ¹èÄ¡ÇÕ´Ï´Ù.\n¹èÄ¡" - ID_FILLMODE_WIREFRAME "¿ÍÀ̾î ÇÁ·¹ÀÓ ¸ðµå·Î º¾´Ï´Ù\n¿ÍÀ̾î ÇÁ·¹ÀÓ ¸ðµå" - ID_FILLMODE_SOLID "¼Ö¸®µå ¸ðµå·Î º¾´Ï´Ù\n¼Ö¸®µå ¸ðµå" - ID_CURSOR_ROTATE "¼±ÅÃÇÑ °´Ã¼¸¦ ȸÀü½Ãŵ´Ï´Ù.\nȸÀü" - ID_CURSOR_POS "¼±ÅÃÇÑ °´Ã¼¸¦ À̵¿ÇÕ´Ï´Ù.\nÀ̵¿" - ID_CURSOR_SCALE "¼±ÅÃÇÑ °´Ã¼¸¦ È®´ë/Ãà¼ÒÇÕ´Ï´Ù.\nÈ®´ë/Ãà¼Ò" + 0 END -STRINGTABLE DISCARDABLE +IDD_INPUT_ATTR AFX_DIALOG_LAYOUT BEGIN - ID_CURSOR_EDIT_TERRAIN "ÁöÇüÀ» ¼öÁ¤ÇÕ´Ï´Ù.\nÁöÇü¼öÁ¤" - ID_TIP_DROP "¼±ÅÃÇÑ °´Ã¼¸¦ ÁöÇü¿¡ ºÙÀÔ´Ï´Ù.\nDrop" + 0 END -STRINGTABLE DISCARDABLE +IDD_INPUT_GROUP AFX_DIALOG_LAYOUT BEGIN - ID_CURSOR_SMOOTH_TERRAIN "Smooth Tool\nSmooth Tool" - ID_PROJECT_SET "Project °æ·Î¸¦ ÁöÁ¤ÇÕ´Ï´Ù.\\Project °æ·Î ÁöÁ¤" - ID_FILE_COLORMAP_LOAD "Ä÷¯¸ÊÀ» ºÎ¸¨´Ï´Ù.(*.bmp)\\Ä÷¯¸Ê Àбâ" - ID_FILE_COLORMAP_SAVE "Ä÷¯¸ÊÀ» ÀúÀåÇÕ´Ï´Ù.(*.bmp)\\Ä÷¯¸Ê ÀúÀå" - ID_RESOURCE_PATH_SET "Resource File µéÀÇ °æ·Î¸¦ ÁöÁ¤ÇÕ´Ï´Ù.\nResource °æ·Î ÁöÁ¤" + 0 END -STRINGTABLE DISCARDABLE +IDD_LOAD_TILESET AFX_DIALOG_LAYOUT BEGIN - ID_VIEW_SELECTED_OBJECT_WIREFRAME - "¼±ÅÃµÈ Object Wire Frame À¸·Î º¸±â\n¼±ÅÃµÈ Object Wire Frame À¸·Î º¸±â" - ID_FILE_IMPORT_POST_DATA_FROM_SCENE - "*.N3Scene À¸·Î ºÎÅÍ ¿ÀºêÁ§Æ® ¹èÄ¡ µ¥ÀÌÅÍ ºÎ¸£±â\n¹èÄ¡ µ¥ÀÌÅÍ Import" + 0 END -#endif // Korean resources -///////////////////////////////////////////////////////////////////////////// +IDD_MAKE_NPCPATH AFX_DIALOG_LAYOUT +BEGIN + 0 +END +IDD_MAKE_REGEN_USER AFX_DIALOG_LAYOUT +BEGIN + 0 +END -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources +IDD_MAKE_WALL AFX_DIALOG_LAYOUT +BEGIN + 0 +END -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 +IDD_UNUSED_FILES AFX_DIALOG_LAYOUT +BEGIN + 0 +END -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// +IDR_MAINFRAME AFX_DIALOG_LAYOUT +BEGIN + 0 +END -IDR_MAINFRAME MENU PRELOAD DISCARDABLE +IDD_SAVE_NEW_TILESET AFX_DIALOG_LAYOUT BEGIN - POPUP "File(&F)" - BEGIN - MENUITEM "Set resource path(&R)...\tCtrl+R", ID_RESOURCE_PATH_SET - MENUITEM "New(&N)\tCtrl+N", ID_FILE_NEW - MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN - MENUITEM "Save(&S)\tCtrl+S", ID_FILE_SAVE - MENUITEM "Save as(&A)...", ID_FILE_SAVE_AS - MENUITEM "Save with cutted", ID_FILE_SAVE_DIVIDE - MENUITEM SEPARATOR - MENUITEM "generate height data from VMesh", ID_FILE_IMPORT_HEIGHT - MENUITEM "Import height data from VMesh(&I)", ID_FILE_IMPORT - MENUITEM "Export HeightBMP", ID_FILE_EXPORT_HEIGHT_BMP - MENUITEM "Import HegihtBMP", ID_FILE_IMPORT_HEIGHT_BMP - MENUITEM SEPARATOR - MENUITEM "Open Shape", ID_FILE_IMPORT_SHAPES - MENUITEM "Save as game format(&E)...", ID_FILE_EXPORT - MENUITEM "Save as server format(&V)", ID_FILE_SERVER_DATA - MENUITEM "Import colormap(&C)", ID_FILE_COLORMAP_LOAD - MENUITEM "Export colormap", ID_FILE_COLORMAP_SAVE - MENUITEM "Save tile game formatted texture data", - ID_FILE_GAMETILETEX_SAVE - MENUITEM SEPARATOR - MENUITEM "Import *.N3Scene object position data", - ID_FILE_IMPORT_POST_DATA_FROM_SCENE + 0 +END - MENUITEM SEPARATOR - MENUITEM "Recent files", ID_FILE_MRU_FILE1, GRAYED - MENUITEM SEPARATOR - MENUITEM "Exit(&X)", ID_APP_EXIT - END - POPUP "Edit(&E)" - BEGIN - MENUITEM "Undo(&U)\tCtrl+Z", ID_EDIT_UNDO - MENUITEM SEPARATOR - MENUITEM "Cur(&T)\tCtrl+X", ID_EDIT_CUT - MENUITEM "Copy(&C)\tCtrl+C", ID_EDIT_COPY - MENUITEM "Paste(&P)\tCtrl+V", ID_EDIT_PASTE - MENUITEM SEPARATOR - MENUITEM "Property(R)", ID_EDIT_PROPERTY - MENUITEM "Edit Detail Texture", ID_EDIT_DTEX - END - POPUP "View(&V)" - BEGIN - MENUITEM "Tool bar(&T)", ID_VIEW_TOOLBAR - MENUITEM "status bar(&S)", ID_VIEW_STATUS_BAR - MENUITEM "Source Object List(&C)", ID_VIEW_SOURCEOBJECT - MENUITEM "Output Object List(&O)", ID_VIEW_OUTPUTOBJECT - MENUITEM "Detail Texture List(&D)", ID_VIEW_DTEX - MENUITEM SEPARATOR - MENUITEM "Focus selected object\tF", ID_TIP_FOCUS_SELOBJ - MENUITEM "Focus whole map\tA", ID_TIP_FOCUS_ALL - MENUITEM SEPARATOR - MENUITEM "WIREFRAME MODE(&W)", ID_VIEW_WIREFRAME - MENUITEM "SOLID MODE(&L)", ID_VIEW_SOLID - MENUITEM "View selected object by wire Frame", - ID_VIEW_SELECTED_OBJECT_WIREFRAME - , CHECKED - MENUITEM "View axis and grid", ID_VIEW_AXIS_AND_GRID - MENUITEM "Hide objects\tH", ID_VIEW_HIDE_OBJ - MENUITEM "View perspective", ID_VIEW_ORTH - MENUITEM "Toggle fog", ID_VIEW_TOGGLE_FOG - END - POPUP "Edit mode(&C)" - BEGIN - MENUITEM "Select\tQ", ID_CURSOR_SELECT - MENUITEM "Move\tW", ID_CURSOR_POS - MENUITEM "Rotate\tE", ID_CURSOR_ROTATE - MENUITEM "Scale\tR", ID_CURSOR_SCALE - MENUITEM "Object Brush\tT", ID_CURSOR_OBJ_BRUSH - MENUITEM "Edit terrain", ID_CURSOR_EDIT_TERRAIN - MENUITEM "Smooth", ID_CURSOR_SMOOTH_TERRAIN - MENUITEM "Detail texture\tD", ID_CURSOR_DTEX - MENUITEM "River", ID_CURSOR_EDIT_RIVER - MENUITEM "Pond", ID_CURSOR_EDIT_POND - MENUITEM "Light map", ID_CURSOR_EDIT_LIGHTMAP - MENUITEM "NPC Path", ID_CURSOR_MAKE_NPCPATH - MENUITEM "Wall", ID_CURSOR_MAKE_WALL - MENUITEM "Event", ID_CURSOR_EDIT_EVENT - MENUITEM "Plane", ID_CURSOR_FLAT_TERRAIN - MENUITEM "User regeneration region", ID_CURSOR_REGEN_USER - MENUITEM "Environment sound effect", ID_CURSOR_SOUND - END - POPUP "Tool(&T)" - BEGIN - MENUITEM "Attach object to terrain", ID_TIP_DROP - MENUITEM "Delete selected object\tDel", ID_TIP_DELETE_OBJ - MENUITEM SEPARATOR - MENUITEM "Make colormap\tC", ID_TIP_GENERATE_COLORMAP - MENUITEM "make whole colormap\tX", ID_TIP_GENERATE_COLORMAP_ALL - MENUITEM "fill whole map with current tile\tV", ID_TIP_TILING_ALL - MENUITEM SEPARATOR - MENUITEM "Set to basic material\t(&D)", ID_TIP_DEFAULT_MATERIAL - MENUITEM "Remove Alpha Blending Flag\t(&R)", ID_TIP_REMOVE_ALPHAFLAG - MENUITEM SEPARATOR - MENUITEM "Spread seed", ID_TIP_SOW_SEED - MENUITEM "Make unused file list", ID_TIP_DELETE_UNUSED_FILES - MENUITEM "Remove overlapped objects", ID_TIP_DELETE_OVERLAPPED_OBJECTS +IDD_SOW_SEED AFX_DIALOG_LAYOUT +BEGIN + 0 +END - MENUITEM "Remove selected source objects", - ID_TIP_DELETE_SELECTED_SOURCE_OBJECTS +IDD_SAVE_DIVIDE AFX_DIALOG_LAYOUT +BEGIN + 0 +END - MENUITEM SEPARATOR - MENUITEM "Make warp info", ID_TIP_SET_WARP_INFO - MENUITEM "Adjust height scale", ID_TIP_SET_HEIGHT_SCALE - MENUITEM SEPARATOR - MENUITEM "View whole map && edit partial", ID_SELECT_MAP_EDIT - END - POPUP "Help(&H)" - BEGIN - MENUITEM "About N3MapEditor\t(&A)", ID_APP_ABOUT - END +IDD_SAVE_EVENT AFX_DIALOG_LAYOUT +BEGIN + 0 END +IDD_SHAPE_LIST AFX_DIALOG_LAYOUT +BEGIN + 0 +END -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// +IDD_SCENE_GRAPH AFX_DIALOG_LAYOUT +BEGIN + 0 +END -IDD_MAKE_NPCPATH DIALOG DISCARDABLE 0, 0, 163, 571 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Make NPC Path " -FONT 9, "µ¸¿ò" +IDD_SET_LIGHTMAP AFX_DIALOG_LAYOUT BEGIN - CONTROL "Edit Start Region",IDC_RDO_START_RGN,"Button", - BS_AUTORADIOBUTTON | WS_GROUP,11,252,66,10 - CONTROL "Make Path",IDC_RDO_MAKE_PATH,"Button", - BS_AUTORADIOBUTTON,11,264,50,10 - CONTROL "Edit Action Region",IDC_RDO_MAKE_ACT_RGN,"Button", - BS_AUTORADIOBUTTON,11,277,75,10 - COMBOBOX IDC_COMBO_NPC,4,112,145,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "NPC Type :",IDC_STATIC,5,99,38,8 - EDITTEXT IDC_EDIT_NUM_NPC,46,131,31,14,ES_AUTOHSCROLL - PUSHBUTTON "¡å",IDC_BTN_RECORD,2,337,72,14 - LTEXT "* NPC paths..",IDC_STATIC,6,357,46,8 - LISTBOX IDC_LIST_NPCPATH,3,369,158,180,LBS_SORT | - LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Load",IDC_BTN_LOAD_PATHSET,4,39,31,14 - PUSHBUTTON "Save",IDC_BTN_SAVE_PATHSET,37,39,32,14 - LTEXT "* ÇöÀç ÆÄÀÏÀ̸§",IDC_STATIC,3,12,50,8 - LTEXT "/npclist/pathset.txt",IDC_PATHSETNAME,4,24,117,8 - GROUPBOX "* File *",IDC_STATIC,0,1,159,58 - LTEXT "regen time :",IDC_STATIC,5,149,39,8 - EDITTEXT IDC_EDIT_REGENTIME,46,147,31,14,ES_AUTOHSCROLL - LTEXT "sec.",IDC_STATIC,79,149,15,8 - LTEXT "Action Type:",IDC_STATIC,5,167,41,8 - COMBOBOX IDC_COMBO_ACTIONTYPE,48,164,73,95,CBS_DROPDOWN | - CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "How many? :",IDC_STATIC,2,133,42,8 - PUSHBUTTON "Save Server Data",IDC_BTN_SAVE_SERVER_PATHSET,71,39,61, - 14 - PUSHBUTTON "¡ã",IDC_BTN_PATH_MODIFY,78,337,72,14 - PUSHBUTTON "Del",IDC_BTN_PATH_DELETE,59,354,27,13 - GROUPBOX "",IDC_STATIC,3,243,147,48 - EDITTEXT IDC_EDT_NPCPATHNAME,4,319,146,14,ES_AUTOHSCROLL - LTEXT "* Current NPC path name",IDC_STATIC,6,307,82,8 - LTEXT "* remaining path :",IDC_STATIC,6,294,58,8 - LTEXT "32",IDC_NUM_POINT,67,294,8,8 - GROUPBOX "View Movable Region",IDC_STATIC,0,63,162,31 - CONTROL "No",IDC_RDO_VIEW_NONMOVE,"Button",BS_AUTORADIOBUTTON | - WS_GROUP,7,77,25,10 - CONTROL "Yes",IDC_RDO_VIEW_NONE,"Button",BS_AUTORADIOBUTTON,56, - 77,29,10 - PUSHBUTTON "color",IDC_BTN_SETCOLOR,119,302,33,14 - PUSHBUTTON "Load NPC Type",IDC_BTN_LOAD_NPCLIST,89,97,61,14 - EDITTEXT IDC_EDT_TRANS_X,12,554,27,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDT_TRANS_Z,52,554,27,14,ES_AUTOHSCROLL - PUSHBUTTON "Move Whole NPC Path",IDC_BTN_TRANS,82,554,78,15, - WS_DISABLED - LTEXT "x",IDC_STATIC,4,554,8,8 - LTEXT "z",IDC_STATIC,46,554,8,8 - LTEXT "Group Attr.:",IDC_STATIC,2,183,38,8 - COMBOBOX IDC_COMBO_NPC_ATTR_GROUP,41,181,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Regen Attr.:",IDC_STATIC,2,198,39,8 - COMBOBOX IDC_COMBO_NPC_ATTR_REGEN,41,196,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Create Attr.:",IDC_STATIC,2,213,39,8 - COMBOBOX IDC_COMBO_NPC_ATTR_CREATE,41,211,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "load",IDC_BTN_LOAD_GROUP,140,179,20,14 - PUSHBUTTON "load",IDC_BTN_LOAD_REGEN,140,195,20,14 - PUSHBUTTON "load",IDC_BTN_LOAD_CREATE,140,211,20,14 - LTEXT "Option:",IDC_STATIC,2,228,24,8 - COMBOBOX IDC_COMBO_NPC_OPTION,41,225,97,179,CBS_DROPDOWN | - CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "load",IDC_BTN_LOAD_OPTION,140,225,20,14 + 0 +END + +IDD_SETDETAILTEXTURE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_POND_PROPERTY AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_RIVER_PROPERTY AFX_DIALOG_LAYOUT +BEGIN + 0 END -#endif // English (U.S.) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/tool/N3ME/N3ME.vcxproj.user b/src/tool/N3ME/N3ME.vcxproj.user index 78fe6cea..db7ab1ea 100644 --- a/src/tool/N3ME/N3ME.vcxproj.user +++ b/src/tool/N3ME/N3ME.vcxproj.user @@ -8,4 +8,7 @@ $(ProjectDir)..\..\assets\game WindowsLocalDebugger + + N3ME.rc + \ No newline at end of file diff --git a/src/tool/N3ME/N3MEDoc.cpp b/src/tool/N3ME/N3MEDoc.cpp index 69fb3d0b..e9b11f7a 100644 --- a/src/tool/N3ME/N3MEDoc.cpp +++ b/src/tool/N3ME/N3MEDoc.cpp @@ -43,8 +43,8 @@ BOOL CN3MEDoc::OnNewDocument() { // TODO: add reinitialization code here // (SDI documents will reuse this document) - // ¸Ç óÀ½ ½ÇÇàÇÒ¶§ AfxGetMainWnd()ÇÔ¼ö°¡ CMainFrame* À» ³Ñ°ÜÁÖÁö ¾Ê°í - // ActiveWindow()¸¦ ³Ñ°ÜÁֱ⠶§¹®¿¡ ¾Æ·¡ ¹æ½ÄÀ» »ç¿ë + // When run for the first time, the AfxGetMainWnd() function does not pass CMainFrame* + // Since ActiveWindow() is passed, use the method below CWinThread * pThread = AfxGetThread(); if (pThread) { CMainFrame * pFrm = (CMainFrame *)pThread->m_pMainWnd; diff --git a/src/tool/N3ME/N3MEView.cpp b/src/tool/N3ME/N3MEView.cpp index 336023f8..34bda780 100644 --- a/src/tool/N3ME/N3MEView.cpp +++ b/src/tool/N3ME/N3MEView.cpp @@ -97,7 +97,8 @@ void CN3MEView::Render() { m_pMapMng->Render(); } - CN3Base::s_AlphaMgr.Render(); // Alpha Primitive Manager Rendering.. ¾ÈÇÏ¸é ¾ðÁ¨°¡ »¶³­´Ù. + CN3Base::s_AlphaMgr + .Render(); // Alpha Primitive Manager Rendering.. If you don't do it, it will get annoying at some point. pEng->s_lpD3DDev->EndScene(); pEng->Present(m_hWnd); } diff --git a/src/tool/N3ME/NPCPath.h b/src/tool/N3ME/NPCPath.h index 8071242e..f002f25b 100644 --- a/src/tool/N3ME/NPCPath.h +++ b/src/tool/N3ME/NPCPath.h @@ -11,27 +11,27 @@ class CLyTerrain; class CNPCPath : public CN3Base { public: - char m_strPathName[256]; // ±æÀ̸§.. - char m_strNPCName[80]; // NPC À̸§. - int m_iNPCID; // NPC Á¾·ù.. - int m_iNumNPC; // ¸î¸¶¸®?.. + char m_strPathName[256]; //Length name.. + char m_strNPCName[80]; // NPC name. + int m_iNPCID; // NPC Id ? Type? + int m_iNumNPC; // How many?.. - __Vector3 m_LTStartVertex; // ½ÃÀÛ¿µ¿ªÀÇ ¸ð¼­¸® µÎÁ¡.. + __Vector3 m_LTStartVertex; // Two corners of the starting area... __Vector3 m_RBStartVertex; - //CRect m_rcStartRect; // NPC»ý±â´Â ¿µ¿ª. - int m_iRegenTime; // NPC°¡ Á×¾ú´Ù°¡ ´Ù½Ã »ì¾Æ³ª´Âµ¥ °É¸®´Â ½Ã°£. + //CRect m_rcStartRect; // Area where NPCs appear. + int m_iRegenTime; // The time it takes for an NPC to die and come back to life. int m_iActType; int m_iZoneID; - std::list<__Vector3> m_Path; //pathÁöÁ¤ÇÏ´Â Á¡µé....½ÃÀÛÁ¡~³¡Á¡.. + std::list<__Vector3> m_Path; //Path designation points...start point~end point... CLyTerrain * m_pRefTerrain; DWORD m_dwColor; int m_iVersion; - __Vector3 m_LTActVertex; // ½ÃÀÛ¿µ¿ªÀÇ ¸ð¼­¸® µÎÁ¡.. + __Vector3 m_LTActVertex; // Two corners of the starting area... __Vector3 m_RBActVertex; unsigned char m_cAttr_Create; @@ -45,8 +45,8 @@ class CNPCPath : public CN3Base { void Load(HANDLE hFile); void Save(HANDLE hFile); int GetSize() { return m_Path.size(); } - bool GetPath(int idx, __Vector3 * pPos); // idx° Á¡ °¡Á®¿À±â.. - void AddPos(__Vector3 Path); //path´õÇϱâ. + bool GetPath(int idx, __Vector3 * pPos); // Get the idxth point... + void AddPos(__Vector3 Path); // Add path. void DelPrevPos(); CNPCPath(); virtual ~CNPCPath(); diff --git a/src/tool/N3ME/NPCPathMgr.cpp b/src/tool/N3ME/NPCPathMgr.cpp index 3afaa39f..ab632a01 100644 --- a/src/tool/N3ME/NPCPathMgr.cpp +++ b/src/tool/N3ME/NPCPathMgr.cpp @@ -36,14 +36,14 @@ CNPCPathMgr::CNPCPathMgr() { m_pppRefEvent = NULL; m_bRenderMovableRegion = false; - m_BaseCube[0].Set(0, 1, 0); // ¾ÕÂÊ LT - m_BaseCube[1].Set(1, 1, 0); // ¾ÕÂÊ RT - m_BaseCube[2].Set(0, 0, 0); // ¾ÕÂÊ LB - m_BaseCube[3].Set(1, 0, 0); // ¾ÕÂÊ RB - m_BaseCube[4].Set(0, 1, 1); // µÚÂÊ LT - m_BaseCube[5].Set(1, 1, 1); // µÚÂÊ RT - m_BaseCube[6].Set(0, 0, 1); // µÚÂÊ LB - m_BaseCube[7].Set(1, 0, 1); // µÚÂÊ RB + m_BaseCube[0].Set(0, 1, 0); // front LT + m_BaseCube[1].Set(1, 1, 0); // front RT + m_BaseCube[2].Set(0, 0, 0); // front LB + m_BaseCube[3].Set(1, 0, 0); // front RB + m_BaseCube[4].Set(0, 1, 1); // behind LT + m_BaseCube[5].Set(1, 1, 1); // behind RT + m_BaseCube[6].Set(0, 0, 1); // behind LB + m_BaseCube[7].Set(1, 0, 1); // behind RB m_LTStartVertex.Set(0, 0, 0); m_RBStartVertex.Set(0, 0, 0); @@ -66,14 +66,14 @@ CNPCPathMgr::CNPCPathMgr(CMapMng * pMapMng) { m_pppRefEvent = NULL; m_bRenderMovableRegion = false; - m_BaseCube[0].Set(0, 1, 0); // ¾ÕÂÊ LT - m_BaseCube[1].Set(1, 1, 0); // ¾ÕÂÊ RT - m_BaseCube[2].Set(0, 0, 0); // ¾ÕÂÊ LB - m_BaseCube[3].Set(1, 0, 0); // ¾ÕÂÊ RB - m_BaseCube[4].Set(0, 1, 1); // µÚÂÊ LT - m_BaseCube[5].Set(1, 1, 1); // µÚÂÊ RT - m_BaseCube[6].Set(0, 0, 1); // µÚÂÊ LB - m_BaseCube[7].Set(1, 0, 1); // µÚÂÊ RB + m_BaseCube[0].Set(0, 1, 0); // front LT + m_BaseCube[1].Set(1, 1, 0); // front RT + m_BaseCube[2].Set(0, 0, 0); // front LB + m_BaseCube[3].Set(1, 0, 0); // front RB + m_BaseCube[4].Set(0, 1, 1); // behind LT + m_BaseCube[5].Set(1, 1, 1); // behind RT + m_BaseCube[6].Set(0, 0, 1); // behind LB + m_BaseCube[7].Set(1, 0, 1); // behind RB m_LTStartVertex.Set(0, 0, 0); m_RBStartVertex.Set(0, 0, 0); @@ -106,7 +106,7 @@ CNPCPathMgr::~CNPCPathMgr() { } // -// FileNameÀº °æ·Î¸í Çϳªµµ ¾Èµé¾î°£ ¼ø¼öÇÑ ÆÄÀÏÀ̸§°ú È®ÀåÀÚ.. +// FileName is a pure file name and extension without any path name.. // void CNPCPathMgr::LoadFromFile(const char * FileName) { if (m_pCurrPath) { @@ -144,7 +144,7 @@ void CNPCPathMgr::SaveToFile(const char * FileName) { GetCurrentDirectory(_MAX_PATH, szOldPath); SetCurrentDirectory(s_szPath.c_str()); - CreateDirectory("npcpath", NULL); // °æ·Î ¸¸µé°í.. + CreateDirectory("npcpath", NULL); // Create a path... char szNPCPathFileName[_MAX_PATH]; wsprintf(szNPCPathFileName, "%snpcpath\\%s.npi", s_szPath.c_str(), FileName); @@ -166,7 +166,7 @@ void CNPCPathMgr::SaveToFile(const char * FileName) { } void CNPCPathMgr::MakeServerDataFile(const char * FullFileName) { - // text ÆÄÀÏ ¹öÀü... + // text file version... FILE * stream = fopen(FullFileName, "w"); if (!stream) { return; @@ -295,7 +295,7 @@ BOOL CNPCPathMgr::MouseMsgFilter(LPMSG pMsg) { break; } - if (m_pDlgMakePath->m_State == 0) // ½ÃÀÛ RECT ±×¸². + if (m_pDlgMakePath->m_State == 0) // Start RECT picture. { m_pCurrPath->m_LTStartVertex = m_LTStartVertex; m_pCurrPath->m_RBStartVertex = m_RBStartVertex; @@ -303,7 +303,7 @@ BOOL CNPCPathMgr::MouseMsgFilter(LPMSG pMsg) { //MakeStartRectVB(m_LTStartVertex, m_RBStartVertex, 0xff00ffff); } - if (m_pDlgMakePath->m_State == 1) // ±æ ¸¸µê + if (m_pDlgMakePath->m_State == 1) // make a path { __Vector3 PrevPos; if (false == m_pCurrPath->GetPath(m_pCurrPath->GetSize() - 1, &PrevPos)) // @@ -334,7 +334,7 @@ BOOL CNPCPathMgr::MouseMsgFilter(LPMSG pMsg) { } } - if (m_pDlgMakePath->m_State == 2) // ½ÃÀÛ RECT ±×¸². + if (m_pDlgMakePath->m_State == 2) // Start RECT picture. { m_pCurrPath->m_LTActVertex = m_LTActVertex; m_pCurrPath->m_RBActVertex = m_RBActVertex; @@ -465,7 +465,7 @@ void CNPCPathMgr::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -483,14 +483,14 @@ void CNPCPathMgr::Render() { hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); - //°¥ ¼ö ¾ø´Â °÷ »¡°£»öÀ¸·Î Ä¥Çϱâ.. + //Color the places you can't go to in red... hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); if (m_bRenderMovableRegion) { RenderMovableRegion(); } hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); - //ÀÌ¹Ì ¸¸µé¾îÁø ±æ ±×¸®±â... + //Drawing a path that has already been created... std::list::iterator itPath; std::list<__Vector3>::iterator itVertex; CNPCPath * pPath; @@ -529,7 +529,7 @@ void CNPCPathMgr::Render() { } } - //´ÙÀ̾ó·Î±× â¿¡¼­ ¼±ÅÃµÈ ±æ ±×¸®±â.. + //Draw the selected path in the dialog window... CNPCPath * pSelPath = m_pDlgMakePath->m_pSelPath; if (pSelPath) { MakeRectVB(m_StartRectVB, pSelPath->m_LTStartVertex, pSelPath->m_RBStartVertex, 0xff00ff00); @@ -556,7 +556,7 @@ void CNPCPathMgr::Render() { } } - //¸¸µé°í ÀÖ´Â ±æ & ¿µ¿ª ±×¸®±â.. + //Drawing the path & area being created... MakeRectVB(m_StartRectVB, m_pCurrPath->m_LTStartVertex, m_pCurrPath->m_RBStartVertex, 0xffff0000); hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_LINELIST, 12, m_StartRectVB, sizeof(__VertexXyzColor)); @@ -688,7 +688,7 @@ void CNPCPathMgr::SetLTRB(__Vector3 * pLT, __Vector3 * pRB) { } void CNPCPathMgr::MakeRectVB(__VertexXyzColor * pVB, __Vector3 lt, __Vector3 rb, DWORD color) { - // »óÆÇ... + // tops.. pVB[0].Set(lt.x, lt.y, lt.z, color); pVB[1].Set(lt.x, lt.y, rb.z, color); @@ -701,7 +701,7 @@ void CNPCPathMgr::MakeRectVB(__VertexXyzColor * pVB, __Vector3 lt, __Vector3 rb, pVB[6] = pVB[5]; pVB[7] = pVB[0]; - // ´Ù¸®.. + // leg.. pVB[8] = pVB[0]; pVB[9].Set(lt.x, rb.y, lt.z, color); @@ -714,7 +714,7 @@ void CNPCPathMgr::MakeRectVB(__VertexXyzColor * pVB, __Vector3 lt, __Vector3 rb, pVB[14] = pVB[5]; pVB[15].Set(rb.x, rb.y, lt.z, color); - // ¹Ù´Ú... + // floor... pVB[16] = pVB[9]; pVB[17] = pVB[11]; @@ -805,7 +805,7 @@ void CNPCPathMgr::RenderMovableRegion() { continue; } - if ((x + z) % 2 == 0) // ½½·¡½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 0) // Slash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; @@ -825,7 +825,7 @@ void CNPCPathMgr::RenderMovableRegion() { v.y = pRefTerrain->GetHeight(v.x, v.z) + 0.3f; TileVB[3].Set(v.x, v.y, v.z, color); } - if ((x + z) % 2 == 1) //¹é½½·¹½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 1) //Backslash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; diff --git a/src/tool/N3ME/NPCPathMgr.h b/src/tool/N3ME/NPCPathMgr.h index 8e2b5205..afc8f676 100644 --- a/src/tool/N3ME/NPCPathMgr.h +++ b/src/tool/N3ME/NPCPathMgr.h @@ -30,11 +30,11 @@ class CNPCPathMgr : public CN3Base { __Vector3 m_RBActVertex; public: - CMapMng * m_pRefMapMng; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. - std::list m_pPaths; // npc pathµé... + CMapMng * m_pRefMapMng; // Terrain reference pointer.. + std::list m_pPaths; // npc paths... CDlgMakeNPCPath * m_pDlgMakePath; // path make dialog.. - bool m_bActive; // À̱â´ÉÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´ÂÁö...1:Ȱ¼ºÈ­, 0:ºñȰ¼ºÈ­.. - CNPCPath * m_pCurrPath; // ÇöÀç ¸¸µé°í ÀÖ´Â ±æ..or ¸¸µé·Á°í ÁغñÇÑ ¹öÆÛ.. + bool m_bActive; // Is this function activated? 1: Enabled, 0: Disabled.. + CNPCPath * m_pCurrPath; // The path currently being created..or the buffer prepared to be created.. short ** m_pppRefEvent; bool m_bRenderMovableRegion; diff --git a/src/tool/N3ME/PondMesh.cpp b/src/tool/N3ME/PondMesh.cpp index fa6795a7..9a1ec7a2 100644 --- a/src/tool/N3ME/PondMesh.cpp +++ b/src/tool/N3ME/PondMesh.cpp @@ -25,12 +25,12 @@ CPondMesh::~CPondMesh() { void CPondMesh::Release() { m_iPondID = -1; - m_fWaterHeight = 0.0f; // ¹°³ôÀÌ - m_iWaterScaleWidth = 4; // °¡·Î¹æÇâÀÇ Á¡ÀÇ °¹¼ö - m_iWaterScaleHeight = 6; // ¼¼·Î¹æÇâÀÇ Á¡ÀÇ °¹¼ö + m_fWaterHeight = 0.0f; // water level + m_iWaterScaleWidth = 4; // Number of horizontal points + m_iWaterScaleHeight = 6; // Number of dots in the vertical direction m_iBackUpWidht = 0; m_iBackUpHeight = 0; - m_dwPondAlpha = 0x88ffffff; // ¹°ÀÇ ¾ËÆÄ + m_dwPondAlpha = 0x88ffffff; // alpha of water m_fTU = 50.0f; m_fTV = 50.0f; @@ -68,7 +68,7 @@ void CPondMesh::Render() { matWorld.Identity(); s_lpD3DDev->SetTransform(D3DTS_WORLD, &matWorld); - // ¿µ¿ª »óÀÚ ±×¸®±â + // Draw area box { s_lpD3DDev->SetTexture(0, NULL); s_lpD3DDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); @@ -91,14 +91,14 @@ void CPondMesh::Render() { s_lpD3DDev->GetTextureStageState(0, D3DTSS_ALPHAOP, &dwAlphaOP); s_lpD3DDev->GetTextureStageState(0, D3DTSS_ALPHAARG1, &dwAlphaArg1); - if ((m_dwPondAlpha & 0xff000000) != 0xff000000) // alpha factor ¼³Á¤Çϱâ + if ((m_dwPondAlpha & 0xff000000) != 0xff000000) // Set alpha factor { - // render state ¼¼ÆÃ + // render state settings s_lpD3DDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); s_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); s_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); - s_lpD3DDev->SetRenderState(D3DRS_TEXTUREFACTOR, m_dwPondAlpha); // alpha factor ¼³Á¤ - // texture state ¼¼ÆÃ(alpha) + s_lpD3DDev->SetRenderState(D3DRS_TEXTUREFACTOR, m_dwPondAlpha); // alpha factor settings + // Texture state setting (alpha) s_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); s_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); s_lpD3DDev->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); @@ -151,7 +151,7 @@ void CPondMesh::Render() { } } -void CPondMesh::RenderVertexPoint() // Àߺ¸ÀÌ°Ô Á¡¸¸ ´Ù½Ã ±×¸®±â +void CPondMesh::RenderVertexPoint() // Redraw only the dots so they are visible { if (m_iVC == 0 && m_iRectVC == 0) { return; @@ -175,7 +175,7 @@ void CPondMesh::Render() { s_lpD3DDev->SetFVF(FVF_TRANSFORMEDCOLOR); D3DXVECTOR4 v; - // È­¸é»ó¿¡ »¡°£Á¡ + // red dot on screen for (int i = 0; i <= m_iVC; ++i) { D3DXVec3Transform(&v, (D3DXVECTOR3 *)(&(m_pViewVts[i])), &matVP); @@ -187,7 +187,7 @@ void CPondMesh::Render() { int iScreenX = int(((v.x / v.w) + 1.0f) * (vp.Width) / 2.0f); int iScreenY = int((1.0f - (v.y / v.w)) * (vp.Height) / 2.0f); if (iScreenX >= (int)vp.X && iScreenX <= (int)vp.Width && iScreenY >= (int)vp.Y && iScreenY <= (int)vp.Height) { - // set X (Á¡À» ÂïÀ¸¸é 1Çȼ¿¹Û¿¡ ¾ÈÂïÀ¸¹Ç·Î XÇ¥½Ã¸¦ ±×¸°´Ù. + // set X (Since only 1 pixel is drawn when a dot is placed, draw an X symbol.) Vertices[0].Set(float(iScreenX - 2), float(iScreenY - 2), 0.5f, 0.5f, clr); Vertices[1].Set(float(iScreenX + 2), float(iScreenY + 2), 0.5f, 0.5f, clr); Vertices[2].Set(float(iScreenX + 2), float(iScreenY - 2), 0.5f, 0.5f, clr); @@ -197,7 +197,7 @@ void CPondMesh::Render() { } } - // ¿µ¿ªÀ» ³ªÅ¸³»´Â Á¡ + // point representing the area for (int i = 0; i < m_iRectVC; ++i) { D3DXVec3Transform(&v, (D3DXVECTOR3 *)(&(m_pRectVts[i])), &matVP); @@ -209,7 +209,7 @@ void CPondMesh::Render() { int iScreenX = int(((v.x / v.w) + 1.0f) * (vp.Width) / 2.0f); int iScreenY = int((1.0f - (v.y / v.w)) * (vp.Height) / 2.0f); if (iScreenX >= (int)vp.X && iScreenX <= (int)vp.Width && iScreenY >= (int)vp.Y && iScreenY <= (int)vp.Height) { - // set X (Á¡À» ÂïÀ¸¸é 1Çȼ¿¹Û¿¡ ¾ÈÂïÀ¸¹Ç·Î XÇ¥½Ã¸¦ ±×¸°´Ù. + // set X (Since only 1 pixel is drawn when a dot is placed, draw an X symbol.) Vertices[0].Set(float(iScreenX - 2), float(iScreenY - 2), 0.5f, 0.5f, clr); Vertices[1].Set(float(iScreenX + 2), float(iScreenY + 2), 0.5f, 0.5f, clr); Vertices[2].Set(float(iScreenX + 2), float(iScreenY - 2), 0.5f, 0.5f, clr); @@ -230,8 +230,8 @@ void CPondMesh::SetWaterHeight(float fHeight) { m_vDrawBox[i].y = fHeight; } - MakeDrawRect(m_vDrawBox); // ¿Ü°û¼± ´Ù½Ã ¸¸µë - UpdateWaterHeight(); // °¢Á¡µéÀ» ÁöÁ¤ÇÑ ³ôÀÌ·Î ¿Ã¸² + MakeDrawRect(m_vDrawBox); // Recreate the outline + UpdateWaterHeight(); // Raise each point to the specified height } void CPondMesh::UpdateWaterHeight() { @@ -249,22 +249,22 @@ void CPondMesh::UpdateMovePos(__Vector3 vMovingPos) { } } -void CPondMesh::MakeDrawRect(__Vector3 * p4vPos) // È­¸é¿¡ º¸ÀÏ ¿¬¸øÀÇ ¿µ¿ªÅ׵θ® ¸¸µç´Ù +void CPondMesh::MakeDrawRect(__Vector3 * p4vPos) // Create the border of the pond that will be visible on the screen { if (p4vPos == NULL) { return; } memcpy(m_vDrawBox, p4vPos, sizeof(__Vector3) * 4); - m_fWaterHeight = p4vPos[0].y; // ¹°ÀÇ ³ôÀ̸¦ ¹Þ´Â´Ù - p4vPos = NULL; // ¸Þ¸ð¸®¿¡¼­ ÀÌ»óÇÑ °á°ú°ú ³ª¿Ã±îºÁ.. + m_fWaterHeight = p4vPos[0].y; // Get the water level + p4vPos = NULL; // I'm afraid I'll get strange results from memory... ?? //---------------------------------------------------------------------------- DWORD color = 0xffffff00; - m_ViewRect[0].Set(m_vDrawBox[0], color); // À§Á¡ - m_ViewRect[1].Set(m_vDrawBox[1], color); // À§Á¡ - m_ViewRect[2].Set(m_vDrawBox[2], color); // ¾Æ·¡Á¡ - m_ViewRect[3].Set(m_vDrawBox[3], color); // ¾Æ·¡Á¡ + m_ViewRect[0].Set(m_vDrawBox[0], color); // upper point + m_ViewRect[1].Set(m_vDrawBox[1], color); // upper point + m_ViewRect[2].Set(m_vDrawBox[2], color); // bottom point + m_ViewRect[3].Set(m_vDrawBox[3], color); // bottom point m_ViewRect[4] = m_ViewRect[0]; //---------------------------------------------------------------------------- @@ -273,9 +273,9 @@ void CPondMesh::UpdateMovePos(__Vector3 vMovingPos) { void CPondMesh::UpdateDrawPos() { m_iRectVC = 0; - // À§,¾Æ·¡Á¡µé ¼¼ÆÃ + // Setting the top and bottom points m_fWaterScaleX = SettingDrawPos(m_vDrawBox[0], m_vDrawBox[1], m_vDrawBox[3], m_vDrawBox[2], m_iWaterScaleWidth); - // Á¿ìÁ¡µé ¼¼ÆÃ + // Setting left and right points m_fWaterScaleZ = SettingDrawPos(m_vDrawBox[0], m_vDrawBox[3], m_vDrawBox[1], m_vDrawBox[2], m_iWaterScaleHeight); } @@ -289,11 +289,12 @@ float CPondMesh::SettingDrawPos(__Vector3 vPos1, __Vector3 vPos2, __Vector3 vPos LinePos = vPos2 - vPos1; fLength = LinePos.Magnitude(); - fLength /= (iLinePosNum + 1); // ±æÀ̱¸Çϰí,³¡¿¡³ÖÀ» Á¡»©°í À§Ä¡ÇÒ Á¡µé °è»ê + fLength /= (iLinePosNum + + 1); // Find the length, calculate the points to be placed excluding the point to be placed at the end LinePos.Normalize(); - LinePos *= fLength; // ±æÀÌ1mÀÎ ¹éÅ͸¦ ±¸Çϰí,Á¡°£ÀÇ °Å¸®¸¦ ÀÔ·Â + LinePos *= fLength; //Find a vector with a length of 1m and enter the distance between points. - // ÀԷ½ÃÀÛ + // start input for (int i = 1; i < iLinePosNum + 1; ++i) { vPos2 = vPos1 + LinePos * (float)i; m_pRectVts[m_iRectVC + i - 1].Set(vPos2, 0, 0, 0, 0); @@ -320,10 +321,10 @@ void CPondMesh::MakePondPos() { } ASSERT(MAX_PONDMESH_VERTEX > - m_iWaterScaleWidth * m_iWaterScaleHeight); // ¾ÕÀ¸·Î ¸¸µé¾îÁú Á¡ÀǼýÀÚ°¡ max¿¡ ´ÞÇÏ´ÂÁö È®ÀÎ + m_iWaterScaleWidth * m_iWaterScaleHeight); // Check whether the number of points to be created reaches max int ix, iz, itemp; - // ¹æÇâÀÇ Á¡µéÀÇ À§Ä¡¸¦ ¹ÞÀºµÚ + // After receiving the positions of the direction points float *fX, fY, *fZ; fX = new float[m_iWaterScaleWidth]; for (ix = 0; ix < m_iWaterScaleWidth; ++ix) { @@ -340,8 +341,8 @@ void CPondMesh::MakePondPos() { fY = m_fWaterHeight; __Vector3 vPos; - m_iVC = 0, m_iIC = 0; // ÃʱâÈ­ - // ÀÏ´Ü Á¡µéÀ» ÂÓ »Ñ¸°´Ù + m_iVC = 0, m_iIC = 0; // reset + // First, spread the dots for (iz = 0; iz < m_iWaterScaleHeight; ++iz) { for (ix = 0; ix < m_iWaterScaleWidth; ++ix) { vPos.Set(fX[ix], fY, fZ[iz]); @@ -378,9 +379,9 @@ void CPondMesh::MakeIndex() { m_pdwIndex = new WORD[m_iWaterScaleWidth * m_iWaterScaleHeight * 6]; } - int m = m_iWaterScaleWidth; // ´ÙÀ½ÁÙ + int m = m_iWaterScaleWidth; // next line int x = 0, y = m; - WORD * indexPtr = m_pdwIndex; // »ï°¢ÇüÀ» ºÎ¸¦ À§Ä¡ ¼³Á¤ + WORD * indexPtr = m_pdwIndex; // Set where to call the triangle --m; for (int j = 0; j < m_iWaterScaleHeight; j++) { @@ -411,7 +412,7 @@ void CPondMesh::ReCalcUV() { __Vector3 * pVertices = m_pVertices; __VertexXyzT2 * ptmpVertices = m_pViewVts; - // ÁÙ¿¡ ´ëÇÑ º¯°æ(x,z¿¡ ´ëÇØ) + // Change to line (for x,z) for (int i = 0; i < m_iWaterScaleHeight; ++i) { ptmpVertices->tu = ptmpVertices->x / fTu; ptmpVertices->tv = ptmpVertices->z / fTv; @@ -430,8 +431,8 @@ void CPondMesh::ReCalcUV() { } void CPondMesh::ReCalcVexUV() { - __Vector3 pBakVertices[MAX_PONDMESH_VERTEX]; // ÀúÀå,¹é¾÷¿ëÀ¸·Î ¾²ÀÌ´Â °ª - __VertexXyzT2 pBakViewVts[MAX_PONDMESH_VERTEX]; // È­¸é¿¡ »Ñ·ÁÁö´Â °ª + __Vector3 pBakVertices[MAX_PONDMESH_VERTEX]; // Values used for storage and backup + __VertexXyzT2 pBakViewVts[MAX_PONDMESH_VERTEX]; // Value displayed on screen for (int i = 0; i < m_iVC; ++i) { pBakVertices[i].x = m_pVertices[i].x; @@ -478,7 +479,7 @@ void CPondMesh::InputSelectPos(float fX, float fY, float fZ, int iVC) { m_vSelectBox[0].x = fX, m_vSelectBox[0].y = fY, m_vSelectBox[0].z = fZ; m_vSelectBox[1].x = fX, m_vSelectBox[1].y = fY, m_vSelectBox[1].z = fZ; } else { - // ¼±ÅÃÇÑ Á¡µéÀÇ Ãִ뿵¿ªÀ» Àâ°í + // Grab the maximum area of the selected points if (m_vSelectBox[0].x > fX) { m_vSelectBox[0].x = fX; } @@ -493,13 +494,13 @@ void CPondMesh::InputSelectPos(float fX, float fY, float fZ, int iVC) { } } - // ³ôÀ̰¡ Ʋ·ÁÁö¸é ³ôÀ̸¦ Àç ¼³Á¤ + // Reset the height if the height is incorrect if (m_vSelectBox[0].y != fY) { SetWaterHeight(fY); m_vSelectBox[0].y = fY; } - if (iVC > -1) // Àüü ¼±ÅÃÀÌ ¾Æ´Ñ ÀϺμ±Åýà + if (iVC > -1) // When selecting part rather than all selection { int iHeight = iVC / m_iWaterScaleWidth; int iWidth = iVC % m_iWaterScaleWidth; @@ -515,7 +516,7 @@ void CPondMesh::InputSelectPos(float fX, float fY, float fZ, int iVC) { } } - // ¼±ÅÃÇÑ Á¡µéÀ» Àӽ÷Π°¡Áö°í ÀÖÀ½ + // Temporarily holds the selected points pSelpo = new __SELECT_PO; pSelpo->ix = iWidth; pSelpo->iz = iHeight; @@ -525,27 +526,27 @@ void CPondMesh::InputSelectPos(float fX, float fY, float fZ, int iVC) { } BOOL CPondMesh::InputDummyMovingPos(__Vector3 vDummyMovingPos, BOOL bMovePond) { - // ¿òÁ÷¿©¾ßÇÒ ÀÌÀ¯°¡ ¾ø´Ù + // There is no reason to move if (vDummyMovingPos.x == 0.0f && vDummyMovingPos.y == 0.0f && vDummyMovingPos.z == 0.0f) { return FALSE; } BOOL bDrawBoxMove = FALSE; - // ¼±ÅÃÇÑ Á¡µé¿µ¿ªÀÇ ¿òÁ÷ÀÓ + // Movement of selected dots area m_vSelectBox[0] += vDummyMovingPos; m_vSelectBox[1] += vDummyMovingPos; if (vDummyMovingPos.y != 0) { - SetWaterHeight(m_vSelectBox[0].y); // ³ôÀ̸¦ üũ + SetWaterHeight(m_vSelectBox[0].y); // check the height } - // ¿¬¸ø ¿µ¿ªÁ٠ó¸® + // Pond area line processing if (bMovePond) { for (int i = 0; i < 4; ++i) { m_vDrawBox[i] += vDummyMovingPos; } - MakeDrawRect(m_vDrawBox); // °¡ÀåÀÚ¸® Á¡µé Àç °è»ê - UpdateMovePos(vDummyMovingPos); // ¹é¾÷¿ë °è»ê Á¡µé Àç °è»ê + MakeDrawRect(m_vDrawBox); // recalculate edge points + UpdateMovePos(vDummyMovingPos); // Recalculate calculation points for backup } else { if (m_vSelectBox[0].x < m_vDrawBox[2].x) { SetLeft(m_vSelectBox[0].x); @@ -564,7 +565,7 @@ BOOL CPondMesh::InputDummyMovingPos(__Vector3 vDummyMovingPos, BOOL bMovePond) { } if (vDummyMovingPos.x != 0 || vDummyMovingPos.z != 0) { - MovingPos(); // ´õ¹ÌÀÇ ¿òÁ÷ÀÓ¿¡ µû¶ó Á¡µé ¿òÁ÷ÀÓ + MovingPos(); // Dots move according to the movement of the dummy } } @@ -588,7 +589,7 @@ void CPondMesh::SetBottom(float fBottom) { MakeDrawRect(m_vDrawBox); } -// ±âº»ÀûÀ¸·Î ¼±ÅÃµÈ Á¡µéÀº ÀÌ¹Ì ¿òÁ÷ÀÎ »óÅ·Π¿øº»À̶ó ÇÒ¼öÀÖ´Â m_pVerticesÂüÁ¶Çؼ­ ¿òÁ÷ÀÏ ¿¹»óÁ¡À» °è»ê +// Basically, the selected points have already moved, so calculate the expected points to move by referring to m_pVertices, which can be considered the original. void CPondMesh::MovingPos() { int iSize = m_vSelect.size(); it_SelVtx it = m_vSelect.begin(); @@ -611,56 +612,58 @@ void CPondMesh::CalcuWidth(int iSx, int iSy, int iEx, int iEy) { int iHeightNum = iSy * m_iWaterScaleWidth; // ---------------------------------------------------------------------------------- - // °è»êÇØ¾ßÇÒ Ã¹Á¡À» ±¸ÇÑ´Ù - __Vector3 vBakPick = *(m_pVertices + iHeightNum + iSx); // ¹é¾÷µÈ ÀüÀÇ ÁÂÇ¥(ÂüÁ¶ÇÏ¿© »õ·Î¿î ÁÂÇ¥ °è»ê) - __Vector3 vNowPick = *(m_pViewVts + iHeightNum + iSx); // ÇöÀç ÁöÁ¤µÈ Á¡(³ªÁß¿¡ ¿©·¯°³ ÁöÁ¤µÇ°Ô) - __Vector3 * pLRVertices = m_pVertices + iHeightNum; // °è»êÇÒ Ã¹ Á¡(¹é¾÷¿ë) - __VertexXyzT2 * pLRViewVer = m_pViewVts + iHeightNum; // °è»êÇÒ Ã¹ Á¡(ÇöÀç¿ë) + // Find the first point to be calculated + __Vector3 vBakPick = + *(m_pVertices + iHeightNum + iSx); // Coordinates before backup (reference to calculate new coordinates) + __Vector3 vNowPick = + *(m_pViewVts + iHeightNum + iSx); // Currently specified point (multiple points may be specified later) + __Vector3 * pLRVertices = m_pVertices + iHeightNum; // First point to calculate (for backup) + __VertexXyzT2 * pLRViewVer = m_pViewVts + iHeightNum; // First point to calculate (for current) // ---------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------- - // À§Ä¡¿¡ ÇØ´çÇϴ¾çÂÊ ³¡ÀÇÁ¡À» °¡Áø´Ù + //Has points on both ends corresponding to the location __Vector3 *pvLeft, *pvRight, *pvTop, *pvBottom; - pvRight = pLRVertices; // óÀ½½ÃÀÛÀÌ ¿À¸¥ÂʺÎÅÍÀÌ´Ù + pvRight = pLRVertices; // Starting from the right pvLeft = pvRight + m_iWaterScaleWidth - 1; pvTop = m_pVertices + iSx; pvBottom = m_pVertices + m_iVC - m_iWaterScaleWidth + 1; // ---------------------------------------------------------------------------------- - // »õ·Î¿î ÁÂÇ¥ °è»ê + // Calculate new coordinates float fx1, fx2, fnx1, fnx2; float fny1, fny2; float ftemp; // ---------------------------------------------------------------------------------- - int iIntervalNum = iSx - 1; // ÁÂ¿ì °¢ ÇÑÁ¡¾¿ »©±â¿¡ + int iIntervalNum = iSx - 1; // To subtract one point from each side if (iIntervalNum > 0) { - ++pLRVertices, ++pLRViewVer; // ¿À¸¥ÂÊ + ++pLRVertices, ++pLRViewVer; // right fny2 = vNowPick.z - vBakPick.z; for (int j = 0; j < iIntervalNum; ++j, ++pLRVertices, ++pLRViewVer, ++pvTop, ++pvBottom) { - // »çÀÌÀÇ Á¡¸¶´Ù °Å¸®ºñÀ²À» ±¸ÇØ »õ·Î¿î À§Ä¡¸¦ ±¸ÇÑ´Ù - fx2 = pvRight->x - vBakPick.x; // Á¿ìÀÇ ºñÀ²±¸ÇÔ + // Find the distance ratio for each point between points and find the new location. + fx2 = pvRight->x - vBakPick.x; // Find the ratio of left and right if (fx2 != 0) { fx1 = pvRight->x - pLRVertices->x; ftemp = fx1 / fx2; - // ¿À¸¥³¡Á¡x-¹é¾÷Á¡x : ¿À¸¥³¡Á¡x-ÇöÀç°è»êÇÏ´ÂÁ¡x = ¿À¸¥³¡Á¡x-»õ·Î¿îÁ¡x : ±¸ÇÒÁ¡x + // Right end point x-backup point x: Right end point x-currently calculated point x = Right end point x-new point x: Point to be calculated x fnx2 = pvRight->x - vNowPick.x; fnx1 = fnx2 * ftemp; - pLRViewVer->x = pvRight->x - fnx1; // xÀÇ »õ·Î¿îÁ¡ ÀÔ·Â + pLRViewVer->x = pvRight->x - fnx1; // Input new point of x - // ¿À¸¥³¡Á¡x-¹é¾÷Á¡x : ¿À¸¥³¡Á¡x-ÇöÀç°è»êÇÏ´ÂÁ¡x = »õ·Î¿îÁ¡z-¹é¾÷Á¡z : ±¸ÇÒº¯È­·®z + // Right end point x-backup point x: Right end point x-currently calculated point x = New point z-backup point z: Change amount to be obtained z fny1 = fny2 * ftemp; - pLRViewVer->z += fny1; // zÀÇ º¯È­·® ´õÇÔ + pLRViewVer->z += fny1; // add change in z } } } // ---------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------- - iIntervalNum = m_iWaterScaleWidth - iSx - 2; // ÁÂ¿ì °¢ ÇÑÁ¡¾¿ »©±â¿¡ + iIntervalNum = m_iWaterScaleWidth - iSx - 2; // To subtract one point from each side if (iIntervalNum > 0) { - ++pLRVertices, ++pLRViewVer; // ¿ÞÂÊ + ++pLRVertices, ++pLRViewVer; // left fny2 = vNowPick.z - vBakPick.z; for (int j = 0; j < iIntervalNum; ++j, ++pLRVertices, ++pLRViewVer, ++pvTop, ++pvBottom) { fx2 = vBakPick.x - pvLeft->x; @@ -670,10 +673,10 @@ void CPondMesh::CalcuWidth(int iSx, int iSy, int iEx, int iEy) { fnx2 = vNowPick.x - pvLeft->x; fnx1 = fnx2 * ftemp; - pLRViewVer->x = pvLeft->x + fnx1; // xÀÇ »õ·Î¿îÁ¡ ÀÔ·Â + pLRViewVer->x = pvLeft->x + fnx1; // Input new point of x fny1 = fny2 * ftemp; - pLRViewVer->z += fny1; // zÀÇ º¯È­·® ´õÇÔ + pLRViewVer->z += fny1; // add change in z } } } @@ -689,18 +692,20 @@ void CPondMesh::SetAllPos(int iSx, int iSy, int iEx, int iEy) { return; } - // °è»êÇØ¾ßÇÒ Ã¹Á¡À» ±¸ÇÑ´Ù + // Find the first point to be calculated __Vector3 * pTBVertices = m_pVertices + iSx; __VertexXyzT2 * pTBViewVer = m_pViewVts + iSx; - // À§Ä¡¿¡ ÇØ´çÇϴ¾çÂÊ ³¡ÀÇÁ¡À» °¡Áø´Ù + //Has points on both ends corresponding to the location __Vector3 vTop, vBottom, vCenter, vNowCenter; vTop = *pTBVertices; vBottom = *(m_pVertices + m_iVC - m_iWaterScaleWidth + iSx); - vCenter = *(m_pVertices + m_iWaterScaleWidth * iSy + iSx); // ÇöÀç ÁöÁ¤µÈ Á¡(³ªÁß¿¡ ¿©·¯°³ ÁöÁ¤µÇ°Ô) - vNowCenter = *(m_pViewVts + m_iWaterScaleWidth * iSy + iSx); // ¹é¾÷µÈ ÀüÀÇ ÁÂÇ¥(ÂüÁ¶ÇÏ¿© »õ·Î¿î ÁÂÇ¥ °è»ê) + vCenter = *(m_pVertices + m_iWaterScaleWidth * iSy + + iSx); // Currently specified point (multiple points may be specified later) + vNowCenter = *(m_pViewVts + m_iWaterScaleWidth * iSy + + iSx); // Coordinates before backup (reference to calculate new coordinates) - // »õ·Î¿î ÁÂÇ¥ °è»ê + // Calculate new coordinates float fy1, fy2, fny1, fny2; float fnx1, fnx2; float ftemp; @@ -714,14 +719,14 @@ void CPondMesh::SetAllPos(int iSx, int iSy, int iEx, int iEy) { fny2 = vTop.z - vNowCenter.z; for (int j = 0; j < iIntervalNum; ++j, pTBVertices += m_iWaterScaleWidth, pTBViewVer += m_iWaterScaleWidth) { - fy1 = pTBVertices->z - vTop.z; // Á¿ìÀÇ ºñÀ²±¸ÇÔ + fy1 = pTBVertices->z - vTop.z; // Find the ratio of left and right ftemp = fy1 / fy2; fnx1 = fnx2 * ftemp; - pTBViewVer->x += fnx1; // xÀÇ º¯È­·® ´õÇÔ + pTBViewVer->x += fnx1; // add change in x fny1 = fny2 * ftemp; - pTBViewVer->z = vTop.z - fny1; // zÀÇ »õ·Î¿îÁ¡ ÀÔ·Â + pTBViewVer->z = vTop.z - fny1; // Input new point of z } } } @@ -739,10 +744,10 @@ void CPondMesh::SetAllPos(int iSx, int iSy, int iEx, int iEy) { ftemp = fy1 / fy2; fnx1 = fnx2 * ftemp; - pTBViewVer->x += fnx1; // xÀÇ º¯È­·® ´õÇÔ + pTBViewVer->x += fnx1; // add change in x fny1 = fny2 * ftemp; - pTBViewVer->z = vBottom.z + fny1; // zÀÇ »õ·Î¿îÁ¡ ÀÔ·Â + pTBViewVer->z = vBottom.z + fny1; // Input new point of z } } } @@ -773,8 +778,8 @@ bool CPondMesh::Load1001(HANDLE hFile) { int iLen; char szTextueFName[_MAX_PATH]; - ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); // ¿¬¸ø ¹øÈ£ - ReadFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // ¿¬¸ø ¾ËÆÄ + ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); //pond number + ReadFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // pond alpha ReadFile(hFile, &m_fWaterHeight, sizeof(m_fWaterHeight), &dwNum, NULL); ReadFile(hFile, &m_iWaterScaleWidth, sizeof(m_iWaterScaleWidth), &dwNum, NULL); ReadFile(hFile, &m_iWaterScaleHeight, sizeof(m_iWaterScaleHeight), &dwNum, NULL); @@ -784,12 +789,12 @@ bool CPondMesh::Load1001(HANDLE hFile) { ReadFile(hFile, &m_fWaterScaleZ, sizeof(m_fWaterScaleZ), &dwNum, NULL); ReadFile(hFile, &m_bUVState, sizeof(m_bUVState), &dwNum, NULL); - ReadFile(hFile, m_vDrawBox, sizeof(m_vDrawBox), &dwNum, NULL); // ÇÑÁÙ¿¡ ÀÖ´Â Á¡ °¹¼ö + ReadFile(hFile, m_vDrawBox, sizeof(m_vDrawBox), &dwNum, NULL); // Number of dots in one line - ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { ReadFile(hFile, m_pViewVts, m_iVC * sizeof(__VertexXyzT2), &dwNum, NULL); // vertex buffer - ReInputBackPos(); // ¹é¾÷¿ë¿¡ »õ·ÎÁÂÇ¥ÀÔ·Â + ReInputBackPos(); // Input new coordinates for backup } ReadFile(hFile, &m_iIC, sizeof(m_iIC), &dwNum, NULL); // IndexBuffer Count. @@ -800,8 +805,8 @@ bool CPondMesh::Load1001(HANDLE hFile) { m_pTexture = s_MngTex.Get(szTextueFName, TRUE); // load texture } - MakeIndex(); // À妽º¸¦ ´Ù½Ã °è»ê - MakeDrawRect(m_vDrawBox); // ¿µ¿ª¶óÀÎ ¼³Á¤ + MakeIndex(); // recalculate the index + MakeDrawRect(m_vDrawBox); // Area line settings m_iBackUpWidht = m_iWaterScaleWidth; m_iBackUpHeight = m_iWaterScaleHeight; @@ -816,15 +821,15 @@ bool CPondMesh::Load1000(HANDLE hFile) { char szTextueFName[_MAX_PATH]; float fScaleTemp; - ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); // ¿¬¸ø ¹øÈ£ - ReadFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // ¿¬¸ø ¾ËÆÄ + ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); //pond number + ReadFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // pond alpha - ReadFile(hFile, &m_iWaterScaleWidth, sizeof(m_iWaterScaleWidth), &dwNum, NULL); // ÇÑÁÙ¿¡ ÀÖ´Â Á¡ °¹¼ö + ReadFile(hFile, &m_iWaterScaleWidth, sizeof(m_iWaterScaleWidth), &dwNum, NULL); // Number of dots in one line ReadFile(hFile, &fScaleTemp, sizeof(fScaleTemp), &dwNum, NULL); ReadFile(hFile, &fScaleTemp, sizeof(fScaleTemp), &dwNum, NULL); - ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { ReadFile(hFile, m_pVertices, m_iVC * sizeof(__Vector3), &dwNum, NULL); // vertex buffer } @@ -870,7 +875,7 @@ bool CPondMesh::Load1000(HANDLE hFile) { m_vDrawBox[0].x += 1.0f, m_vDrawBox[3].x += 1.0f, m_vDrawBox[1].x -= 1.0f, m_vDrawBox[2].x -= 1.0f; m_vDrawBox[0].z -= 1.0f, m_vDrawBox[3].z -= 1.0f, m_vDrawBox[1].z += 1.0f, m_vDrawBox[2].z += 1.0f; - MakeDrawRect(m_vDrawBox); // ¿Ü°û¼± ´Ù½Ã ¸¸µë + MakeDrawRect(m_vDrawBox); // Recreate the outline // --------------------------------------------------------------------------------------------------------- return 0; @@ -883,19 +888,19 @@ bool CPondMesh::Load(HANDLE hFile) { char szTextueFName[_MAX_PATH]; float fScaleTemp; - ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); // ¿¬¸ø ¹øÈ£ + ReadFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); //pond number m_dwPondAlpha = 0xddffffff; - ReadFile(hFile, &m_iWaterScaleWidth, sizeof(int), &dwNum, NULL); // ÇÑÁÙ¿¡ ÀÖ´Â Á¡ °¹¼ö + ReadFile(hFile, &m_iWaterScaleWidth, sizeof(int), &dwNum, NULL); // Number of dots in one line ReadFile(hFile, &fScaleTemp, sizeof(fScaleTemp), &dwNum, NULL); ReadFile(hFile, &fScaleTemp, sizeof(fScaleTemp), &dwNum, NULL); - ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { ReadFile(hFile, m_pViewVts, m_iVC * sizeof(__VertexXyzT2), &dwNum, NULL); // vertex buffer - ReInputBackPos(); // ¹é¾÷¿ë¿¡ »õ·ÎÁÂÇ¥ÀÔ·Â + ReInputBackPos(); // Input new coordinates for backup } ReadFile(hFile, &m_iIC, sizeof(m_iIC), &dwNum, NULL); // IndexBufferCount. ReadFile(hFile, &iLen, sizeof(iLen), &dwNum, NULL); // texture name length @@ -936,7 +941,7 @@ bool CPondMesh::Load(HANDLE hFile) { m_vDrawBox[0].x += 1.0f, m_vDrawBox[3].x += 1.0f, m_vDrawBox[1].x -= 1.0f, m_vDrawBox[2].x -= 1.0f; m_vDrawBox[0].z -= 1.0f, m_vDrawBox[3].z -= 1.0f, m_vDrawBox[1].z += 1.0f, m_vDrawBox[2].z += 1.0f; - MakeDrawRect(m_vDrawBox); // ¿Ü°û¼± ´Ù½Ã ¸¸µë + MakeDrawRect(m_vDrawBox); // Recreate the outline // --------------------------------------------------------------------------------------------------------- return 0; @@ -945,8 +950,8 @@ bool CPondMesh::Load(HANDLE hFile) { bool CPondMesh::Save(HANDLE hFile) { DWORD dwNum = 0; - WriteFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); // ¿¬¸ø ¹øÈ£ - WriteFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // ¿¬¸ø ¾ËÆÄ + WriteFile(hFile, &m_iPondID, sizeof(m_iPondID), &dwNum, NULL); //pond number + WriteFile(hFile, &m_dwPondAlpha, sizeof(m_dwPondAlpha), &dwNum, NULL); // pond alpha WriteFile(hFile, &m_fWaterHeight, sizeof(m_fWaterHeight), &dwNum, NULL); WriteFile(hFile, &m_iWaterScaleWidth, sizeof(m_iWaterScaleWidth), &dwNum, NULL); WriteFile(hFile, &m_iWaterScaleHeight, sizeof(m_iWaterScaleHeight), &dwNum, NULL); @@ -956,9 +961,9 @@ bool CPondMesh::Save(HANDLE hFile) { WriteFile(hFile, &m_fWaterScaleZ, sizeof(m_fWaterScaleZ), &dwNum, NULL); WriteFile(hFile, &m_bUVState, sizeof(m_bUVState), &dwNum, NULL); - WriteFile(hFile, m_vDrawBox, sizeof(m_vDrawBox), &dwNum, NULL); // ÇÑÁÙ¿¡ ÀÖ´Â Á¡ °¹¼ö + WriteFile(hFile, m_vDrawBox, sizeof(m_vDrawBox), &dwNum, NULL); // Number of dots in one line - WriteFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + WriteFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { WriteFile(hFile, m_pViewVts, m_iVC * sizeof(__VertexXyzT2), &dwNum, NULL); // vertex buffer } @@ -978,15 +983,15 @@ bool CPondMesh::Save(HANDLE hFile) { // ================================================================================== void CPondMesh::Rotation(__Matrix44 mRot, __Vector3 vCenter) { - // ¹é¾÷(µÇµ¹¾Æ°¨)À» ÇÒ ¼öÀÖ´Ù. + // You can back up (go back). // if(m_bThisBackup==FALSE) m_bThisBackup = TRUE; - // Áß°£°ªÀ» Áß½ÉÀ¸·Î ȸÀü½ÃŲ´Ù + // Rotate around the median value int nCount; __VertexXyzT2 * pViewVts = m_pViewVts; __Vector3 vPos, vStPos; - // vStPos = pViewVts[(m_iVC+m_iLastVertexNum)/2].v; // ÇöÀç ¿¬¸øÀÇ Áß°£ À§Ä¡±¸ÇÔ + // vStPos = pViewVts[(m_iVC+m_iLastVertexNum)/2].v; // Find the middle position of the current pond vStPos = vCenter; for (nCount = 0; nCount < m_iVC; nCount++) { vPos = *pViewVts; @@ -1010,7 +1015,7 @@ void CPondMesh::SetVtx() int iNumVertex = m_iVC/m_iWaterScaleWidth; - // óÀ½ ÇÑ ÁÙ¿¡ ´ëÇØ x¹æÇ⸸ º¯ÇÔ + // Only the x-direction changes for the first line pVtx->Set(pViewVtx->x,pViewVtx->y,pViewVtx->z); for (int j=1;jx = (pVtx-m_iWaterScaleWidth)->x + (pViewVtx->x-(pViewVtx-m_iWaterScaleWidth)->x) / tempX; @@ -1040,7 +1045,7 @@ void CPondMesh::SetVtx() } - // Àç Á¶Á¤(È­¸é¿¡ Á¤È®È÷ ³ª¿À°Ô Çϱâ À§ÇØ) + // Re-adjust (to make it appear correctly on screen) ReCalcUV(); m_bThisFixPosion = TRUE; @@ -1085,9 +1090,9 @@ int CPondMesh::AddVertex(__Vector3* pvPos) { // ASSERT(MAX_PONDMESH_VERTEX>m_iVC+2 && (m_iVC%2) == 0); // ASSERT(m_iVC<2); - ASSERT(MAX_PONDMESH_VERTEX>m_iVC+m_iWaterScaleWidth*m_iWaterScaleHeight); // ¾ÕÀ¸·Î ¸¸µé¾îÁú Á¡ÀǼýÀÚ°¡ max¿¡ ´ÞÇÏ´ÂÁö È®ÀÎ + ASSERT(MAX_PONDMESH_VERTEX>m_iVC+m_iWaterScaleWidth*m_iWaterScaleHeight); // Check whether the number of points to be created reaches max - // ù ½ÃÀÛÁ¡°ú µÎ¹øÂ°Á¡À¸·Î 4m¾¿ ²÷¾î ³ÖÀ½ + // Cut 4m apart from the first starting point and the second point. m_pVertices[m_iVC] = vPos1; m_pViewVts[m_iVC].Set(vPos1,0,0,0,0); @@ -1132,7 +1137,7 @@ int CPondMesh::AddVertex() return m_iVC; } - // ±âÁ¸ ¸¶Áö¸· µÎÁ¡°ú Á÷°¢ÀÎ ¹æÇâ ±¸Çϱâ(4mÀÇ °Å¸®·Î ÂïÀδÙ) + // Find the direction perpendicular to the last two existing points (taken at a distance of 4m) __Vector3 v1, v2, v3, vDir, vDiff, vScaleDiff; v1 = m_pVertices[m_iVC-2]; v2 = m_pVertices[m_iVC-1]; diff --git a/src/tool/N3ME/PondMesh.h b/src/tool/N3ME/PondMesh.h index 00f6468d..a1c9f45b 100644 --- a/src/tool/N3ME/PondMesh.h +++ b/src/tool/N3ME/PondMesh.h @@ -1,7 +1,7 @@ // PondMesh.h: interface for the CPondMesh class. // -// ´ÜÁö °¡ÀåÅ« »ç°¢ÇüÀÇ ¿µ¿ª°ú ¶¥ÀÇ ÁöÇüÀÌµÉ ¿µ¿ª¸¸ ÀÖÀ½ (4m ¾¿ÀÇ Á¡°£ÀÇ °Å¸®) -// client¿¡¼­ ±¸Çö +// There is only the largest rectangular area and the area that will be the terrain of the land (4m distance between points) +// Implemented in client ////////////////////////////////////////////////////////////////////// #pragma once @@ -18,7 +18,7 @@ class CLyTerrain; class CPondMesh : public CN3BaseFileAccess { public: - // ±âÁ¸ÇÔ¼ö + // existing function CN3Texture * TexGet() const { return m_pTexture; } int VertexCount() const { return m_iVC; } int RectVCount() const { return m_iRectVC; } @@ -28,46 +28,46 @@ class CPondMesh : public CN3BaseFileAccess { void Rotation(__Matrix44 mRot, __Vector3 vCenter); protected: - // ¼±ÅÃµÈ Á¡Á¦¾î + // selected point control typedef struct __SELECT_PO { - int ix; // m_iWaterScaleWidth »óÀÇ ¼ýÀÚ - int iz; // m_iWaterScaleHeight »óÀÇ ¼ýÀÚ + int ix; // Number on m_iWaterScaleWidth + int iz; // Number on m_iWaterScaleHeight }; typedef typename std::list<__SELECT_PO *>::iterator it_SelVtx; - std::list<__SELECT_PO *> m_vSelect; // ¼±ÅÃµÈ Á¡µéÀÇ °ü¸® + std::list<__SELECT_PO *> m_vSelect; //Management of selected points - // ±âº» µ¥ÀÌŸ + // basic data int m_iPondID; - float m_fWaterHeight; // ¹°³ôÀÌ - int m_iWaterScaleWidth; // °¡·Î¹æÇâÀÇ Á¡ÀÇ °¹¼ö - int m_iWaterScaleHeight; // ¼¼·Î¹æÇâÀÇ Á¡ÀÇ °¹¼ö - DWORD m_dwPondAlpha; // ¹°ÀÇ ¾ËÆÄ + float m_fWaterHeight; // water level + int m_iWaterScaleWidth; // Number of horizontal points + int m_iWaterScaleHeight; // Number of dots in the vertical direction + DWORD m_dwPondAlpha; // alpha of water float m_fTU; float m_fTV; - float m_fWaterScaleX, m_fWaterScaleZ; // Á¤·ÄÇßÀ»½Ã Á¡°£ÀÇ °Å¸® + float m_fWaterScaleX, m_fWaterScaleZ; // Distance between points when sorted int m_iBackUpWidht; int m_iBackUpHeight; - __Vector3 m_pVertices[MAX_PONDMESH_VERTEX]; // ÀúÀå,¹é¾÷¿ëÀ¸·Î ¾²ÀÌ´Â °ª - __VertexXyzT2 m_pViewVts[MAX_PONDMESH_VERTEX]; // È­¸é¿¡ »Ñ·ÁÁö´Â °ª + __Vector3 m_pVertices[MAX_PONDMESH_VERTEX]; // Value used for storage and backup + __VertexXyzT2 m_pViewVts[MAX_PONDMESH_VERTEX]; // Value displayed on the screen WORD * m_pdwIndex; //[MAX_PONDMESH_LINE*MAX_PONDMESH_LINE*6]; int m_iIC; // Index Buffer Count. int m_iVC; // Vertex Count. CN3Texture * m_pTexture; - BOOL m_bUVState; // TRUE Á¡¿¡ °ü¿©ÇÏ¿©, FALSE ÆòÆíÇÏ°Ô (uvÀâÀ½) + BOOL m_bUVState; // TRUE involved in the point, FALSE flat (uv noise) - // ¿¬¸ø¿µ¿ª¿¡ °üÇÑ µ¥ÀÌŸ - __Vector3 m_vDrawBox[4]; // È­¸é»ó¿¡ ³ª¿Ã ¿µ¿ª(¿ÞÂÊÀ§ºÎÅÍ ½Ã°è¹æÇâÀ¸·Î) - __VertexXyzColor m_ViewRect[5]; // È­¸é¿¡ ±×¸±¼± + // data about pond area + __Vector3 m_vDrawBox[4]; // Area to appear on screen (clockwise from top left) + __VertexXyzColor m_ViewRect[5]; // Line to draw on the screen int m_iRectVC; - __VertexXyzT2 m_pRectVts[100]; // ¿µ¿ªÁÙ¿¡ ±×·ÁÁú Á¡µé + __VertexXyzT2 m_pRectVts[100]; // Points to be drawn on the area line - __Vector3 m_vSelectBox[2]; // Á¡µéÀ» ¼±ÅÃÇßÀ»½Ã Á¡µéÀÇ ¿µ¿ª(Á¡µéÀÌ È­¸é¿µ¿ªÀ» ¹ù¾î³µÀ»½Ã) + __Vector3 m_vSelectBox[2]; // Area of dots when selected (if dots exceed the screen area) - // ÁöÇüÁ¤º¸ Âü°í + // Refer to terrain information CLyTerrain * m_pTerrain; public: @@ -80,7 +80,7 @@ class CPondMesh : public CN3BaseFileAccess { virtual bool Load1001(HANDLE hFile); virtual bool Save(HANDLE hFile); void Render(); - void RenderVertexPoint(); // Àߺ¸ÀÌ°Ô Á¡¸¸ ´Ù½Ã ±×¸®±â + void RenderVertexPoint(); // Redraw only the dots to make them more visible __Vector3 GetCenter(); float SettingDrawPos(__Vector3 vPos1, __Vector3 vPos2, __Vector3 vPos3, __Vector3 vPos4, int iLinePosNum); @@ -100,33 +100,35 @@ class CPondMesh : public CN3BaseFileAccess { BOOL SetTextureName(LPCTSTR pszFName); public: - // »õ·Î Ãß°¡ÇѰųª °íÄ£°Å + // Newly added or modified void SetTerrain(CLyTerrain * pCTerrain) { m_pTerrain = pCTerrain; } - void MakeDrawRect(__Vector3 * pvPos); // È­¸é¿¡ º¸ÀÏ ¿¬¸øÀÇ ¿µ¿ªÅ׵θ® ¸¸µç´Ù - void UpdateDrawPos(); // ¿µ¿ªÁÙ¿¡ ±×·ÁÁú Á¡µé + void MakeDrawRect(__Vector3 * pvPos); // Create the border of the pond that will be visible on the screen + void UpdateDrawPos(); // Points to be drawn on the area line - void UpdateWaterHeight(); // ÇöÀçÀÇ ¹°ÀÇ ³ôÀÌ·Î ¼¼ÆÃ - void UpdateMovePos(__Vector3 vMovingPos); // À̵¿ + void UpdateWaterHeight(); // Set to current water level + void UpdateMovePos(__Vector3 vMovingPos); // movement - void MakePondPos(); // ÇöÀç ¹Ú½º¿¡¼­ ¿¬¸øÀ» ¸¸µç´Ù + void MakePondPos(); // Create a pond in the current box void MakeIndex(); - void ReCalcUV(); // Á¡¿¡ »ó°ü¾øÀÌ ÆòÆíÇÏ°Ô »Ñ¸°´Ù - void ReCalcVexUV(); // Á¡¿¡ °ü¿©ÇÏ¿© »Ñ¸°´Ù + void ReCalcUV(); //Sprinkle evenly regardless of dots + void ReCalcVexUV(); // Spray by interfering with the point - void EstimatePos(); // ÁÙÀÇ Å©±â¿¡ µû¶ó Á¡µéÀÇ °¹¼ö¸¦ ÀÓÀÇ·Î ÁöÁ¤//// + void EstimatePos(); // Randomly assign the number of dots depending on the size of the line//// - void ClearSelectPos(); // ¼±ÅÃÁ¡¿¡ °üÇÑ µ¥ÀÌÅÍ ÃʱâÈ­ - void InputSelectPos(float fX, float fY, float fZ, int iVC = -1); // ¼±ÅÃÇÑ Á¡µé¿¡ ´ëÇÑ ÀÚ·áÀÔ·Â - BOOL InputDummyMovingPos(__Vector3 vDummyMovingPos, BOOL bMovePond); // ´õ¹Ì°¡ ¿òÁ÷¿´À»½Ã ³ª¸ÓÁöÁ¡À» ó¸®Çϱâ À§ÇØ + void ClearSelectPos(); // Initialize data regarding selection point + void InputSelectPos(float fX, float fY, float fZ, int iVC = -1); // Input data for selected points + BOOL InputDummyMovingPos(__Vector3 vDummyMovingPos, + BOOL bMovePond); // To process the remaining points when the dummy moves protected: void MovingPos(); - void CalcuWidth(int iSx, int iSy, int iEx = -1, int iEy = -1); // óÀ½ Á¿ì·ÎÀÇ °è»êÀ» ÇÑ´Ù - void SetAllPos(int iSx, int iSy, int iEx = -1, int iEy = -1); // óÀ½ °è»êÇÑÁ¡µé¿Ü¿¡ Á¡µé ÁÂÇ¥ °è»ê - void ReInputBackPos(); // »õ·Î ¿Å±äÁÂÇ¥¸¦ ¹é¾÷¿¡ ³Ö¾îÁÜ + void CalcuWidth(int iSx, int iSy, int iEx = -1, int iEy = -1); // First do the left and right calculations. + void SetAllPos(int iSx, int iSy, int iEx = -1, + int iEy = -1); // Calculate coordinates of points in addition to the initially calculated points + void ReInputBackPos(); // Put the newly moved coordinates in the backup. - public: // ´ÙÀ̾ó·Î±× »óÀÚ¿¡¼­ ¾²ÀÌ´Â ÇÔ¼ö + public: // Functions used in dialog boxes void SetPondID(int iPondID) { m_iPondID = iPondID; } void SetWaterHeight(float fHeight); void SetWaterScaleWidht(int iWidhtNum) { diff --git a/src/tool/N3ME/PondMng.cpp b/src/tool/N3ME/PondMng.cpp index 50f2908a..3eac7830 100644 --- a/src/tool/N3ME/PondMng.cpp +++ b/src/tool/N3ME/PondMng.cpp @@ -149,7 +149,7 @@ bool CPondMng::Save(HANDLE hFile) { // version 1000 - alpha input int nFileVersion = 1001; - WriteFile(hFile, &nFileVersion, sizeof(nFileVersion), &dwNum, NULL); // ¿¬¸ø ¹øÈ£ + WriteFile(hFile, &nFileVersion, sizeof(nFileVersion), &dwNum, NULL); //pond number int iSize = m_PondMeshes.size(); WriteFile(hFile, &iSize, 4, &dwNum, NULL); @@ -185,7 +185,7 @@ void CPondMng::Render() { hr = s_lpD3DDev->SetRenderState(D3DRS_FOGENABLE, FALSE); } - // ±âÁ¸¿¡ ÀÖ´ø ¿¬¸ø ±×¸®±â + // Drawing an existing pond it_PondMesh it = m_PondMeshes.begin(); int iSize = m_PondMeshes.size(); for (int i = 0; i < iSize; i++, it++) { @@ -194,7 +194,7 @@ void CPondMng::Render() { } if (m_bEditMode) { - // ¿¬¸ø »õ·Î ¸¸µå´Â ÁßÀÌ¸é µå·¡±× ¼± ±×¸®±â + // If you are creating a new pond, draw a drag line if (m_PCursorMode == PCM_CREATE) { __Matrix44 matWorld; matWorld.Identity(); @@ -210,7 +210,7 @@ void CPondMng::Render() { s_lpD3DDev->DrawPrimitiveUP(D3DPT_LINESTRIP, 4, m_CreateLine, sizeof(__VertexXyzColor)); } - // dummy »óÀÚ ±×¸®±â + // draw dummy box m_VtxPosDummy.Render(); BOOL bisFix = FALSE; @@ -221,12 +221,12 @@ void CPondMng::Render() { for (int i = 0; i < iSize; i++, it++) { pSelPond = *it; if (pSelPond) { - // ¼±ÅÃµÈ ¿¬¸øÀÇ Á¡±×¸®±â (»â±ë) + // Drawing points on the selected pond (pinching) pSelPond->RenderVertexPoint(); } } - // ¼±ÅÃµÈ Á¡ ±×¸®±â (ÃÊ·Ï) + // Draw selected point (green) iSize = m_SelVtxArray.GetSize(); if (iSize > 0) { // transform @@ -262,7 +262,7 @@ void CPondMng::Render() { int iScreenY = int((1.0f - (v.y / v.w)) * (vp.Height) / 2.0f); if (iScreenX >= (int)vp.X && iScreenX <= (int)vp.Width && iScreenY >= (int)vp.Y && iScreenY <= (int)vp.Height) { - // set X (Á¡À» ÂïÀ¸¸é 1Çȼ¿¹Û¿¡ ¾ÈÂïÀ¸¹Ç·Î XÇ¥½Ã¸¦ ±×¸°´Ù. + // set X (Since only 1 pixel is drawn when a dot is placed, draw an X mark.) Vertices[0].Set(float(iScreenX - 2), float(iScreenY - 2), 0.5f, 0.5f, clr); Vertices[1].Set(float(iScreenX + 2), float(iScreenY + 2), 0.5f, 0.5f, clr); Vertices[2].Set(float(iScreenX + 2), float(iScreenY - 2), 0.5f, 0.5f, clr); @@ -273,7 +273,7 @@ void CPondMng::Render() { } } - // µå·¡±× ¿µ¿ª ±×¸®±â + // Draw drag area if (PCM_SELECTING == m_PCursorMode) { m_pMainFrm->GetMapMng()->RenderDragRect(&m_rcSelDrag); } @@ -295,43 +295,43 @@ CPondMesh * CPondMng::CreateNewPondMesh() { CPondMesh * pRM = new CPondMesh; __Vector3 vPos[4]; - vPos[0].Set(m_CreateLine[0].x, m_CreateLine[0].y, m_CreateLine[0].z); // ¿ÞÂÊÀ§ - vPos[1].Set(m_CreateLine[1].x, m_CreateLine[1].y, m_CreateLine[1].z); // ¿À¸¥ÂÊÀ§ - vPos[2].Set(m_CreateLine[2].x, m_CreateLine[2].y, m_CreateLine[2].z); // ¿À¸¥ÂÊ ¾Æ·¡ - vPos[3].Set(m_CreateLine[3].x, m_CreateLine[3].y, m_CreateLine[3].z); // ¿ÞÂʾƷ¡ + vPos[0].Set(m_CreateLine[0].x, m_CreateLine[0].y, m_CreateLine[0].z); // top left + vPos[1].Set(m_CreateLine[1].x, m_CreateLine[1].y, m_CreateLine[1].z); // top right + vPos[2].Set(m_CreateLine[2].x, m_CreateLine[2].y, m_CreateLine[2].z); // right below + vPos[3].Set(m_CreateLine[3].x, m_CreateLine[3].y, m_CreateLine[3].z); // bottom left CLyTerrain * pTerrain = m_pMainFrm->GetMapMng()->GetTerrain(); - pRM->SetTerrain(pTerrain); // ÁöÇüÆ÷ÀÎÅÍ ÀÔ·Â - pRM->MakeDrawRect(vPos); // ¿µ¿ªÀÔ·Â + pRM->SetTerrain(pTerrain); // Terrain pointer input + pRM->MakeDrawRect(vPos); // Area input pRM->MakePondPos(); - SelPondRelease(); // Áö±Ý±îÁ¤ ¼±ÅÃÇѰŠÀÏ´Ü Áö¿ì±â + SelPondRelease(); // Delete whatever you have selected so far int iID = 0; - m_pSelPonds.push_back(pRM); // ÀÏ´Ü ³Ö±â(¾ÆµÚ°Ë»çÀ§ÇØ) + m_pSelPonds.push_back(pRM); // Put it in first (to check the back) while (SetPondID(pRM, iID) == FALSE) { - iID++; // »õ·Î¿î ¾ÆµÚãÀ½ + iID++; // Found a new one } CDlgPondProperty dlg(this); dlg.m_IsModalDialog = TRUE; - if (dlg.DoModal() == IDCANCEL) // Áö±Ý ¸¸µç¿¬¸øÁö¿ì±â + if (dlg.DoModal() == IDCANCEL) // Delete the pond you just created { SelPondDelete(pRM); pRM = NULL; } - if (pRM) // ¸¸µé·Á´Â ¿¬¸ø + if (pRM) // the pond you want to make { m_PondMeshes.push_back(pRM); SelPondRelease(); - // ¿Ü°ûÁ¡µéÀ» ¹ÙÅÁÀ¸·Î °¡¿îµ¥ Á¡À» ÇâÇÏ¿© ÀÏÁ¤°Å¸®¸¶´Ù Á¡µéÀ» ¹èÄ¡ÇÑ´Ù//// + // Based on the outer points, dots are placed at a certain distance toward the center point. //// } return pRM; } -void CPondMng::RemovePondMesh(int iPondID) // ¿¬¸øÀ» ¸¸µé°Å³ª ¼±ÅÃÇÏ¿© Áö¿ì°íÀÚ ¹öư ´­·¶À»½Ã +void CPondMng::RemovePondMesh(int iPondID) // When you press the button to create or select a pond and delete it, { it_PondMesh it = m_PondMeshes.begin(); int iSize = m_PondMeshes.size(); @@ -397,26 +397,27 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { switch (pMsg->message) { case WM_MOUSEMOVE: { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (bCtrlKeyState == 2) // ¿¬¸øÀ» ȸÀüÇÏ´Â Áß + if (bCtrlKeyState == 2) // Rotating pond { SetRotatePonds(ptDownBuff.x - point.x); ptDownBuff = point; return TRUE; } - if (PCM_CREATE == m_PCursorMode) { // »õ·Î¿î ¿¬¸ø Ãß°¡ÇÒ¶§ µå·¡±× ÇÏ´Â ¼± ¼³Á¤ - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + if (PCM_CREATE == m_PCursorMode) { // Setting the dragging line when adding a new pond + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // The point where the above plane meets the straight line (point to be found) vPN.Set(0, 1, 0); vPV = vMouseStrPos; - m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); // ÀÌÇÔ¼ö Àá½Ã ºô·Á¾¸. + m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); // Let me borrow this function for a moment. __Vector3 vPR = vPV - vRayOrig; float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); - vPos = vRayOrig + vRayDir * fT; // ½ÃÀÛÁ¡°ú ¸¶¿ì½ºÁ¡À» ±¸ÇßÀ½ + vPos = vRayOrig + vRayDir * fT; // Find the starting point and mouse point. - ReSetDrawRect(vMouseStrPos, vPos); // ¹ÞÀº µÎÁ¡À» ¸Ê»óÀÇ »ç°¢ÇüÅ·Πº¯È¯ + ReSetDrawRect(vMouseStrPos, vPos); // Convert the two points received into a rectangle on the map. return TRUE; } else if (PCM_SELECTING == m_PCursorMode) { m_rcSelDrag.right = point.x; @@ -433,7 +434,7 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { } ptDownBuff = point; - if (bCtrlKeyState > 0) // ¿¬¸øÀ» ȸÀüÇÏ´Â Áß + if (bCtrlKeyState > 0) // Rotating pond { if (bCtrlKeyState < 2) { bCtrlKeyState++; @@ -442,7 +443,7 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { return TRUE; } - if (PCM_CREATE == m_PCursorMode) { // »õ·Î¿î ¿¬¸ø Ãß°¡ Ãë¼Ò + if (PCM_CREATE == m_PCursorMode) { // Cancel adding new pond m_PCursorMode = PCM_NONE; ReleaseCapture(); return TRUE; @@ -455,7 +456,7 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { } } break; case WM_LBUTTONUP: { - if (bCtrlKeyState > 0) // ¿¬¸øÀ» ȸÀüÇÏ´Â Áß + if (bCtrlKeyState > 0) // Rotating pond { bCtrlKeyState--; return TRUE; @@ -479,36 +480,36 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { m_rcSelDrag.bottom = point.y; } - // µå·¹±×°¡ ¾Æ´Ï°í ±×³É Ŭ¸¯Àϰæ¿ì µå·¡±× ¿µ¿ªÀ» 3x3Á¤µµ·Î Àâ¾ÆÁØ´Ù. + // If it is just a click rather than a drag, the drag area is set to about 3x3. if (m_rcSelDrag.right - m_rcSelDrag.left < 3 && m_rcSelDrag.bottom - m_rcSelDrag.top < 3) { m_rcSelDrag.left = point.x - 1; m_rcSelDrag.right = point.x + 1; m_rcSelDrag.top = point.y - 1; m_rcSelDrag.bottom = point.y + 1; } - // shiftŰ´Â ¿©·¯°³ÀÇ ºÐ»êµÈ Á¡(µé)À» ¼±Åýà + // The shift key selects multiple distributed points(s). if (SelectVtxByDragRect(&m_rcSelDrag, (pMsg->wParam & MK_SHIFT) ? TRUE : FALSE)) { - vMouseStrPos = m_VtxPosDummy.m_vPos; // ´õ¹ÌÀÇ À§Ä¡ ÀÔ·Â + vMouseStrPos = m_VtxPosDummy.m_vPos; // Enter the location of the dummy } else { - m_PCursorMode = PCM_NONE; // ¼±ÅÃµÈ Á¡ÀÌ ¾øÀ¸¹Ç·Î + m_PCursorMode = PCM_NONE; // Since there are no points selected } return TRUE; } } break; case WM_RBUTTONDOWN: { - if (bCtrlKeyState) { // ¿¬¸øÀÇ ¼±ÅÃµÈ Á¡¿¡¼­ ȸÀüÀ» ÇÔ + if (bCtrlKeyState) { // Rotates at a selected point in the pond return TRUE; } if (m_bMovePond == TRUE) { m_bMovePond = FALSE; } - if (PCM_SELECT == m_PCursorMode) { // Select Ãë¼Ò + if (PCM_SELECT == m_PCursorMode) { // Select Cancel m_PCursorMode = PCM_NONE; ReleaseCapture(); return TRUE; - } else if (PCM_NONE == m_PCursorMode) { // »õ·Î¿î ¿¬¸ø Ãß°¡ + } else if (PCM_NONE == m_PCursorMode) { // Added new pond POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; CLyTerrain * pTerrain = m_pMainFrm->GetMapMng()->GetTerrain(); @@ -516,11 +517,11 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { if (pTerrain && pTerrain->Pick(point.x, point.y, &vPos)) { m_PCursorMode = PCM_CREATE; - vMouseStrPos = vPos; // óÀ½ÁöÁ¡ ÀÔ·Â + vMouseStrPos = vPos; // Enter the first point - DWORD color = 0xffffff00; // ±×·ÁÁú ¼±»ö + DWORD color = 0xffffff00; // Line color to be drawn for (int i = 0; i < 5; ++i) { - m_CreateLine[i].Set(vPos, color); // ÃʱâÈ­ + m_CreateLine[i].Set(vPos, color); // reset } return TRUE; @@ -528,29 +529,30 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { } } break; case WM_RBUTTONUP: { - if (bCtrlKeyState) { // ¿¬¸øÀÇ ¼±ÅÃµÈ Á¡¿¡¼­ ȸÀüÀ» ÇÔ + if (bCtrlKeyState) { // Rotates at a selected point in the pond return TRUE; } POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (PCM_CREATE == m_PCursorMode) { // »õ·Î¿î ¿¬¸ø Ãß°¡ + if (PCM_CREATE == m_PCursorMode) { // Added new pond m_PCursorMode = PCM_NONE; ReleaseCapture(); - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // Point where the above plane meets the straight line (point to find) vPN.Set(0, 1, 0); vPV = vMouseStrPos; - m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); // ÀÌÇÔ¼ö Àá½Ã ºô·Á¾¸. + m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); __Vector3 vPR = vPV - vRayOrig; float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); vPos = vRayOrig + vRayDir * fT; ReSetDrawRect(vMouseStrPos, vPos); - CPondMesh * pRM = CreateNewPondMesh(); // »õ·Î¿î ¿¬¸ø + CPondMesh * pRM = CreateNewPondMesh(); // new pond SetSelPond(pRM); return TRUE; } @@ -580,7 +582,8 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { default: { if (bCtrlKeyState > 0) { - if (!(GetAsyncKeyState(VK_CONTROL) & 0xff00)) // üũÇÏ¿© ¶¼¾îÁø »óÅÂ¸é ¿ø»óº¹±Í + if (!(GetAsyncKeyState(VK_CONTROL) & + 0xff00)) // If it is checked and removed, it will return to its original state. { if (bCtrlKeyState != 0) { bCtrlKeyState = 0; @@ -588,7 +591,7 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { return FALSE; } - if (GetAsyncKeyState('A') & 0xff00) { // ÇöÀç ¼±ÅÃµÈ ¿¬¸ø(µé)ÀÇ ¸ðµçÁ¡À» ´ë»óÀ¸·Î ÇÑ´Ù + if (GetAsyncKeyState('A') & 0xff00) { // Targets all points in the currently selected pond(s) MovePond(); } return TRUE; @@ -604,7 +607,8 @@ BOOL CPondMng::MouseMsgFilter(LPMSG pMsg) { return FALSE; } -void CPondMng::ReSetDrawRect(__Vector3 vStrPos, __Vector3 vEndPos) // ¹ÞÀº µÎ Á¡À¸·Î ¸Ê»óÀÇ »ç°¢ÇüÅÂÀÇ Á¡ ¸¸µë +void CPondMng::ReSetDrawRect(__Vector3 vStrPos, + __Vector3 vEndPos) // Create a rectangular point on the map with the two points received. { if (vStrPos.x > vEndPos.x) { m_CreateLine[0].x = vStrPos.x; @@ -732,7 +736,7 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { } if (bAdd == FALSE) { m_SelVtxArray.RemoveAll(); - SetSelPond(NULL); // ¼±ÅÃÇÑ¿¬¸ø ÇØÁ¦.. + SetSelPond(NULL); // Clear selected pond.. } } @@ -749,16 +753,16 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { CPondMesh * pSelPond = NULL; int iSize = m_pSelPonds.size(); it_PondMesh it = m_pSelPonds.begin(); - for (int i = 0; i < iSize; ++i, ++it) // ÀÌ¹Ì ¼±ÅÃµÈ ¿¬¸øÀÌ ÀÖ´Ù¸é.. + for (int i = 0; i < iSize; ++i, ++it) // If there is already a pond selected... { pSelPond = *it; if (pSelPond == NULL) { continue; } - int iVC = pSelPond->VertexCount(); // ±×¿¬¸øÀÇ Á¡ ¼ýÀÚ¸¦ ±¸Çϱâ + int iVC = pSelPond->VertexCount(); // Find the number of points in the pond for (int k = 0; k < iVC; ++k) { - __VertexXyzT2 * pVtx = pSelPond->GetVertex(k); // Á¡ Çϳª ±¸Çϱâ + __VertexXyzT2 * pVtx = pSelPond->GetVertex(k); // find one point if (pVtx == NULL) { continue; } @@ -784,12 +788,13 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { } } if (bAleadySelected) { - m_SelVtxArray.RemoveAt(j); // ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ¼±Åøñ·Ï¿¡¼­ Á¦°Å + m_SelVtxArray.RemoveAt(j); // already exists, so remove from selection list } else { - m_SelVtxArray.InsertAt(0, pVtx); // Ãß°¡ + m_SelVtxArray.InsertAt(0, pVtx); // addition } - pSelPond->InputSelectPos(pVtx->x, pVtx->y, pVtx->z, k); // ÁÂÇ¥ÀÔ·ÂÇÏ¿© °¡»óÀÇ ¿µ¿ªÀâÀ½ + pSelPond->InputSelectPos(pVtx->x, pVtx->y, pVtx->z, + k); // Virtual area noise by inputting coordinates } } else { BOOL bAleadySelected = FALSE; @@ -801,17 +806,18 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { } } if (bAleadySelected) { - m_SelVtxArray.RemoveAt(j); // ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ¼±Åøñ·Ï¿¡¼­ Á¦°Å + m_SelVtxArray.RemoveAt(j); // already exists, so remove from selection list } else { - m_SelVtxArray.InsertAt(0, pVtx); // Ãß°¡ + m_SelVtxArray.InsertAt(0, pVtx); // addition } - pSelPond->InputSelectPos(pVtx->x, pVtx->y, pVtx->z); // ÁÂÇ¥ÀÔ·ÂÇÏ¿© °¡»óÀÇ ¿µ¿ªÀâÀ½ + pSelPond->InputSelectPos(pVtx->x, pVtx->y, pVtx->z); // Virtual area noise by inputting coordinates } } } - if (iSize == 0) // ¼±ÅÃµÈ ¿¬¸øÀÌ ¾Æ¹«°Íµµ ¾ø´Ù¸é (¸ðµç¿¬¸ø °Ë»öÇØ¼­ ¿¬¸ø ¼±ÅÃÈÄ ±× ¿¬¸ø Á¡µé¸¸ ¼±ÅÃ..) + if (iSize == + 0) // If there are no selected ponds (search all ponds, select a pond, and then select only those pond points...) { ASSERT(m_SelVtxArray.GetSize() == 0); @@ -824,11 +830,11 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { continue; } - int iVC = pRM->VertexCount(); // ÀÌ¿¬¸øÀÇ Á¡ °¹¼ö + int iVC = pRM->VertexCount(); // Number of points in this pond pSelPond = NULL; bChkSamePond = TRUE; for (int j = 0; j < iVC; ++j) { - __VertexXyzT2 * pVtx = pRM->GetVertex(j); // Á¡ Çϳª ±¸Çϱâ + __VertexXyzT2 * pVtx = pRM->GetVertex(j); // find one point if (pVtx == NULL) { continue; } @@ -844,8 +850,8 @@ BOOL CPondMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond) { float fScreenY = (1.0f - (v.y / v.w)) * (vp.Height) / 2.0f; if (fScreenX >= pRect->left && fScreenX <= pRect->right && fScreenY >= pRect->top && fScreenY <= pRect->bottom) { - m_SelVtxArray.Add(pVtx); // Ãß°¡ - pRM->InputSelectPos(pVtx->x, pVtx->y, pVtx->z, j); // ÁÂÇ¥ÀÔ·ÂÇÏ¿© °¡»óÀÇ ¿µ¿ªÀâÀ½ + m_SelVtxArray.Add(pVtx); // addition + pRM->InputSelectPos(pVtx->x, pVtx->y, pVtx->z, j); // Virtual area noise by inputting coordinates if (bChkSamePond == TRUE) { pSelPond = pRM; SetSelPond(pSelPond, m_bChooseGroup); @@ -901,14 +907,14 @@ void CPondMng::MakeGameFiles(HANDLE hFile, float fSize) { int iVC = pRM->VertexCount(); __VertexXyzT2 *pVtx0 = pRM->GetVertex(0), *pSrcVtx = NULL; ASSERT(pVtx0); - WriteFile(hFile, &iVC, sizeof(iVC), &dwNum, NULL); // Á¡ °¹¼ö + WriteFile(hFile, &iVC, sizeof(iVC), &dwNum, NULL); // number of points if (iVC <= 0) { continue; } int iWidthVtxNum = pRM->GetWaterScaleWidht(); - WriteFile(hFile, &iWidthVtxNum, sizeof(int), &dwNum, NULL); // Á¡ °¹¼ö + WriteFile(hFile, &iWidthVtxNum, sizeof(int), &dwNum, NULL); // number of points CN3Texture * pPondTex = pRM->TexGet(); int iLen = 0; @@ -984,7 +990,7 @@ void CPondMng::ReCalcSelectedVertex() { m_pMainFrm->Invalidate(FALSE); } -void CPondMng::SetVtxCenter() // ¿¬¸ø(µé)ÀÇ Áß°£Á¡À» ã¾Æ ¼¼ÆÃ,¿¹Àü ½ºÄÉÀϵµ ¹é¾÷ +void CPondMng::SetVtxCenter() // Find the midpoint of the pond(s) and set it, and also back up the old scale. { int iSize = m_pSelPonds.size(); m_vPondsCenter.Zero(); @@ -1003,7 +1009,7 @@ void CPondMng::ReCalcSelectedVertex() { for (int i = 0; i < iSize; i++, it++) { CPondMesh * pRM = *it; if (pRM) { - pvCenter[i] = pRM->GetCenter(); // ¿¬¸ø(µé)ÀÇ Áß°£Á¡À» ¹ÞÀ½, ÇöÀçÀÇ ½ºÄÉÀϵµ ¹é¾÷ + pvCenter[i] = pRM->GetCenter(); // Receive midpoint of pond(s), also backing up current scale nCenterCnt++; } } @@ -1136,7 +1142,7 @@ void CPondMng::InputDummyMovePos(__Vector3 vMovePos) { } } - if (m_pDlgProperty && (vMovePos.y != 0.0f || m_bMovePond == TRUE)) // ³ôÀ̳ª ¿òÁ÷¿©¼­ Á¤º¸¸¦ °»½Å + if (m_pDlgProperty && (vMovePos.y != 0.0f || m_bMovePond == TRUE)) // Update information by height or movement { m_pDlgProperty->UpdateInfo(); MainInvalidate(); @@ -1158,7 +1164,7 @@ void CPondMng::StationPond() { } void CPondMng::MovePond() { - SelectVtxByDragRect(NULL, FALSE, TRUE); // ÀÏ´Ü ÇöÀç ¼±ÅÃµÈ ¸ðµç ¿¬¸øÀÇ Á¡µé ÀüºÎ ¼±Åà + SelectVtxByDragRect(NULL, FALSE, TRUE); // First, select all points in all currently selected ponds. m_bMovePond = TRUE; MainInvalidate(); } \ No newline at end of file diff --git a/src/tool/N3ME/PondMng.h b/src/tool/N3ME/PondMng.h index 218dc704..5f6366cc 100644 --- a/src/tool/N3ME/PondMng.h +++ b/src/tool/N3ME/PondMng.h @@ -55,23 +55,23 @@ class CPondMng : public CN3BaseFileAccess { protected: std::list m_PondMeshes; // Pond Mesh list - std::list m_pSelPonds; // ¼±ÅÃµÈ PondMesh - CTypedPtrArray m_SelVtxArray; // ¼±ÅÃµÈ Á¡µé + std::list m_pSelPonds; // Selected PondMesh + CTypedPtrArray m_SelVtxArray; // selected points std::list<__Vector3 *> m_SelVtxBakArray; - CVtxPosDummy m_VtxPosDummy; // Á¡À» ¿òÁ÷Àϼö ÀÖ´Â dummy object - BOOL m_bEditMode; // ¿¬¸ø¹° ÆíÁý¸ðµåÀΰ¡? - BOOL m_bChooseGroup; // ¿¬¸ø¹° ±×·ìÀ¸·Î ÆíÁýÇϴ°¡ - BOOL m_bChooseEditPond; // ÇöÀç ¾²´Â ¿¬¸ø³»¿¡¼­¸¸ ÆíÁýÇÒ°ÍÀΰ¡ - BOOL m_bMovePond; // ¼±ÅÃÇÑ ¿¬¸øÀ» Åë°·Î ¿òÁ÷ÀÏ °ÍÀΰ¡ - int m_PCursorMode; // ¿¬¸øÀ» Ãß°¡?ÇÏ´Â °ÍÀΰ¡ Á¡À» ¼±ÅÃÇÏ´Â °ÍÀΰ¡? + CVtxPosDummy m_VtxPosDummy; // dummy object that can move the point + BOOL m_bEditMode; // Is this pond water editing mode? + BOOL m_bChooseGroup; // Edit with pond water group + BOOL m_bChooseEditPond; // Do you want to edit only within the current pond? + BOOL m_bMovePond; // Will the entire selected pond be moved? + int m_PCursorMode; // Adding a pond or selecting a point? CMainFrame * m_pMainFrm; // mainframe pointer CDlgPondProperty * m_pDlgProperty; // property dialog - RECT m_rcSelDrag; // µå·¡±× ¿µ¿ª - __VertexXyzColor m_CreateLine[5]; // ¿¬¸ø óÀ½ »ý¼ºÇÒ¶§ º¸ÀÌ´Â ¼± + RECT m_rcSelDrag; // drag area + __VertexXyzColor m_CreateLine[5]; // Line visible when first creating a pond - __Vector3 m_vPondsCenter; // ¿¬¸ø(µé)ÀÇ Áß°£Á¡ + __Vector3 m_vPondsCenter; // Midpoint of pond(s) BOOL m_bShift; @@ -83,35 +83,35 @@ class CPondMng : public CN3BaseFileAccess { virtual bool Load(HANDLE hFile); virtual bool Save(HANDLE hFile); - BOOL MouseMsgFilter(LPMSG pMsg); // Mouse ¸Þ¼¼Áö ó¸® - void MakeGameFiles(HANDLE hFile, float fSize); // Game file·Î ÀúÀå + BOOL MouseMsgFilter(LPMSG pMsg); // Mouse message processing + void MakeGameFiles(HANDLE hFile, float fSize); // Save as game file - CPondMesh * CreateNewPondMesh(); // ½ÃÀÛÁ¡°ú ³¡³­Á¡(»ç°¢Çü)À¸·Î »õ·Î¿î ¿¬¸øÀ» Ãß°¡ÇÑ´Ù. + CPondMesh * CreateNewPondMesh(); // Add a new pond with the start and end points (rectangle). - BOOL SetPondID(CPondMesh * pPondMesh, int iPondID); // ¿¬¸øÀÇ ID¸¦ ¼³Á¤ - void SetEditMode(BOOL bEditMode); // ¿¬¸ø EditMode¼³Á¤ - CPondMesh * GetPondMesh(int iPondID); // PondMesh ¾ò±â + BOOL SetPondID(CPondMesh * pPondMesh, int iPondID); // set pond ID + void SetEditMode(BOOL bEditMode); // Pond EditMode settings + CPondMesh * GetPondMesh(int iPondID); // Get PondMesh - void MainInvalidate(); // È­¸é °­Àç·Î ´Ù½Ã Âï±â + void MainInvalidate(); // Force screen retake - // CDlgPondProperty¿¡¼­ ¾²ÀÎ ÇÔ¼öµé - void RemovePondMesh(int iPondID); // ¼±ÅÃµÈ ¿¬¸øÀ» »èÁ¦ÇÑ´Ù. - void GoPond(int iPondID); // ¼±ÅÃµÈ ¿¬¸øÀ¸·Î °©´Ï´Ù. - void StationPond(); // ¼±ÅÃµÈ ¿¬¸øÀÇ Á¡µéÀ» ´Ù½Ã ¹èÄ¡ - void MovePond(); // ¼±ÅÃµÈ ¿¬¸øÀ» Åë° ¿Å±â·Á ÇÑ´Ù + // Functions used in CDlgPondProperty + void RemovePondMesh(int iPondID); // Delete the selected pond. + void GoPond(int iPondID); // Go to the selected pond. + void StationPond(); // Replace the points of the selected pond + void MovePond(); // Try to move the entire selected pond BOOL GetChooseGroup() { return m_bChooseGroup; } BOOL GetChooseEditPond() { return m_bChooseEditPond; } void ChooseGroupPond() { m_bChooseGroup ^= 1; } void ChooseEditPond() { m_bChooseEditPond ^= 1; } - // ³ªÁß¿¡ Áö¿ïÁöµµ - void ReCalcSelectedVertex(); // ÁöÁ¤µÈ ½ºÄÉÀÏ¿¡ µû¶ó ´Ù½Ã Á¤·Ä - void ReCalcUV(); // ¼±ÅÃµÈ ¿¬¸øÀÇ UVÁÂÇ¥ ´Ù½Ã °è»ê. + // I might delete it later? + void ReCalcSelectedVertex(); // Reorder according to specified scale + void ReCalcUV(); // Recalculate the UV coordinates of the selected pond. protected: - void SetSelPond(CPondMesh * pPondMesh, BOOL bChooseGroup = FALSE); // PondMesh ¼±ÅÃÇϱâ + void SetSelPond(CPondMesh * pPondMesh, BOOL bChooseGroup = FALSE); // Select PondMesh BOOL SelectVtxByDragRect(RECT * pRect, BOOL bAdd, BOOL bSelectPond = FALSE); - void ClearSelectRcAllPond(); // ¸ðµç ¿¬¸øÀÇ ¼±ÅÃÇÑ Á¡µéÀÇ Àӽÿµ¿ª ÃʱâÈ­ Çϱâ + void ClearSelectRcAllPond(); // Initialize the temporary area of selected points in all ponds void SelPondRelease(); void SelPondDelete(CPondMesh * pPondMesh); @@ -124,6 +124,6 @@ class CPondMng : public CN3BaseFileAccess { void SetVtxBackup(); void ReSetVtxBackup(); - void ReSetDrawRect(__Vector3 vStrPos, __Vector3 vEndPos); // ¿¬¸øÀ» ±×¸®±âÀ§ÇÑ ¿µ¿ª ÀçÁ¤¸® - void InputDummyMovePos(__Vector3 vMovePos); // ´õ¹Ì°¡ ¿òÁ÷ÀÎ ¸¸Å­ ¼±ÅÃÇÑ ¿¬¸ø¿¡ ÀÔ·Â + void ReSetDrawRect(__Vector3 vStrPos, __Vector3 vEndPos); // Reorganize the area to draw the pond + void InputDummyMovePos(__Vector3 vMovePos); // Enter the selected pond as the dummy moves }; diff --git a/src/tool/N3ME/PosDummy.cpp b/src/tool/N3ME/PosDummy.cpp index 1739b8fa..6a7b2e44 100644 --- a/src/tool/N3ME/PosDummy.cpp +++ b/src/tool/N3ME/PosDummy.cpp @@ -40,9 +40,10 @@ BOOL CPosDummy::MouseMsgFilter(LPMSG pMsg) { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; DWORD nFlags = pMsg->wParam; if (m_pSelectedCube && (nFlags & MK_LBUTTON)) { - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // Point where the above plane meets the straight line (point to find) __Vector3 vCameraDir = s_CameraData.vAt - s_CameraData.vEye; vCameraDir.Normalize(); GetPickRay(point, vRayDir, vRayOrig); @@ -57,7 +58,7 @@ BOOL CPosDummy::MouseMsgFilter(LPMSG pMsg) { float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); vPos = vRayOrig + vRayDir * fT; - // Æò¸é»óÀÇ Á¡¿¡¼­ ÁöÇüÀÇ ³ôÀ̸¦ ±¸ÇÑ´Ù. + // Find the height of the terrain from a point on the plane. if (m_pTerrainRef) { m_pTerrainRef->Pick(point.x, point.y, &vPos); } diff --git a/src/tool/N3ME/ProgressBar.cpp b/src/tool/N3ME/ProgressBar.cpp index 926019c4..998f071e 100644 --- a/src/tool/N3ME/ProgressBar.cpp +++ b/src/tool/N3ME/ProgressBar.cpp @@ -33,26 +33,26 @@ END_MESSAGE_MAP() BOOL CProgressBar::Create(LPCTSTR strMessage, int nSize, int MaxValue) { if (NULL == m_hWnd) { - // »óŹٸ¦ ¾òÀ½ + // get the status bar CStatusBar * pStatusBar = GetStatusBar(); if (pStatusBar == NULL) { return FALSE; } - // »óŹ٠À§¿¡ ÇÁ·Î±×·¹½º ÄÁÆ®·Ñ»ý¼º + // Create a progress control on the status bar if (!CProgressCtrl::Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), pStatusBar, 1)) { return FALSE; } } - // ÇÁ·Î±×·¹½º ÄÁÆ®·ÑÀÇ ¹üÀ§¿Í ½ºÅÜ ¼³Á¤ + // Set the range and steps of progress control SetRange(0, MaxValue); SetStep(1); m_strMessage = strMessage; m_nSize = nSize; - // À§Ä¡¿Í Å©±â Á¶Á¤ + // Adjust position and size Resize(); return TRUE; } @@ -77,20 +77,20 @@ void CProgressBar::Resize() { return; } - // ÅØ½ºÆ® Ãâ·Â + // text output if (::IsWindow(m_hWnd) && IsWindowVisible()) { pStatusBar->SetWindowText(m_strMessage); pStatusBar->UpdateWindow(); } - // ÅØ½ºÆ®°¡ Â÷ÁöÇÏ´Â ¿µ¿ª °è»ê + // Calculate the area occupied by the text CClientDC dc(pStatusBar); CFont * pOldFont = dc.SelectObject(pStatusBar->GetFont()); CSize size = dc.GetTextExtent(m_strMessage); int margin = dc.GetTextExtent(_T(" ")).cx * 2; dc.SelectObject(pOldFont); - // ÇÁ·Î±×·¹½º ÄÁÆ®·ÑÀÌ ±×·ÁÁú ¿µ¿ª °è»ê + // Calculate the area where the progress control will be drawn CRect rc; pStatusBar->GetItemRect(0, rc); rc.left = size.cx + 2 * margin; @@ -99,12 +99,12 @@ void CProgressBar::Resize() { rc.right = rc.left; } - // »óŹ٠»óÇÏ·Î 10%ÀÇ ¿©¹éÀ» µÒ + // Leave 10% margin at the top and bottom of the status bar int Height = rc.bottom - rc.top; rc.bottom -= Height / 10; rc.top += Height / 10; - // ÇÁ·Î±×·¹½º ÄÁÆ®·ÑÀÇ À§Ä¡¿Í Å©±â¸¦ ÀçÁ¶Á¤ + // Readjust the position and size of the progress control if (::IsWindow(m_hWnd) && (rc != m_Rect)) { MoveWindow(&rc); } diff --git a/src/tool/N3ME/ProgressBar.h b/src/tool/N3ME/ProgressBar.h index e121741b..6d6996c6 100644 --- a/src/tool/N3ME/ProgressBar.h +++ b/src/tool/N3ME/ProgressBar.h @@ -21,12 +21,12 @@ class CProgressBar : public CProgressCtrl { // Operations public: BOOL Create(LPCTSTR strMessage, int nSize, int MaxValue); - // nSize : progress barÀÇ °¡·Î pixel Å©±â - // MaxValue : progress barÀÇ stepÀÇ ÃÖ´ë°ª + // nSize: Horizontal pixel size of progress bar + // MaxValue: Maximum value of the step of the progress bar - CStatusBar * GetStatusBar(); // MainFrame¿¡¼­ StatusBar Æ÷ÀÎÅÍ ¾ò¾î¿À±â - void Resize(); // À§Ä¡¿Í Å©±â Á¶Á¤ - void Clear(); // ÃʱâÈ­ + CStatusBar * GetStatusBar(); // Get StatusBar pointer from MainFrame + void Resize(); // Adjust position and size + void Clear(); // reset // Overrides // ClassWizard generated virtual function overrides diff --git a/src/tool/N3ME/QTNode.cpp b/src/tool/N3ME/QTNode.cpp index d501a82c..a1e57b79 100644 --- a/src/tool/N3ME/QTNode.cpp +++ b/src/tool/N3ME/QTNode.cpp @@ -54,7 +54,7 @@ void CQTNode::Init(int level, CLyTerrain * pTerrain) { m_Level = level; m_State = QTNODESTATE_NOTRENDER; - // Àڽijëµå¸¸µé±â.. + // Create child node.. if (level != m_pRefTerrain->m_iMaxLevel) { for (int i = 0; i < DIR_NUM; i++) { m_pChild[i] = new CQTNode; @@ -69,11 +69,11 @@ void CQTNode::Init(int level, CLyTerrain * pTerrain) { // // LinkFriend.. -// Ä£±¸µé ¿¬°áÇϱâ.. -// - ¿ø·¡´Â InitÇÔ¼ö¿¡ ³ÖÀ»·Á°í Çß¾ú´Âµ¥, -// Ä£±¸µéÀÌ ¹Ìó ¸¸µé¾îÁö±â Àü¿¡ ¿¬°áÀ» -// ½ÃµµÇÏ´Â °æ¿ì°¡ Àֱⶫ¿¡ ¸ðµç ³ëµåµéÀ» -// ´Ù »ý¼ºÇÑ ´ÙÀ½¿¡ Ä£±¸¿¬°áÀ» ½ÃµµÇؾßÇÑ´Ù. +// Connect with friends... +// - Originally I was going to put it in the Init function, +// Connect before friends are created +// Because there are cases where attempts are made, all nodes +// After creating everything, you must try to connect as a friend. // void CQTNode::LinkFriend() { if (m_Level == m_pRefTerrain->m_iMaxLevel) { @@ -172,7 +172,7 @@ void CQTNode::Release() { } // -// Center point¸¦ ¼³Á¤Çϱâ.. +// Setting the center point... // void CQTNode::SetCenterPoint(int x, int z) { m_CenterX = x; @@ -208,7 +208,7 @@ void CQTNode::SetCenterPoint(int x, int z) { // SetMinMaxY.. // void CQTNode::SetMinMaxY() { - if (m_Level == m_pRefTerrain->m_iMaxLevel) //Á© ¸¶Áö¸· ³ëµåÀ϶§.. + if (m_Level == m_pRefTerrain->m_iMaxLevel) //When it is the last node... { for (int x = -1; x < 2; x++) { for (int z = -1; z < 2; z++) { @@ -223,7 +223,7 @@ void CQTNode::SetMinMaxY() { return; } - //Á© ¸¶Áö¸· ³ëµå°¡ ¾Æ´Ò¶§... + //When it is not the last node... for (int i = 0; i < DIR_NUM; i++) { if (!m_pChild[i]) { continue; @@ -268,31 +268,31 @@ void CQTNode::SetWholeClipped() { // // tick... -// ÄõµåÆ®¸®ÀÇ ½Çü...^^ -// ÀÏ´Ü °¡½Ã¿µ¿ª¾È¿¡ µå´ÂÁö °Ë»ç(IntersectRect()..)¸¦ Çϰí.. -// °¡½Ã¿µ¿ª¾È¿¡ µé¸é ±×¸±°ÍÀÎÁö ´õ ³»·Á°¥ °ÍÀÎÁö °Ë»ç.. +// The reality of the quad tree...^^ +// First, check if it is within the visible area (IntersectRect()..). +// Check whether to draw or go further down if it is within the visible area. // void CQTNode::Tick() { - m_State = QTNODESTATE_CLIPPED; //»óÅ ÃʱâÈ­.. + m_State = QTNODESTATE_CLIPPED; //State initialization.. - //°¡½Ã¿µ¿ª¾È¿¡µå´ÂÁö°Ë»ç. + // Check whether it is within the visible area. RECT rt; - int Range = 1 << (m_pRefTerrain->m_iMaxLevel - m_Level); // Áß½ÉÁ¡ºÎÅÍ °¡ÀåÀÚ¸®±îÁö °Å¸®. + int Range = 1 << (m_pRefTerrain->m_iMaxLevel - m_Level); // Distance from center point to edge. SetRect(&rt, m_CenterX - Range, m_CenterZ - Range, m_CenterX + Range, m_CenterZ + Range); RECT rt1; if (IntersectRect(&rt1, &rt, &(m_pRefTerrain->m_VisibleRect)) == 0) { - return; //°¡½Ã¿µ¿ª¾È¿¡ µéÁö ¾ÊÀ¸¸é ³ª°¡.. + return; // If it is not within the visible area, go out. } - //±×¸±°ÍÀÎÁö ´õ ³»·Á °¥ °ÍÀÎÁö °Ë»ç.. + //Check whether to draw or go further down.. if (IsRender(&(m_pRefTerrain->m_EyePos))) { - // ±×¸¸ ³»·Á°¡´Â °æ¿ì.. + // If you stop going down... m_pRefTerrain->m_RenderNodes.push_back(this); return; } - //³»·Á°¡´Â °æ¿ì.. + //If going down... for (int i = 0; i < DIR_NUM; i++) { if (!m_pChild[i]) { continue; @@ -303,10 +303,10 @@ void CQTNode::Tick() { // // IsRender.. -// ³»·Á°¡´Â °É ±×¸¸µÎ°í ±×¸±°ÍÀÎÁö, ¾Æ´Ï¸é ´õ ³»·Á°¥°ÍÀÎÁö °Ë»ç... -// return true -> ±×¸¸ ³»·Á°¡°í Render; -// return false -> ´õ ³»·Á°¨... -// ¿©±â¿¡ µé¾î°¡´Â°Ô ÁöÇü µðÅ×ÀÏ ¹æ¹ýÀÇ ÇÙ½É...^^ +// Check whether to stop going down and draw, or go down further... +// return true -> Stop going down and Render; +// return false -> Go further down... +// What goes here is the core of the terrain detail method...^^ // bool CQTNode::IsRender(POINT * pEye) { if (m_pRefTerrain->m_iMaxLevel == m_Level) { @@ -329,7 +329,7 @@ bool CQTNode::IsRender(POINT * pEye) { return false; } - // ³ôÀ̰¡ ¾î´À¼öÁØÀÌ»óÀÌ¸é ³ª´«´Ù. + // If the height is above a certain level, divide it. float height = m_MaxY - m_MinY; //if( height > (1<<(DiffLevel+1)) ) if (height > m_pRefTerrain->m_iHeightLimit) { @@ -337,7 +337,7 @@ bool CQTNode::IsRender(POINT * pEye) { return false; } - //°Å¸®¿¡ µû¶ó.. + //Depending on the distance... int Dist = Distance(pEye->x, pEye->y, m_CenterX, m_CenterZ); if (Dist < (m_pRefTerrain->m_iDistLimit + (1 << (DiffLevel + 1)))) { m_State = QTNODESTATE_NOTRENDER; @@ -354,7 +354,7 @@ bool CQTNode::IsRender(POINT * pEye) { } // -// °£´ÜÇÑ °Å¸®°è»ê ¹æ¹ý.. +// A simple way to calculate distance... // inline int CQTNode::Distance(int sx, int sz, int tx, int tz) { int iX = tx - sx; @@ -381,7 +381,7 @@ void CQTNode::Render() { } // -// °¡Àå µðÅ×ÀÏÇÑ Å¸ÀÏÀ» ±×¸®´Â ÇÔ¼ö.. +// A function that draws the most detailed tiles. // void CQTNode::RenderMaxLevel() { HRESULT hr; @@ -407,7 +407,7 @@ void CQTNode::RenderMaxLevel() { cx = m_CenterX - 1; cz = m_CenterZ - 1; - //lightmapÀ» ±×¸®±â À§ÇÑ Áغñ.. + //Preparing to draw a lightmap... // CN3Texture * pRefLightMapTex[4]; int NumLightMapUse = 0; @@ -448,7 +448,7 @@ void CQTNode::RenderMaxLevel() { tmpTIdx = m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo1.TexIdx.TexID; if ((m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo1.Attr.Group <= 0) || - m_pRefTerrain->GetTileTex(tmpTIdx) == NULL) //ŸÀÏÀÌ ¾øÀ»¶§... + m_pRefTerrain->GetTileTex(tmpTIdx) == NULL) //When there are no tiles... { int NumTileInColorTex = m_pRefTerrain->m_iColorMapTexSize / m_pRefTerrain->m_iColorMapPixelPerUnitDistance; u1 = (float)(cx % NumTileInColorTex); @@ -506,7 +506,7 @@ void CQTNode::RenderMaxLevel() { (u2 + 1.0f) / (float)NumTileInColorTex, v2 / (float)NumTileInColorTex, 0, 0); } - else //¼ø¼öÇÏ°Ô Å¸Àϸ¸ Âï´Â °æ¿ì.. + else //If only tiles are taken... { dir1 = m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo1.Dir; dir2 = m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo2.Dir; @@ -579,7 +579,7 @@ void CQTNode::RenderMaxLevel() { tmpTIdx = m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo1.TexIdx.TexID; if ((m_pRefTerrain->m_ppMapData[cx][cz].DTexInfo1.Attr.Group <= 0) || - m_pRefTerrain->GetTileTex(tmpTIdx) == NULL) //ŸÀÏÀÌ ¾øÀ»¶§... + m_pRefTerrain->GetTileTex(tmpTIdx) == NULL) //When there are no tiles... { int NumTileInColorTex = m_pRefTerrain->m_iColorMapTexSize / m_pRefTerrain->m_iColorMapPixelPerUnitDistance; u1 = (float)(cx % NumTileInColorTex); @@ -959,7 +959,7 @@ void CQTNode::RenderMaxLevel() */ // -// m_pRefTerrain->m_iMaxLevelÀÌ ¾Æ´Ñ Levelµé Render.. +// Levels other than m_pRefTerrain->m_iMaxLevel Render.. // void CQTNode::RenderNormalLevel() { int LeftLevel = 0; @@ -985,7 +985,7 @@ void CQTNode::RenderNormalLevel() { __VertexT1 * pVertices; m_pRefTerrain->m_ColorMapVB->Lock(0, 0, (VOID **)&pVertices, 0); - //Á¡¸¸µé±â.. + //Create a dot... int NumTileInColorTex = m_pRefTerrain->m_iColorMapTexSize / m_pRefTerrain->m_iColorMapPixelPerUnitDistance; //float cx = (float)((m_CenterX % NumTileInColorTex) * m_pRefTerrain->m_iColorMapPixelPerUnitDistance); //float cz = (float)(((NumTileInColorTex-m_CenterZ) % NumTileInColorTex) * m_pRefTerrain->m_iColorMapPixelPerUnitDistance); @@ -1004,9 +1004,9 @@ void CQTNode::RenderNormalLevel() { (cx - (float)half) / (float)NumTileInColorTex, (cz + (float)half) / (float)NumTileInColorTex); VC++; - //¿ÞÂʺ¯.. + //Left side... int interval = 1; - int sp; //½ÃÀÛÁ¡.. + int sp; //starting point.. float UVInterval; if (m_Level < LeftLevel) { if (LeftLevel == m_pRefTerrain->m_iMaxLevel) { @@ -1035,7 +1035,7 @@ void CQTNode::RenderNormalLevel() { (float)(cx - half) / (float)NumTileInColorTex, (float)(cz - half) / (float)NumTileInColorTex); VC++; - //À­Âʺ¯.. + //Upper side... if (m_Level < TopLevel) { if (TopLevel == m_pRefTerrain->m_iMaxLevel) { interval = 1; @@ -1061,7 +1061,7 @@ void CQTNode::RenderNormalLevel() { (float)(cx + half) / (float)NumTileInColorTex, (float)(cz - half) / (float)NumTileInColorTex); VC++; - //¿À¸¥Âʺ¯.. + //Right side... if (m_Level < RightLevel) { if (RightLevel == m_pRefTerrain->m_iMaxLevel) { interval = 1; @@ -1089,7 +1089,7 @@ void CQTNode::RenderNormalLevel() { (float)(cx + half) / (float)NumTileInColorTex, (float)(cz + half) / (float)NumTileInColorTex); VC++; - //¾Æ·§º¯.. + //Bottom side... if (m_Level < BottomLevel) { if (BottomLevel == m_pRefTerrain->m_iMaxLevel) { interval = 1; diff --git a/src/tool/N3ME/QTNode.h b/src/tool/N3ME/QTNode.h index ee0f0212..b9802eb5 100644 --- a/src/tool/N3ME/QTNode.h +++ b/src/tool/N3ME/QTNode.h @@ -9,7 +9,7 @@ enum eQTNODESTATE { QTNODESTATE_NOTRENDER, QTNODESTATE_RENDER, QTNODESTATE_UNKNOWN -}; // ÄõµåÆ®¸® ³ëµåµéÀÇ »óżӼº.. +}; // Status properties of quadtree nodes.. enum eDIR { DIR_LEFT = 0, DIR_TOP, @@ -22,10 +22,10 @@ class CLyTerrain; class CQTNode { protected: - int m_CenterX; //Áß½ÉÁ¡ÀÇ ³ôÀÌÇʵå¹è¿­»óÀÇ ÁÂÇ¥. - int m_CenterZ; //Áß½ÉÁ¡ÀÇ ³ôÀÌÇʵå¹è¿­»óÀÇ ÁÂÇ¥. + int m_CenterX; //Coordinates of the center point in the height field array. + int m_CenterZ; //Coordinates of the center point in the height field array. - int m_Level; //ÄõµåÆ®¸®»ó¿¡¼­ ±íÀ̰ª.. + int m_Level; //Depth value on the quadtree... eQTNODESTATE m_State; // CQTNode * m_pFriend[DIR_NUM]; @@ -34,8 +34,8 @@ class CQTNode { CLyTerrain * m_pRefTerrain; public: - float m_MinY; //ÃÖÀúÁ¡ - float m_MaxY; //ÃÖ°íÁ¡ + float m_MinY; // lowest point + float m_MaxY; // lowest point int GetCenterX() { return m_CenterX; } int GetCenterZ() { return m_CenterZ; } diff --git a/src/tool/N3ME/RegenUser.cpp b/src/tool/N3ME/RegenUser.cpp index 652beb33..3ce29649 100644 --- a/src/tool/N3ME/RegenUser.cpp +++ b/src/tool/N3ME/RegenUser.cpp @@ -22,7 +22,7 @@ static char THIS_FILE[] = __FILE__; ////////////////////////////////////////////////////////////////////// CRegenUser::CRegenUser() { - m_pRefMapMng = NULL; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + m_pRefMapMng = NULL; // Terrain reference pointer.. m_bActive = false; m_vrListRegion.clear(); @@ -55,7 +55,7 @@ void CRegenUser::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -75,7 +75,7 @@ void CRegenUser::Render() { __VertexXyzColor v[4]; - //ÀÌ¹Ì ¸¸µé¾îÁø ¿µ¿ª.. + //Area already created... std::list::iterator it, ite; ite = m_vrListRegion.end(); for (it = m_vrListRegion.begin(); it != ite; it++) { @@ -92,7 +92,7 @@ void CRegenUser::Render() { hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, v, sizeof(__VertexXyzColor)); } - //Áö±Ý ¸¸µé°í ÀÖ´Â ¿µ¿ª.. + //Area currently being created... v[0] = m_vrCurrRegion.m_vLB; v[0].color = 0xffff0000; v[1] = m_vrCurrRegion.m_vLT; diff --git a/src/tool/N3ME/RegenUser.h b/src/tool/N3ME/RegenUser.h index 8d238a89..d2a70ccb 100644 --- a/src/tool/N3ME/RegenUser.h +++ b/src/tool/N3ME/RegenUser.h @@ -21,7 +21,7 @@ class CRegenUser : public CN3Base { public: CDlgRegenUser * m_pDlg; - CMapMng * m_pRefMapMng; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + CMapMng * m_pRefMapMng; // Terrain reference pointer.. bool m_bActive; std::list m_vrListRegion; diff --git a/src/tool/N3ME/Resource.h b/src/tool/N3ME/Resource.h index a2aa223e..03cd2821 100644 --- a/src/tool/N3ME/Resource.h +++ b/src/tool/N3ME/Resource.h @@ -1,5 +1,5 @@ //{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. +// Microsoft Visual C++ generated include file. // Used by N3ME.rc // #define ID_MODIFY_DTEX_MIRROR 3 @@ -397,7 +397,7 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 183 +#define _APS_NEXT_RESOURCE_VALUE 212 #define _APS_NEXT_COMMAND_VALUE 32847 #define _APS_NEXT_CONTROL_VALUE 1273 #define _APS_NEXT_SYMED_VALUE 107 diff --git a/src/tool/N3ME/RiverMesh.cpp b/src/tool/N3ME/RiverMesh.cpp index 1c55c00d..a48a930c 100644 --- a/src/tool/N3ME/RiverMesh.cpp +++ b/src/tool/N3ME/RiverMesh.cpp @@ -78,16 +78,21 @@ bool CRiverMesh::Load(HANDLE hFile) { int iLen; char szTextueFName[_MAX_PATH]; - ReadFile(hFile, &m_iRiverID, sizeof(m_iRiverID), &dwNum, NULL); // °­ ¹øÈ£ - ReadFile(hFile, &m_fSpeed1, sizeof(m_fSpeed1), &dwNum, NULL); // À¯¼Ó - ReadFile(hFile, &m_fSpeed2, sizeof(m_fSpeed2), &dwNum, NULL); // À¯¼Ó2 - ReadFile(hFile, &m_fMeterPerV, sizeof(m_fMeterPerV), &dwNum, NULL); // UÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - ReadFile(hFile, &m_fMeterPerU, sizeof(m_fMeterPerU), &dwNum, NULL); // VÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - ReadFile(hFile, &m_fMeterPerV2, sizeof(m_fMeterPerV2), &dwNum, NULL); // U2ÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - ReadFile(hFile, &m_fMeterPerU2, sizeof(m_fMeterPerU2), &dwNum, NULL); // V2ÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - ReadFile(hFile, &m_dwAlphaFactor, sizeof(m_dwAlphaFactor), &dwNum, NULL); // °­À» Åõ¸íÇÏ°Ô Çϱâ À§ÇÑ ¾ËÆÄ°ª - - ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + ReadFile(hFile, &m_iRiverID, sizeof(m_iRiverID), &dwNum, NULL); // river number + ReadFile(hFile, &m_fSpeed1, sizeof(m_fSpeed1), &dwNum, NULL); // flow rate + ReadFile(hFile, &m_fSpeed2, sizeof(m_fSpeed2), &dwNum, NULL); // flow rate 2 + ReadFile(hFile, &m_fMeterPerV, sizeof(m_fMeterPerV), &dwNum, + NULL); // The length of the river corresponding to U-coordinate 1.0 + ReadFile(hFile, &m_fMeterPerU, sizeof(m_fMeterPerU), &dwNum, + NULL); // The length of the river corresponding to V coordinate 1.0 + ReadFile(hFile, &m_fMeterPerV2, sizeof(m_fMeterPerV2), &dwNum, + NULL); // The length of the river corresponding to U2 coordinate 1.0 + ReadFile(hFile, &m_fMeterPerU2, sizeof(m_fMeterPerU2), &dwNum, + NULL); // The length of the river corresponding to V2 coordinate 1.0 + ReadFile(hFile, &m_dwAlphaFactor, sizeof(m_dwAlphaFactor), &dwNum, + NULL); // Alpha value to make the river transparent + + ReadFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { ReadFile(hFile, m_pVertices, m_iVC * sizeof(__VertexXyzT2), &dwNum, NULL); // vertex buffer } @@ -126,16 +131,21 @@ bool CRiverMesh::Load(HANDLE hFile) { bool CRiverMesh::Save(HANDLE hFile) { DWORD dwNum; - WriteFile(hFile, &m_iRiverID, sizeof(m_iRiverID), &dwNum, NULL); // °­ ¹øÈ£ - WriteFile(hFile, &m_fSpeed1, sizeof(m_fSpeed1), &dwNum, NULL); // À¯¼Ó1 - WriteFile(hFile, &m_fSpeed2, sizeof(m_fSpeed2), &dwNum, NULL); // À¯¼Ó2 - WriteFile(hFile, &m_fMeterPerV, sizeof(m_fMeterPerV), &dwNum, NULL); // UÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - WriteFile(hFile, &m_fMeterPerU, sizeof(m_fMeterPerU), &dwNum, NULL); // VÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - WriteFile(hFile, &m_fMeterPerV2, sizeof(m_fMeterPerV2), &dwNum, NULL); // U2ÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - WriteFile(hFile, &m_fMeterPerU2, sizeof(m_fMeterPerU2), &dwNum, NULL); // V2ÁÂÇ¥ 1.0¿¡ ÇØ´çÇÏ´Â °­ÀÇ ±æÀÌ - WriteFile(hFile, &m_dwAlphaFactor, sizeof(m_dwAlphaFactor), &dwNum, NULL); // °­À» Åõ¸íÇÏ°Ô Çϱâ À§ÇÑ ¾ËÆÄ°ª - - WriteFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // Á¡ °¹¼ö + WriteFile(hFile, &m_iRiverID, sizeof(m_iRiverID), &dwNum, NULL); // river number + WriteFile(hFile, &m_fSpeed1, sizeof(m_fSpeed1), &dwNum, NULL); // flow rate + WriteFile(hFile, &m_fSpeed2, sizeof(m_fSpeed2), &dwNum, NULL); // flow rate 2 + WriteFile(hFile, &m_fMeterPerV, sizeof(m_fMeterPerV), &dwNum, + NULL); // The length of the river corresponding to U-coordinate 1.0 + WriteFile(hFile, &m_fMeterPerU, sizeof(m_fMeterPerU), &dwNum, + NULL); // The length of the river corresponding to V coordinate 1.0 + WriteFile(hFile, &m_fMeterPerV2, sizeof(m_fMeterPerV2), &dwNum, + NULL); // The length of the river corresponding to U2 coordinate 1.0 + WriteFile(hFile, &m_fMeterPerU2, sizeof(m_fMeterPerU2), &dwNum, + NULL); // The length of the river corresponding to V2 coordinate 1.0 + WriteFile(hFile, &m_dwAlphaFactor, sizeof(m_dwAlphaFactor), &dwNum, + NULL); // Alpha value to make the river transparent + + WriteFile(hFile, &m_iVC, sizeof(m_iVC), &dwNum, NULL); // number of points if (m_iVC > 0) { WriteFile(hFile, m_pVertices, m_iVC * sizeof(__VertexXyzT2), &dwNum, NULL); // vertex buffer } @@ -155,7 +165,7 @@ bool CRiverMesh::Save(HANDLE hFile) { WriteFile(hFile, &m_iAnimTextureCount, sizeof(m_iAnimTextureCount), &dwNum, NULL); // AnimTexture Count for (int i = 0; i < m_iAnimTextureCount; ++i) { - __ASSERT(m_pAnimTextures[i], "°­¹° ÅØ½ºÃÄ Æ÷ÀÎÅͰ¡ NULLÀÔ´Ï´Ù."); + __ASSERT(m_pAnimTextures[i], "The river texture pointer is NULL."); int iLen = m_pAnimTextures[i]->FileName().size(); WriteFile(hFile, &iLen, sizeof(iLen), &dwNum, NULL); // texture name length if (iLen > 0) { @@ -187,14 +197,14 @@ void CRiverMesh::Render() { s_lpD3DDev->GetTextureStageState(0, D3DTSS_ALPHAOP, &dwAlphaOP); s_lpD3DDev->GetTextureStageState(0, D3DTSS_ALPHAARG1, &dwAlphaArg1); - if ((m_dwAlphaFactor & 0xff000000) != 0xff000000) // alpha factor ¼³Á¤Çϱâ + if ((m_dwAlphaFactor & 0xff000000) != 0xff000000) // Set alpha factor { - // render state ¼¼ÆÃ + // render state settings s_lpD3DDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); s_lpD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); s_lpD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); - s_lpD3DDev->SetRenderState(D3DRS_TEXTUREFACTOR, m_dwAlphaFactor); // alpha factor ¼³Á¤ - // texture state ¼¼ÆÃ(alpha) + s_lpD3DDev->SetRenderState(D3DRS_TEXTUREFACTOR, m_dwAlphaFactor); // alpha factor settings + // texture state setting (alpha) s_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); s_lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); s_lpD3DDev->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); @@ -253,7 +263,7 @@ void CRiverMesh::Render() { } } -void CRiverMesh::RenderVertexPoint() // Àߺ¸ÀÌ°Ô Á¡¸¸ ´Ù½Ã ±×¸®±â +void CRiverMesh::RenderVertexPoint() // Redraw only the dots so they are visible { if (m_iVC == 0 || m_pVertices == NULL) { return; @@ -295,7 +305,7 @@ void CRiverMesh::Render() { int iScreenX = int(((v.x / v.w) + 1.0f) * (vp.Width) / 2.0f); int iScreenY = int((1.0f - (v.y / v.w)) * (vp.Height) / 2.0f); if (iScreenX >= (int)vp.X && iScreenX <= (int)vp.Width && iScreenY >= (int)vp.Y && iScreenY <= (int)vp.Height) { - // set X (Á¡À» ÂïÀ¸¸é 1Çȼ¿¹Û¿¡ ¾ÈÂïÀ¸¹Ç·Î XÇ¥½Ã¸¦ ±×¸°´Ù. + // set X (Since only 1 pixel is drawn when a dot is placed, draw an X mark.) Vertices[0].Set(float(iScreenX - 2), float(iScreenY - 2), 0.5f, 0.5f, clr); Vertices[1].Set(float(iScreenX + 2), float(iScreenY + 2), 0.5f, 0.5f, clr); Vertices[2].Set(float(iScreenX + 2), float(iScreenY - 2), 0.5f, 0.5f, clr); @@ -338,7 +348,7 @@ int CRiverMesh::AddVertex() { return m_iVC; } - // ±âÁ¸ ¸¶Áö¸· µÎÁ¡°ú Á÷°¢ÀÎ ¹æÇâ ±¸Çϱâ(Ä«¸Þ¶ó¿ÍÀÇ °Å¸®¿¡ µû¶ó¼­ offset°ªÀÌ ´Þ¶óÁü.) + // Find the direction perpendicular to the last two existing points (offset value varies depending on the distance from the camera.) __Vector3 v1, v2, v3, vDir, vDiff, v4, v5; v1 = m_pVertices[m_iVC - 4]; v2 = m_pVertices[m_iVC - 3]; @@ -399,7 +409,7 @@ BOOL CRiverMesh::SetAnimTextureName(LPCTSTR pszFName, LPCTSTR pszExt, int iCount if (lstrlen(pszFName) == 0 || iCount <= 0) { return FALSE; } - __ASSERT(iCount < 100, "°­¹° ¿¡´Ï¸ÞÀÌ¼Ç ÅØ½ºÃİ¡ ³Ê¹« ¸¹½À´Ï´Ù."); + __ASSERT(iCount < 100, "There are too many river water animation textures."); m_iAnimTextureCount = iCount; m_pAnimTextures = new CN3Texture *[m_iAnimTextureCount]; @@ -437,7 +447,7 @@ void CRiverMesh::ReCalcUV() { float fUPerMeter2 = 1.0f/m_fMeterPerU2; float fVPerMeter2 = 1.0f/m_fMeterPerV2; - // óÀ½ µÎÁ¡ ¼³Á¤Çϱâ + // set the first two points __Vector3 vDiff; float fDiff; vDiff = (__Vector3)m_pVertices[0].v - (__Vector3)m_pVertices[1].v; fDiff = vDiff.Magnitude()*fUPerMeter/2; @@ -447,7 +457,7 @@ void CRiverMesh::ReCalcUV() { m_pVertices[0].tu2 = 0.5f - fDiff; m_pVertices[1].tu2 = 0.5f + fDiff; m_pVertices[0].tv2 = 0.0f; m_pVertices[1].tv2 = 0.0f; - // ³ª¸ÓÁö Á¡ °è»êÇϱâ + // Calculate the remaining points for (int i=1; i= m_iVC) { return NULL; diff --git a/src/tool/N3ME/RiverMng.cpp b/src/tool/N3ME/RiverMng.cpp index 7f97b25b..8c126052 100644 --- a/src/tool/N3ME/RiverMng.cpp +++ b/src/tool/N3ME/RiverMng.cpp @@ -97,7 +97,7 @@ void CRiverMng::Render() { hr = s_lpD3DDev->GetRenderState(D3DRS_ZENABLE, &dwZEnable); hr = s_lpD3DDev->GetRenderState(D3DRS_LIGHTING, &dwLighting); - // ±âÁ¸¿¡ ÀÖ´ø °­ ±×¸®±â + // Drawing an existing river it_RiverMesh it = m_RiverMeshes.begin(); int iSize = m_RiverMeshes.size(); for (int i = 0; i < iSize; i++, it++) { @@ -106,7 +106,7 @@ void CRiverMng::Render() { } if (m_bEditMode) { - // °­ »õ·Î ¸¸µå´Â ÁßÀÌ¸é µå·¡±× ¼± ±×¸®±â + // If creating a new river, draw a drag line if (m_RCursorMode == RCM_CREATE) { // set state hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); @@ -126,16 +126,16 @@ void CRiverMng::Render() { s_lpD3DDev->DrawPrimitiveUP(D3DPT_LINELIST, 1, m_CreateLine, sizeof(__VertexXyzColor)); } - // dummy »óÀÚ ±×¸®±â + // draw dummy box m_VtxPosDummy.Render(); if (m_pSelRiver) { - // ¼±ÅÃµÈ °­ÀÇ Á¡±×¸®±â (»¡°­) + // Draw a point on the selected river (red) m_pSelRiver->RenderVertexPoint(); int iVC = m_pSelRiver->VertexCount(); if (iVC > 4) { - // ¼±ÅÃµÈ °­ÀÇ ExtrudeµÉ º¯ Ç¥½ÃÇϱâ + // Display the side to be extruded from the selected steel // backup state __Material BackupMtrl; s_lpD3DDev->GetMaterial(&BackupMtrl); @@ -174,7 +174,7 @@ void CRiverMng::Render() { } } - // ¼±ÅÃµÈ Á¡ ±×¸®±â (ÃÊ·Ï) + // Draw selected point (green) int iSize = m_SelVtxArray.GetSize(); if (iSize > 0) { // transform @@ -205,7 +205,7 @@ void CRiverMng::Render() { int iScreenY = int((1.0f - (v.y / v.w)) * (vp.Height) / 2.0f); if (iScreenX >= (int)vp.X && iScreenX <= (int)vp.Width && iScreenY >= (int)vp.Y && iScreenY <= (int)vp.Height) { - // set X (Á¡À» ÂïÀ¸¸é 1Çȼ¿¹Û¿¡ ¾ÈÂïÀ¸¹Ç·Î XÇ¥½Ã¸¦ ±×¸°´Ù. + // set X (Since drawing a dot only makes a 1-pixel mark, draw an X symbol.) Vertices[0].Set(float(iScreenX - 2), float(iScreenY - 2), 0.5f, 0.5f, clr); Vertices[1].Set(float(iScreenX + 2), float(iScreenY + 2), 0.5f, 0.5f, clr); Vertices[2].Set(float(iScreenX + 2), float(iScreenY - 2), 0.5f, 0.5f, clr); @@ -216,7 +216,7 @@ void CRiverMng::Render() { } } - // µå·¡±× ¿µ¿ª ±×¸®±â + // Draw drag area if (RCM_SELECT == m_RCursorMode) { m_pMainFrm->GetMapMng()->RenderDragRect(&m_rcSelDrag); } @@ -282,14 +282,15 @@ BOOL CRiverMng::MouseMsgFilter(LPMSG pMsg) { case WM_MOUSEMOVE: { DWORD nFlags = pMsg->wParam; POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (RCM_CREATE == m_RCursorMode) { // »õ·Î¿î °­ Ãß°¡ÇÒ¶§ µå·¡±× ÇÏ´Â ¼± ¼³Á¤ - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + if (RCM_CREATE == m_RCursorMode) { // Setting the line to be dragged when adding a new river + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // Point where the above plane meets the straight line (point to find) vPN.Set(0, 1, 0); vPV = m_CreateLine[0]; - m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); // ÀÌÇÔ¼ö Àá½Ã ºô·Á¾¸. + m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); __Vector3 vPR = vPV - vRayOrig; float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); vPos = vRayOrig + vRayDir * fT; @@ -303,7 +304,7 @@ BOOL CRiverMng::MouseMsgFilter(LPMSG pMsg) { } break; case WM_LBUTTONDOWN: { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (RCM_CREATE == m_RCursorMode) { // »õ·Î¿î °­ Ãß°¡ Ãë¼Ò + if (RCM_CREATE == m_RCursorMode) { // Cancel adding new river m_RCursorMode = RCM_NONE; ReleaseCapture(); return TRUE; @@ -335,7 +336,7 @@ BOOL CRiverMng::MouseMsgFilter(LPMSG pMsg) { m_rcSelDrag.bottom = point.y; } - // µå·¹±×°¡ ¾Æ´Ï°í ±×³É Ŭ¸¯Àϰæ¿ì µå·¡±× ¿µ¿ªÀ» 3x3Á¤µµ·Î Àâ¾ÆÁØ´Ù. + // If it is just a click and not a drag, the drag area is set to about 3x3. if (m_rcSelDrag.right - m_rcSelDrag.left < 3 && m_rcSelDrag.bottom - m_rcSelDrag.top < 3) { m_rcSelDrag.left = point.x - 1; m_rcSelDrag.right = point.x + 1; @@ -349,11 +350,11 @@ BOOL CRiverMng::MouseMsgFilter(LPMSG pMsg) { } break; case WM_RBUTTONDOWN: { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (RCM_SELECT == m_RCursorMode) { // Select Ãë¼Ò + if (RCM_SELECT == m_RCursorMode) { // Select Cancel m_RCursorMode = RCM_NONE; ReleaseCapture(); return TRUE; - } else if (RCM_NONE == m_RCursorMode) { // »õ·Î¿î °­ Ãß°¡ + } else if (RCM_NONE == m_RCursorMode) { // add new river CLyTerrain * pTerrain = m_pMainFrm->GetMapMng()->GetTerrain(); __Vector3 vPos; @@ -371,17 +372,18 @@ BOOL CRiverMng::MouseMsgFilter(LPMSG pMsg) { } break; case WM_RBUTTONUP: { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; - if (RCM_CREATE == m_RCursorMode) { // »õ·Î¿î °­ Ãß°¡ + if (RCM_CREATE == m_RCursorMode) { // add new river m_RCursorMode = RCM_NONE; ReleaseCapture(); - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // Point where the above plane meets the straight line (point to find) vPN.Set(0, 1, 0); vPV = m_CreateLine[0]; - m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); // ÀÌÇÔ¼ö Àá½Ã ºô·Á¾¸. + m_VtxPosDummy.GetPickRay(point, vRayDir, vRayOrig); __Vector3 vPR = vPV - vRayOrig; float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); vPos = vRayOrig + vRayDir * fT; @@ -457,7 +459,7 @@ void CRiverMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd) { } if (bAdd == FALSE) { m_SelVtxArray.RemoveAll(); - SetSelRiver(NULL); // ¼±ÅÃÇѰ­ ÇØÁ¦.. + SetSelRiver(NULL); // Cancel selected river.. } CN3EngTool * pEng = m_pMainFrm->m_pEng; @@ -470,11 +472,11 @@ void CRiverMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd) { D3DVIEWPORT9 vp = pEng->s_CameraData.vp; - if (m_pSelRiver) // ÀÌ¹Ì ¼±ÅÃµÈ °­ÀÌ ÀÖ´Ù¸é.. + if (m_pSelRiver) // If there is already a selected river... { - int iVC = m_pSelRiver->VertexCount(); // ±×°­ÀÇ Á¡ ¼ýÀÚ¸¦ ±¸Çϱâ + int iVC = m_pSelRiver->VertexCount(); // Find the number of points in the river for (int i = 0; i < iVC; ++i) { - __VertexXyzT2 * pVtx = m_pSelRiver->GetVertex(i); // Á¡ Çϳª ±¸Çϱâ + __VertexXyzT2 * pVtx = m_pSelRiver->GetVertex(i); // find one point if (pVtx == NULL) { continue; } @@ -499,17 +501,17 @@ void CRiverMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd) { } } if (bAleadySelected) { - m_SelVtxArray.RemoveAt(j); // ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ¼±Åøñ·Ï¿¡¼­ Á¦°Å + m_SelVtxArray.RemoveAt(j); // already exists, so remove from selection list } else { - m_SelVtxArray.InsertAt(0, pVtx); // Ãß°¡ + m_SelVtxArray.InsertAt(0, pVtx); // addition } } } - } else // ¼±ÅÃµÈ °­ÀÌ ¾Æ¹«°Íµµ ¾ø´Ù¸é (¸ðµç°­ °Ë»öÇØ¼­ ¸ÇóÀ½ °ñ¶óÁö´Â °­ ¼±ÅÃÈÄ ±× °­ Á¡µé¸¸ ¼±ÅÃ..) + } else // If there are no selected rivers (search all rivers, select the first river to be selected, then select only those rivers..) { ASSERT(m_SelVtxArray.GetSize() == 0); - CRiverMesh * pSelRiver = NULL; // ¼±ÅÃµÈ °­ + CRiverMesh * pSelRiver = NULL; // selected river it_RiverMesh it = m_RiverMeshes.begin(); int iSize = m_RiverMeshes.size(); for (int i = 0; i < iSize; i++, it++) { @@ -518,9 +520,9 @@ void CRiverMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd) { continue; } - int iVC = pRM->VertexCount(); // À̰­ÀÇ Á¡ °¹¼ö + int iVC = pRM->VertexCount(); // Number of dots in this river for (int j = 0; j < iVC; ++j) { - __VertexXyzT2 * pVtx = pRM->GetVertex(j); // Á¡ Çϳª ±¸Çϱâ + __VertexXyzT2 * pVtx = pRM->GetVertex(j); // find one point if (pVtx == NULL) { continue; } @@ -536,7 +538,7 @@ void CRiverMng::SelectVtxByDragRect(RECT * pRect, BOOL bAdd) { float fScreenY = (1.0f - (v.y / v.w)) * (vp.Height) / 2.0f; if (fScreenX >= pRect->left && fScreenX <= pRect->right && fScreenY >= pRect->top && fScreenY <= pRect->bottom) { - m_SelVtxArray.Add(pVtx); // Ãß°¡ + m_SelVtxArray.Add(pVtx); // addition pSelRiver = pRM; SetSelRiver(pSelRiver); } @@ -564,7 +566,7 @@ void CRiverMng::ExtrudeRiverEdge() { } int iVC = m_pSelRiver->AddVertex(); - m_SelVtxArray.RemoveAll(); // ±âÁ¸¿¡ ¼±ÅÃÇÑ Á¡ ÇØÁ¦ + m_SelVtxArray.RemoveAll(); // Clear previously selected point if (iVC >= 4) { __VertexXyzT2 * pVtx = m_pSelRiver->GetVertex(iVC - 4); @@ -583,7 +585,7 @@ void CRiverMng::ExtrudeRiverEdge() { m_pMainFrm->Invalidate(FALSE); } -void CRiverMng::DeleteSelectedVertex() // ¼±ÅÃµÈ Á¡µé Áö¿ì±â +void CRiverMng::DeleteSelectedVertex() // Clear selected points { if (m_pSelRiver == NULL) { return; @@ -604,7 +606,7 @@ void CRiverMng::ExtrudeRiverEdge() { iVC = m_pSelRiver->DeleteVertex(iIndex); } - m_SelVtxArray.RemoveAll(); // ±âÁ¸¿¡ ¼±ÅÃÇÑ Á¡ ÇØÁ¦ + m_SelVtxArray.RemoveAll(); // Clear previously selected point m_VtxPosDummy.SetSelVtx(NULL); m_pMainFrm->Invalidate(FALSE); } @@ -630,7 +632,7 @@ void CRiverMng::MakeGameFiles(HANDLE hFile, float fSize) { int iVC = pRM->VertexCount(); __VertexXyzT2 *pVtx0 = pRM->GetVertex(0), *pSrcVtx = NULL; ASSERT(pVtx0); - WriteFile(hFile, &iVC, sizeof(iVC), &dwNum, NULL); // Á¡ °¹¼ö + WriteFile(hFile, &iVC, sizeof(iVC), &dwNum, NULL); // number of points // XyxT2 -> XyzColorT2 Converting. __VertexRiver * pTemp = new __VertexRiver[iVC]; @@ -677,7 +679,7 @@ void CRiverMng::MakeGameFiles(HANDLE hFile, float fSize) { } /* - // ¸ðµç °­ Á¤º¸ ÀúÀå (*.grm) game river main + // Save all river information (*.grm) game river main int iRiverCount = m_RiverMeshes.size(); CLyTerrain* pTerrain = m_pMainFrm->GetMapMng()->GetTerrain(); @@ -714,9 +716,9 @@ void CRiverMng::MakeGameFiles(HANDLE hFile, float fSize) { if (iRiverCount <=0) return; - // °¢°¢ÀÇ ÆÐÄ¡ Á¤º¸ ÀúÀå (*.grp) game river patch + // Save each patch information (*.grp) game river patch int iPatchCount = size.cx * size.cy; - // °¢ ÆÐÄ¡º°·Î Á¤º¸ ºÐ·ùÇϱâ + // Classify information for each patch __TempPatch* TempPatches = new __TempPatch[iPatchCount]; it = m_RiverMeshes.begin(); @@ -742,7 +744,7 @@ void CRiverMng::MakeGameFiles(HANDLE hFile, float fSize) { } } - // CN3RiverPatch±¸Á¶¿¡ ¾Ë¸Â°Ô ³Ö±â. + // Insert appropriately into the CN3RiverPatch structure. CN3RiverPatch* RiverPatches = new CN3RiverPatch[iPatchCount]; for (int i=0; iGetMapMng()->GetTerrain(); @@ -822,9 +824,9 @@ void CRiverMng::MakeGameFiles(LPCTSTR lpszFName, float fSize) if (iRiverCount <=0) return; - // °¢°¢ÀÇ ÆÐÄ¡ Á¤º¸ ÀúÀå (*.grp) game river patch + // Save each patch information (*.grp) game river patch int iPatchCount = size.cx * size.cy; - // °¢ ÆÐÄ¡º°·Î Á¤º¸ ºÐ·ùÇϱâ + // Classify information for each patch __TempPatch* TempPatches = new __TempPatch[iPatchCount]; for (int i=0; i m_RiverMeshes; // River Mesh list - CRiverMesh * m_pSelRiver; // ¼±ÅÃµÈ RiverMesh - CTypedPtrArray m_SelVtxArray; // ¼±ÅÃµÈ Á¡µé - CVtxPosDummy m_VtxPosDummy; // Á¡À» ¿òÁ÷Àϼö ÀÖ´Â dummy object - BOOL m_bEditMode; // °­¹° ÆíÁý¸ðµåÀΰ¡? - int m_RCursorMode; // °­À» Ãß°¡?ÇÏ´Â °ÍÀΰ¡ Á¡À» ¼±ÅÃÇÏ´Â °ÍÀΰ¡? + CRiverMesh * m_pSelRiver; // Selected RiverMesh + CTypedPtrArray m_SelVtxArray; // selected points + CVtxPosDummy m_VtxPosDummy; // dummy object that can move the point + BOOL m_bEditMode; // Is this river editing mode? + int m_RCursorMode; // Adding a river or selecting a point? CMainFrame * m_pMainFrm; // mainframe pointer CDlgRiverProperty * m_pDlgProperty; // property dialog - RECT m_rcSelDrag; // µå·¡±× ¿µ¿ª - __VertexXyzColor m_CreateLine[2]; // °­ óÀ½ »ý¼ºÇÒ¶§ º¸ÀÌ´Â ¼± + RECT m_rcSelDrag; // drag area + __VertexXyzColor m_CreateLine[2]; // Line visible when the river is first created // Operations public: @@ -71,21 +71,21 @@ class CRiverMng : public CN3BaseFileAccess { virtual bool Load(HANDLE hFile); virtual bool Save(HANDLE hFile); - void MakeGameFiles(HANDLE hFile, float fSize); // Game file·Î ÀúÀå + void MakeGameFiles(HANDLE hFile, float fSize); // Save as game file CRiverMesh * CreateNewRiverMesh(__Vector3 & vPos1, __Vector3 & vPos2, __Vector3 & vPos3, - __Vector3 & vPos4); // »õ·Î¿î °­À» Ãß°¡ÇÑ´Ù. - void RemoveRiverMesh(int iRiverID); // ¼±ÅÃµÈ °­À» »èÁ¦ÇÑ´Ù. - BOOL MouseMsgFilter(LPMSG pMsg); // Mouse ¸Þ¼¼Áö ó¸® - BOOL SetRiverID(CRiverMesh * pRiverMesh, int iRiverID); // °­ÀÇ ID¸¦ ¼³Á¤ - void SetEditMode(BOOL bEditMode); // °­ EditMode¼³Á¤ + __Vector3 & vPos4); // Add a new river. + void RemoveRiverMesh(int iRiverID); // Delete the selected river. + BOOL MouseMsgFilter(LPMSG pMsg); // Mouse message processing + BOOL SetRiverID(CRiverMesh * pRiverMesh, int iRiverID); // Set course ID + void SetEditMode(BOOL bEditMode); // Strong EditMode settings void ExtrudeRiverEdge(); - CRiverMesh * GetRiverMesh(int iRiverID); // RiverMesh ¾ò±â - void DeleteSelectedVertex(); // ¼±ÅÃµÈ Á¡µé Áö¿ì±â - void ReCalcUV(); // ¼±ÅÃµÈ °­ÀÇ UVÁÂÇ¥ ´Ù½Ã °è»ê. + CRiverMesh * GetRiverMesh(int iRiverID); // Get RiverMesh + void DeleteSelectedVertex(); // Clear selected points + void ReCalcUV(); // Recalculate the UV coordinates of the selected river. void ReCalcSelectedVertex(); - void GoRiver(int iRiverID); // ¼±ÅÃµÈ °­À¸·Î °©´Ï´Ù. + void GoRiver(int iRiverID); // Go to the selected river. protected: - void SetSelRiver(CRiverMesh * pRiverMesh); // RiverMesh ¼±ÅÃÇϱâ + void SetSelRiver(CRiverMesh * pRiverMesh); // Select RiverMesh void SelectVtxByDragRect(RECT * pRect, BOOL bAdd); }; diff --git a/src/tool/N3ME/RotDummy.cpp b/src/tool/N3ME/RotDummy.cpp index f3fd7bde..318ca1b5 100644 --- a/src/tool/N3ME/RotDummy.cpp +++ b/src/tool/N3ME/RotDummy.cpp @@ -80,6 +80,6 @@ void CRotDummy::SetSelObj(CN3Transform * pObj) { m_vPos = pObj->Pos(); // m_qRot = pObj->Rot(); - m_qRot.Identity(); // Quaternion ȸÀüÀ̱⠶«½Ã... ÃʱâÈ­¸¦ ÇØÁØ´Ù.. + m_qRot.Identity(); // Since it is a quaternion rotation... initialize it. } } diff --git a/src/tool/N3ME/SoundCell.cpp b/src/tool/N3ME/SoundCell.cpp index 28529372..0c13a6c6 100644 --- a/src/tool/N3ME/SoundCell.cpp +++ b/src/tool/N3ME/SoundCell.cpp @@ -72,7 +72,7 @@ void CSoundCell::MakeTileVB(int x, int z, DWORD color) { return; } - if ((x + z) % 2 == 0) // ½½·¡½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 0) // Slash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; @@ -94,7 +94,7 @@ void CSoundCell::MakeTileVB(int x, int z, DWORD color) { return; } - if ((x + z) % 2 == 1) //¹é½½·¹½¬ ¸ð¾çÀÇ Å¸ÀÏ.. + if ((x + z) % 2 == 1) //Backslash-shaped tile.. { __Vector3 v; v.x = x * TERRAIN_CELL_SIZE; diff --git a/src/tool/N3ME/SoundMgr.cpp b/src/tool/N3ME/SoundMgr.cpp index ae9f2733..34dc9936 100644 --- a/src/tool/N3ME/SoundMgr.cpp +++ b/src/tool/N3ME/SoundMgr.cpp @@ -178,7 +178,7 @@ void CSoundMgr::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -198,7 +198,7 @@ void CSoundMgr::Render() { hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); - //ÀÌ¹Ì ¸¸µé¾îÁø ±æ ±×¸®±â... + //Draw an already created path... std::list::iterator itSound; CSoundCell * pSound; @@ -211,12 +211,12 @@ void CSoundMgr::Render() { pSound->Render(0xff0000ff); } - //´ëÈ­»óÀÚ¿¡¼­ ¼±ÅÃµÈ ±æ ±×¸®±â. + //Drawing the path & area being created... if (m_pDlgSound->m_pSelSound) { m_pDlgSound->m_pSelSound->Render(0xff00ff00); } - //¸¸µé°í ÀÖ´Â ±æ & ¿µ¿ª ±×¸®±â.. + //Drawing the path & area being created... m_pCurrSound->Render(0xffff0000); // restore @@ -226,7 +226,7 @@ void CSoundMgr::Render() { } bool CSoundMgr::Load(HANDLE hFile) { - //dlg Ŭ¸®¾î.. + //dlg clear.. m_pDlgSound->Clear(); DWORD dwRWC; @@ -235,7 +235,7 @@ bool CSoundMgr::Load(HANDLE hFile) { return false; } - //m_pSoundŬ¸®¾î... + //m_pSound Clear... std::list::iterator it; for (it = m_pSound.begin(); it != m_pSound.end(); it++) { CSoundCell * pSoundCell = (*it); @@ -251,7 +251,7 @@ bool CSoundMgr::Load(HANDLE hFile) { pSoundCell->Load(hFile); m_pSound.push_back(pSoundCell); - //dlg¿¡ Ãß°¡... + //Add to dlg... m_pDlgSound->AddSoundInfo(pSoundCell); } m_pRefMapMng->Invalidate(); @@ -284,8 +284,8 @@ void CSoundMgr::SaveGameData(HANDLE hFile) { char * pSound = (char *)GlobalAlloc(GMEM_FIXED, sizeof(char) * m_MapSize * m_MapSize); memset(pSound, -1, sizeof(char) * m_MapSize * m_MapSize); - //sound cellµéÀ» ¸éÀû¼øÀ¸·Î(Å«°Ô ¾ÕÀ¸·Î ¿À°Ô..)Á¤·ÄÇϰí... - //¸éÀû¼øÀ¸·Î Á¤¸®Çϸ鼭 ¾ÆÀ̵ðÁ¤·Äµµ Çϰí... + //Arrange the sound cells in order of area (larger first)... + //Organize by area and sort by ID... // // SCSort(); @@ -310,10 +310,10 @@ void CSoundMgr::SaveGameData(HANDLE hFile) { LPSOUNDINFO pSI = m_pDlgSound->GetSoundGroup(dwID); if (!pSI) { - AfxMessageBox("Sound GroupÀÌ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.¤Ð.¤Ð"); + AfxMessageBox("Sound Group is invalid"); return; } - //sound groupÀ» ¾îÄÉ ÀúÀåÇÑ´ã? + //How did you save the sound group? for (int j = 0; j < 4; j++) { int str_size = 0; std::string str; @@ -332,7 +332,7 @@ void CSoundMgr::SaveGameData(HANDLE hFile) { } } - // ŸÀÏ¿¡ Sound Info ¼ÂÆÃÇϰí ÀúÀå... + // Set Sound Info on the tile and save... for (it = m_pSound.begin(); it != m_pSound.end(); it++) { CSoundCell * pSoundCell = (*it); @@ -351,8 +351,8 @@ void CSoundMgr::SaveGameData(HANDLE hFile) { // /////////////////////////////////////////////////////////////////////////////////////////////// // related sort list... -// listÀÇ sortÇÔ¼ö º£²¼´ç..-.- -// Á¦´ë·Î µ¿ÀÛ ¾ÈÇÏ´õ¶ó..¤Ð.¤Ð +// Copied the sort function of the list.. +// It didn’t work properly.. // void CSoundMgr::SCSort() { diff --git a/src/tool/N3ME/SoundMgr.h b/src/tool/N3ME/SoundMgr.h index 537e485a..c7c52359 100644 --- a/src/tool/N3ME/SoundMgr.h +++ b/src/tool/N3ME/SoundMgr.h @@ -42,7 +42,7 @@ class CSoundMgr : public CN3BaseFileAccess { int m_MapSize; CMapMng * m_pRefMapMng; - bool m_bActive; // À̱â´ÉÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´ÂÁö...1:Ȱ¼ºÈ­, 0:ºñȰ¼ºÈ­.. + bool m_bActive; // Is this function activated? 1: Enabled, 0: Disabled.. CDlgSetSound * m_pDlgSound; public: @@ -55,7 +55,7 @@ class CSoundMgr : public CN3BaseFileAccess { void Render(); ////////////////////////////////////////////// - //m_pSound¸¦ ¼ÒÆ®ÇϱâÀ§ÇÔÀ̾ß.. + //This is to sort m_pSound.. void SCSort(); void SCMerge(std::list & l1, std::list & l2); bool SCComp(CSoundCell * pP1, CSoundCell * pP2); diff --git a/src/tool/N3ME/SowSeedMng.cpp b/src/tool/N3ME/SowSeedMng.cpp index 35c646cb..3a91489f 100644 --- a/src/tool/N3ME/SowSeedMng.cpp +++ b/src/tool/N3ME/SowSeedMng.cpp @@ -72,7 +72,7 @@ BOOL CSowSeedMng::MouseMessage(LPMSG pMsg) { static int iPrevScreenY = 0; const float fDelta = 0.10f; - static int iSumOfEditedHeight = 0; // À̹ø µå·¡±×·Î º¯È­µÈ ÁöÇü³ôÀÌÀÇ ÇÕ + static int iSumOfEditedHeight = 0; // Sum of terrain height changed by this drag CMainFrame * pFrame = (CMainFrame *)AfxGetMainWnd(); switch (pMsg->message) { @@ -81,7 +81,7 @@ BOOL CSowSeedMng::MouseMessage(LPMSG pMsg) { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; if (pFrame->m_pDlgSowSeed->Sow_Select_Flage == CS_SOW) { - // ºê·¯½Ã ¾÷µ¥ÀÌÆ® + // update brush if (pFrame->GetMapMng()->GetTerrain()->Pick(point.x, point.y, NULL, &ptSelHeightMapPos)) { pFrame->GetMapMng()->GetTerrain()->UpdateBrushArea(ptSelHeightMapPos); } @@ -182,7 +182,7 @@ void CSowSeedMng::Render(LPDIRECT3DDEVICE9 lpD3DDevice) { CMainFrame * pFrame = (CMainFrame *)AfxGetMainWnd(); if (pFrame->m_pDlgSowSeed->Sow_Select_Flage == CS_SOW) { - // ºê·¯½Ã¿¡ ¼±ÅÃµÈ Ç® + // Grass selected on brush if (Render_Grass == TRUE) { pFrame->GetMapMng()->GetTerrain()->RenderBrushArea(); for (int i = 0, Num = 0; i < MAX_BRUSH_SIZE; ++i) { @@ -247,7 +247,7 @@ void CSowSeedMng::Render(LPDIRECT3DDEVICE9 lpD3DDevice) { } } - // ¸Ê¿¡ ÂïÈù Ç® ±×¸®±â + // Draw the grass on the map if (Render_Grass == TRUE) { it_Grass_Group it = Grass_Group.begin(); for (int i = 0; i < Grass_Group.size(); i++, it++) { @@ -268,7 +268,7 @@ void CSowSeedMng::Render(LPDIRECT3DDEVICE9 lpD3DDevice) { } } } - } else if (Select_Group_Id == i) // ¼±ÅÃµÈ ±×·ì + } else if (Select_Group_Id == i) // selected group { Render_Box(lpD3DDevice, group->Pos); for (int j = 0; j < group->grass.size(); j++, it_grass++) { @@ -453,7 +453,7 @@ void CSowSeedMng::Add_Grass(void) { pFrame->GetMapMng()->m_pDlgSourceList->m_ListShape.GetText(temp->Obj_ID, Name); char text[256]; - sprintf(text, "Ç® ID: %d , ÆÄÀϸí:%s", Grass_ID, Name); + sprintf(text, "Pool ID: %d , File name:%s", Grass_ID, Name); int CurPos = pFrame->m_pDlgSowSeed->m_CB_TileGroup.GetCount(); pFrame->m_pDlgSowSeed->m_CB_TileGroup.AddString(text); @@ -560,7 +560,7 @@ void CSowSeedMng::Render_Box(LPDIRECT3DDEVICE9 lpD3DDevice, __Vector3 Pos) { }; void CSowSeedMng::SaveData(void) { - // Seed List ÀÐ¾î ¿À±â.. + // Read Seed List... DWORD dwFlags = OFN_EXPLORER | OFN_CREATEPROMPT | OFN_LONGNAMES | OFN_OVERWRITEPROMPT; CFileDialog dlg(FALSE, "tgi", NULL, dwFlags, "Grass Info File(*.tgi)|*.tgi||", NULL); @@ -571,24 +571,24 @@ void CSowSeedMng::SaveData(void) { int size = Grass_Group.size(); if (size > 0) { FILE * fp = fopen((LPCTSTR)dlg.GetPathName(), "w"); - // ±×·ìÀÇ ÃѰټö + // Total number of gets in the group fwrite(&size, sizeof(int), 1, fp); it_Grass_Group it = Grass_Group.begin(); for (int i = 0; i < size; i++, it++) { LPGRASS_GROUP group = *it; - // ºê·¯½Ã Å©±â + // brush size fwrite(&group->b_size, sizeof(group->b_size), 1, fp); - // ±×·ì ¾ÆÀ̵ð + // group ID fwrite(&group->Group_id, sizeof(group->Group_id), 1, fp); - // ¿ÀºêÁ§Æ® ¾ÆÀ̵ð + // object ID fwrite(&group->Obj_ID, sizeof(group->Obj_ID), 1, fp); - // ±×·ì À§Ä¡ + // group position fwrite(group->Pos, sizeof(group->Pos), 1, fp); - // ¼­ºê ±×·ì Å©±â + // subgroup size int grass_size = group->grass.size(); fwrite(&grass_size, sizeof(grass_size), 1, fp); - // ÆÄÀÏ¸í ¾²±â + // Write file name int len = strlen(group->FileName); fwrite(&len, sizeof(int), 1, fp); fwrite(group->FileName, len, 1, fp); @@ -596,9 +596,9 @@ void CSowSeedMng::SaveData(void) { it_Grass it_grass = group->grass.begin(); for (int j = 0; j < grass_size; j++, it_grass++) { LPGRASS grass = *it_grass; - // Ç®ÀÇ À§Ä¡ + // location of the pool fwrite(grass->Pos, sizeof(grass->Pos), 1, fp); - // Ç®ÀÇ Å¸ÀÏ ¹øÈ£ + // tile number in the pool fwrite(&grass->Tile_x, sizeof(grass->Tile_x), 1, fp); fwrite(&grass->Tile_z, sizeof(grass->Tile_z), 1, fp); } @@ -612,7 +612,7 @@ void CSowSeedMng::LoadData(void) { char szOldPath[_MAX_PATH]; GetCurrentDirectory(_MAX_PATH, szOldPath); - // Seed List ÀÐ¾î ¿À±â.. + // Read Seed List... DWORD dwFlags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; CFileDialog dlg(TRUE, "tgi", NULL, dwFlags, "Grass Info File(*.tgi)|*.tgi||", NULL); @@ -620,7 +620,7 @@ void CSowSeedMng::LoadData(void) { return; } - // ¸®½ºÆ® ÃʱâÈ­ + // list initialization if (Grass_Group.size() > 0) { Render_Grass = FALSE; it_Grass_Group it = Grass_Group.begin(); @@ -640,7 +640,7 @@ void CSowSeedMng::LoadData(void) { } Grass_Group.clear(); } - // ·Îµù ½ÃÀÛ + // start loading FILE * fp = fopen((LPCTSTR)dlg.GetPathName(), "r"); int size = 0; @@ -656,16 +656,16 @@ void CSowSeedMng::LoadData(void) { int grass_sub_size = 0; fread(&grass_sub_size, sizeof(grass_sub_size), 1, fp); - // ÆÄÀϸí Àбâ + // read file name int len = 0; fread(&len, sizeof(int), 1, fp); fread(group->FileName, len, 1, fp); for (int j = 0; j < grass_sub_size; j++) { LPGRASS grass = new GRASS; - // Ç®ÀÇ À§Ä¡ + // location of the pool fread(grass->Pos, sizeof(grass->Pos), 1, fp); - // Ç®ÀÇ Å¸ÀÏ ¹øÈ£ + // tile number in the pool fread(&grass->Tile_x, sizeof(grass->Tile_x), 1, fp); fread(&grass->Tile_z, sizeof(grass->Tile_z), 1, fp); group->grass.push_back(grass); @@ -685,7 +685,7 @@ void CSowSeedMng::SaveDataGame(void) { CMainFrame * m_pRefFrm = (CMainFrame *)AfxGetMainWnd(); if (m_pRefFrm->m_SeedFileName[0] == NULL) { - ::MessageBox(NULL, "¸Ê ÆÄÀÏ ºÎÅÍ °ÔÀÓ¿ëÀ¸·Î ÀúÀåÇϼ¼¿ä", "È®ÀÎ", MB_OK); + ::MessageBox(NULL, "Save the map file for use in the game.", "Warning", MB_OK); return; } @@ -718,7 +718,7 @@ void CSowSeedMng::SaveDataGame(void) { sprintf(Buff, "GrassInfoFile"); WriteFile(hFile, Buff, 80, &dwRWC, NULL); - // ±×·ì Å©±â + // group size Obj_Name.clear(); it_Grass_Group it = Grass_Group.begin(); for (int i = 0, Object_ID = 0; i < Grass_Group.size(); i++, it++) { @@ -769,7 +769,7 @@ void CSowSeedMng::Test_GameDataSave(void) { CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); int Map_Size = pFrm->GetMapMng()->GetTerrain()->m_iHeightMapSize; - //ŸÀÏ¿¡ Ç® ¼Ó¼º ÀúÀå.. + //Save pool properties to tile.. LPSEEDGROUP SeedAttr = new SEEDGROUP[Map_Size * Map_Size]; ZeroMemory(SeedAttr, sizeof(unsigned char) * Map_Size * Map_Size); @@ -838,7 +838,7 @@ void CSowSeedMng::Test_GameDataLoad(void) { CMainFrame * pFrm = (CMainFrame *)AfxGetMainWnd(); int Map_Size = pFrm->GetMapMng()->GetTerrain()->m_iHeightMapSize; - //ŸÀÏ¿¡ Ç® ¼Ó¼º ÀúÀå.. + //Save pool properties to tile.. LPSEEDGROUP SeedAttr = new SEEDGROUP[Map_Size * Map_Size]; ZeroMemory(SeedAttr, sizeof(unsigned char) * Map_Size * Map_Size); @@ -859,7 +859,7 @@ void CSowSeedMng::Test_GameDataLoad(void) { } } - // ÅØ½ºÆ®ÆÄÀÏ·Î ÇÔ »Ì¾Æº¸ÀÚ.. + // Let's extract it as a text file. FILE * stream = fopen("c:\\grass.txt", "w"); for (int z = 0; z < Map_Size; z++) { for (int x = 0; x < Map_Size; x++) { diff --git a/src/tool/N3ME/SowSeedMng.h b/src/tool/N3ME/SowSeedMng.h index ee0af4bd..88fbe98c 100644 --- a/src/tool/N3ME/SowSeedMng.h +++ b/src/tool/N3ME/SowSeedMng.h @@ -62,8 +62,8 @@ class CSowSeedMng { int Add_List_Count; - __VertexColor * m_pVertices; // Á¡ ¹öÆÛ - int m_nVC; // Á¡ °¹¼ö + __VertexColor * m_pVertices; // dot buffer + int m_nVC; // number of points bool bActive; BOOL Render_Grass; @@ -75,7 +75,7 @@ class CSowSeedMng { void SetActive(BOOL flage); void Render(LPDIRECT3DDEVICE9 lpD3DDevice); - // Mouse ¸Þ¼¼Áö ó¸® + // Mouse message processing BOOL MouseMessage(LPMSG pMsg); void Release(); void Create_Grass(int NUm); diff --git a/src/tool/N3ME/TransDummy.cpp b/src/tool/N3ME/TransDummy.cpp index f1f76f10..a5ff2cee 100644 --- a/src/tool/N3ME/TransDummy.cpp +++ b/src/tool/N3ME/TransDummy.cpp @@ -133,7 +133,7 @@ void CTransDummy::Tick() { if (m_SelObjArray.GetSize() == 0) { return; } - // Scale Á¶Á¤ + // Scale adjustment __Vector3 vL = s_CameraData.vEye - m_vPos; float fL = vL.Magnitude() * 0.01f; m_vScale.Set(fL, fL, fL); @@ -141,7 +141,7 @@ void CTransDummy::Tick() { CN3Transform::Tick(-1000.0f); ReCalcMatrix(); - // °Å¸®¿¡ µû¶ó Á¤·Ä + // Sort by distance for (int i = 0; i < NUM_DUMMY; ++i) { __Vector3 vPos = m_DummyCubes[i].vCenterPos * m_Matrix; m_DummyCubes[i].fDistance = (vPos - s_CameraData.vEye).Magnitude(); @@ -173,7 +173,7 @@ void CTransDummy::Render() { HRESULT hr; // set transform - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &m_Matrix); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &m_Matrix); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -189,11 +189,11 @@ void CTransDummy::Render() { hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); hr = s_lpD3DDev->SetRenderState(D3DRS_LIGHTING, FALSE); - // À̾îÁö ¼± ±×¸®±â + // Draw continuous lines hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_LINELIST, 3, m_LineVertices, sizeof(__VertexXyzColor)); - // Cube ±×¸®±â + // Draw Cube hr = s_lpD3DDev->SetFVF(FVF_XYZNORMALCOLOR); for (int i = 0; i < NUM_DUMMY; ++i) { ASSERT(m_pSortedCubes[i]); @@ -272,7 +272,7 @@ BOOL CTransDummy::MouseMsgFilter(LPMSG pMsg) { m_vPrevScaleArray = NULL; } m_vPrevScaleArray = new __Vector3[iSize]; - for (int i = 0; i < iSize; ++i) // ¸ðµç ¼±ÅÃµÈ °´Ã¼ÀÇ ½ºÄÉÀÏ ÀúÀå + for (int i = 0; i < iSize; ++i) // Save scale of all selected objects { CN3Transform * pSelObj = m_SelObjArray.GetAt(i); _ASSERT(pSelObj); @@ -290,7 +290,7 @@ BOOL CTransDummy::MouseMsgFilter(LPMSG pMsg) { return TRUE; } } break; - case WM_RBUTTONUP: // Å¥ºê ¼±Åà Ãë¼Ò ¹× À̹ø µå·¡±×·Î ¿òÁ÷ÀÎ°Í µÇµ¹·Á ³õ±â + case WM_RBUTTONUP: // Cancel selection of cube and return what was moved by this drag { if (m_pSelectedCube) { __Vector3 vDiffPos = m_vPrevPos - m_vPos; @@ -369,7 +369,7 @@ void CTransDummy::TransDiff(__Vector3 * pvDiffPos, __Quaternion * pqDiffRot, __V qtRot *= (*pqDiffRot); pSelObj->RotSet(qtRot); - vPos = pSelObj->Pos(); // ¸Ê»ó¿¡¼­ÀÇ À§Ä¡ + vPos = pSelObj->Pos(); // location on the map vPos -= vCenter; vPos *= mtx44Rotate; vPos += vCenter; diff --git a/src/tool/N3ME/TransDummy.h b/src/tool/N3ME/TransDummy.h index c0a41520..24274493 100644 --- a/src/tool/N3ME/TransDummy.h +++ b/src/tool/N3ME/TransDummy.h @@ -18,10 +18,10 @@ enum { const int NUM_CUBEVERTEX = 36; struct __DUMMYCUBE { - int iType; // Center , X, Y, Z Á¾·ù ±¸ºÐ. - __VertexXyzNormalColor Vertices[NUM_CUBEVERTEX]; // Å¥ºêÀÇ ±¸¼º Á¡µé - __Vector3 vCenterPos; // Å¥ºêÀÇ °¡¿îµ¥ Á¡ - float fDistance; // Ä«¸Þ¶ó¿ÍÀÇ °Å¸® + int iType; // Classification of Center, X, Y, Z types. + __VertexXyzNormalColor Vertices[NUM_CUBEVERTEX]; // Constituting points of the cube + __Vector3 vCenterPos; // center point of cube + float fDistance; // Distance from camera }; class CLyTerrain; @@ -36,30 +36,30 @@ class CTransDummy : public CN3Transform { // Attributes public: protected: - __DUMMYCUBE m_DummyCubes[NUM_DUMMY]; // 4°³ÀÇ Å¥ºê(center, x, y, z); - __VertexXyzColor m_LineVertices[6]; // 4°³ÀÇ Å¥ºê¸¦ À̾îÁÖ´Â ¼±À» ±¸¼ºÇÏ´Â Á¡ - CTypedPtrArray m_SelObjArray; // MapMng¿¡¼­ ¼±ÅÃµÈ °´Ã¼µé - __DUMMYCUBE * m_pSortedCubes[NUM_DUMMY]; // Cube °Å¸®¿¡ µû¶ó Á¤·ÄµÈ Æ÷ÀÎÅÍ - __DUMMYCUBE * m_pSelectedCube; // ¼±ÅÃµÈ Å¥ºê - __Vector3 m_vPrevPos; // À̹ø ¸¶¿ì½º µå·¡±× ÀÌÀü¿¡ À§Ä¡ ȸÀü È®´ë/Ãà¼Ò°ª - __Quaternion m_qPrevRot; // À̹ø ¸¶¿ì½º µå·¡±× ÀÌÀü¿¡ À§Ä¡ ȸÀü È®´ë/Ãà¼Ò°ª + __DUMMYCUBE m_DummyCubes[NUM_DUMMY]; // 4 cubes (center, x, y, z); + __VertexXyzColor m_LineVertices[6]; // Points that make up the line connecting the 4 cubes + CTypedPtrArray m_SelObjArray; // Objects selected in MapMng + __DUMMYCUBE * m_pSortedCubes[NUM_DUMMY]; // Pointers sorted according to Cube distance + __DUMMYCUBE * m_pSelectedCube; // selected cube + __Vector3 m_vPrevPos; // Position rotation zoom value before this mouse drag + __Quaternion m_qPrevRot; // Position rotation zoom value before this mouse drag __Vector3 * - m_vPrevScaleArray; // À̹ø ¸¶¿ì½º µå·¡±× ÀÌÀü¿¡ È®´ë/Ãà¼Ò°ªµé (¼±ÅÃµÈ °´Ã¼µé ¸ðµÎÀÇ °ªÀ» °¡Áö°í ÀÖ¾î¾ß Çϱ⠶§¹®¿¡ ¹è¿­) + m_vPrevScaleArray; // Zoom values before this mouse drag (array because it must contain the values of all selected objects) // Operations public: virtual void Tick(); virtual void Render(); virtual void Release(); - virtual void SetSelObj(CN3Transform * pObj); // ¼±ÅÃµÈ °´Ã¼ ¹Ù²Ù±â - virtual void AddSelObj(CN3Transform * pObj); // ¼±ÅÃµÈ °´Ã¼ Ãß°¡ - virtual BOOL MouseMsgFilter(LPMSG pMsg); // ¸¶¿ì½º ¸Þ¼¼Áö ó¸® + virtual void SetSelObj(CN3Transform * pObj); // change selected object + virtual void AddSelObj(CN3Transform * pObj); // add selected object + virtual BOOL MouseMsgFilter(LPMSG pMsg); // Process mouse messages void GetPickRay(POINT point, __Vector3 & vDir, - __Vector3 & vOrig); // ¸¶¿ì½º Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ÂÊÀ¸·Î »¸¾î³ª°¡´Â ¼± ¾ò´Â ÇÔ¼ö + __Vector3 & vOrig); // Function to get a line extending in the direction the mouse pointer points protected: - __DUMMYCUBE * Pick(int x, int y); // Å¥ºê picking - void InitDummyCube(int iType, __DUMMYCUBE * pDummyCube, __Vector3 & vOffset, D3DCOLOR color); // Å¥ºê ÃʱâÈ­ - static int SortCube(const void * pArg1, const void * pArg2); // Å¥ºê Ä«¸Þ¶ó °Å¸®¿¡ ´ëÇÑ Á¤·ÄÇÔ¼ö + __DUMMYCUBE * Pick(int x, int y); // cube picking + void InitDummyCube(int iType, __DUMMYCUBE * pDummyCube, __Vector3 & vOffset, D3DCOLOR color); // initialize cube + static int SortCube(const void * pArg1, const void * pArg2); // Sorting function for cube camera distance virtual void TransDiff(__Vector3 * pvDiffPos, __Quaternion * pvDiffRot, - __Vector3 * pvDiffScale); // Â÷À̸¸Å­ ¼±ÅÃµÈ ¿À¹ÇÁ§Æ®µéÀ» º¯Çü½ÃŲ´Ù. + __Vector3 * pvDiffScale); // Transform the selected objects by the difference. }; diff --git a/src/tool/N3ME/VtxPosDummy.cpp b/src/tool/N3ME/VtxPosDummy.cpp index a3c654c2..6c582987 100644 --- a/src/tool/N3ME/VtxPosDummy.cpp +++ b/src/tool/N3ME/VtxPosDummy.cpp @@ -30,7 +30,7 @@ void CVtxPosDummy::Tick() { return; } - // Scale Á¶Á¤ + // Scale adjustment __Vector3 vL = s_CameraData.vEye - m_vPos; float fL = vL.Magnitude() * 0.01f; m_vScale.Set(fL, fL, fL); @@ -38,7 +38,7 @@ void CVtxPosDummy::Tick() { CN3Transform::Tick(-1000.0f); ReCalcMatrix(); - // °Å¸®¿¡ µû¶ó Á¤·Ä + // Sort by distance for (int i = 0; i < NUM_DUMMY; ++i) { __Vector3 vPos = m_DummyCubes[i].vCenterPos * m_Matrix; m_DummyCubes[i].fDistance = (vPos - s_CameraData.vEye).Magnitude(); @@ -57,7 +57,7 @@ void CVtxPosDummy::Render() { HRESULT hr; // set transform - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &m_Matrix); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &m_Matrix); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -73,16 +73,16 @@ void CVtxPosDummy::Render() { hr = s_lpD3DDev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); hr = s_lpD3DDev->SetRenderState(D3DRS_LIGHTING, FALSE); - // À̾îÁö ¼± ±×¸®±â + // Draw continuous lines hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_LINELIST, 3, m_LineVertices, sizeof(__VertexXyzColor)); - // Cube ±×¸®±â + // Draw Cube hr = s_lpD3DDev->SetFVF(FVF_XYZNORMALCOLOR); for (int i = 0; i < NUM_DUMMY; ++i) { ASSERT(m_pSortedCubes[i]); if (m_pSortedCubes[i]->iType == DUMMY_CENTER) { - continue; // °¡¿îµ¥ Å¥ºê´Â ±×¸®Áö ¾Ê´Â´Ù. + continue; // The center cube is not drawn. } hr = s_lpD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 12, m_pSortedCubes[i]->Vertices, sizeof(__VertexXyzNormalColor)); @@ -101,7 +101,7 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { ASSERT(0); } -void CVtxPosDummy::SetSelVtx(__VertexXyzT1 * pVtx) // ¼±ÅÃµÈ Á¡ ¹Ù²Ù±â +void CVtxPosDummy::SetSelVtx(__VertexXyzT1 * pVtx) // change selected point { m_SelVtxArray.RemoveAll(); if (pVtx) { @@ -111,13 +111,13 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { } } -void CVtxPosDummy::AddSelVtx(__VertexXyzT1 * pVtx) // ¼±ÅÃµÈ Á¡ Ãß°¡ +void CVtxPosDummy::AddSelVtx(__VertexXyzT1 * pVtx) // add selected point { _ASSERT(pVtx); m_SelVtxArray.Add(pVtx); } -BOOL CVtxPosDummy::MouseMsgFilter(LPMSG pMsg) // ¸¶¿ì½º ¸Þ¼¼Áö ó¸® +BOOL CVtxPosDummy::MouseMsgFilter(LPMSG pMsg) // Process mouse messages { int iSize = m_SelVtxArray.GetSize(); if (iSize == 0) { @@ -129,9 +129,10 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { POINT point = {short(LOWORD(pMsg->lParam)), short(HIWORD(pMsg->lParam))}; DWORD nFlags = pMsg->wParam; if (m_pSelectedCube && (nFlags & MK_LBUTTON)) { - __Vector3 vRayDir, vRayOrig; // È­¸é Áß¾Ó(½ÃÁ¡)°ú ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ÀÌÀº Á÷¼±ÀÇ ¹æÇâ°ú ¿øÁ¡ - __Vector3 vPN, vPV; // Æò¸éÀÇ ¹ý¼±°ú Æ÷ÇÔµÈ Á¡ - __Vector3 vPos; // À§ÀÇ Æò¸é°ú Á÷¼±ÀÇ ¸¸³ª´Â Á¡(±¸ÇÒ Á¡) + __Vector3 vRayDir, + vRayOrig; // Direction and origin of the straight line connecting the screen center (viewpoint) and the mouse pointer + __Vector3 vPN, vPV; // Plane normal and contained points + __Vector3 vPos; // Point where the above plane meets the straight line (point to find) __Vector3 vCameraDir = s_CameraData.vAt - s_CameraData.vEye; vCameraDir.Normalize(); GetPickRay(point, vRayDir, vRayOrig); @@ -141,7 +142,7 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { switch (m_pSelectedCube->iType) { case DUMMY_CENTER: { - // XZÆò¸é À§·Î ¿òÁ÷À̰Ô.. + // Move over the XZ plane... vPN.Set(0, 1, 0); __Vector3 vPR = vPV - vRayOrig; float fT = D3DXVec3Dot(&vPN, &vPR) / D3DXVec3Dot(&vPN, &vRayDir); @@ -214,7 +215,7 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { return TRUE; } } break; - case WM_RBUTTONDOWN: // Å¥ºê ¼±Åà Ãë¼Ò ¹× À̹ø µå·¡±×·Î ¿òÁ÷ÀÎ°Í µÇµ¹·Á ³õ±â + case WM_RBUTTONDOWN: // Cancel selection of cube and return what was moved by this drag { if (m_pSelectedCube) { __Vector3 vDiffPos = m_vPrevPos - m_vPos; @@ -232,7 +233,7 @@ void CVtxPosDummy::AddSelObj(CN3Transform * pObj) { } void CVtxPosDummy::TransDiff(__Vector3 * pvDiffPos, __Quaternion * pqDiffRot, - __Vector3 * pvDiffScale) // Â÷À̸¸Å­ ¼±ÅÃµÈ ¿ÀºêÁ§Æ®µéÀ» º¯Çü½ÃŲ´Ù. + __Vector3 * pvDiffScale) // Transform the selected objects by the difference. { int iSize = m_SelVtxArray.GetSize(); if (iSize <= 0) { diff --git a/src/tool/N3ME/VtxPosDummy.h b/src/tool/N3ME/VtxPosDummy.h index 06b76823..4e409ebe 100644 --- a/src/tool/N3ME/VtxPosDummy.h +++ b/src/tool/N3ME/VtxPosDummy.h @@ -15,24 +15,24 @@ class CVtxPosDummy : public CTransDummy { // Attributes public: protected: - CTypedPtrArray m_SelVtxArray; // ¼±ÅÃµÈ Á¡µé + CTypedPtrArray m_SelVtxArray; // selected points // Operations public: virtual void Tick(); virtual void Render(); virtual void Release(); - virtual void SetSelObj(CN3Transform * pObj); // ¼±ÅÃµÈ °´Ã¼ ¹Ù²Ù±â - virtual void AddSelObj(CN3Transform * pObj); // ¼±ÅÃµÈ °´Ã¼ Ãß°¡ - virtual BOOL MouseMsgFilter(LPMSG pMsg); // ¸¶¿ì½º ¸Þ¼¼Áö ó¸® + virtual void SetSelObj(CN3Transform * pObj); // change selected object + virtual void AddSelObj(CN3Transform * pObj); // add selected object + virtual BOOL MouseMsgFilter(LPMSG pMsg); // Process mouse messages - void SetSelVtx(__VertexXyzT1 * pVtx); // ¼±ÅÃµÈ Á¡ ¹Ù²Ù±â - void AddSelVtx(__VertexXyzT1 * pVtx); // ¼±ÅÃµÈ Á¡ Ãß°¡ + void SetSelVtx(__VertexXyzT1 * pVtx); // change selected point + void AddSelVtx(__VertexXyzT1 * pVtx); // add selected point void AddPos(__Vector3 vAddPos) { m_vPos += vAddPos; } void PosRotate(__Matrix44 vRotate, __Vector3 vCenterPos); protected: virtual void TransDiff(__Vector3 * pvDiffPos, __Quaternion * pqDiffRot, - __Vector3 * pvDiffScale); // Â÷À̸¸Å­ ¼±ÅÃµÈ ¿À¹ÇÁ§Æ®µéÀ» º¯Çü½ÃŲ´Ù. + __Vector3 * pvDiffScale); // Transform the selected objects by the difference. }; diff --git a/src/tool/N3ME/Wall.h b/src/tool/N3ME/Wall.h index 8ff555cb..7a5db1e4 100644 --- a/src/tool/N3ME/Wall.h +++ b/src/tool/N3ME/Wall.h @@ -16,8 +16,8 @@ class CWall : public CN3Base { void Load(HANDLE hFile); void Save(HANDLE hFile); int GetSize() { return m_Wall.size(); } - bool GetVertex(int idx, __Vector3 * pPos); // idx° Á¡ °¡Á®¿À±â.. - void AddVertex(__Vector3 Vertex); //path´õÇϱâ. + bool GetVertex(int idx, __Vector3 * pPos); // Get the idxth point... + void AddVertex(__Vector3 Vertex); // Add path. void DelPrevVertex(); CWall(); diff --git a/src/tool/N3ME/WallMgr.cpp b/src/tool/N3ME/WallMgr.cpp index acc68cf9..6158be37 100644 --- a/src/tool/N3ME/WallMgr.cpp +++ b/src/tool/N3ME/WallMgr.cpp @@ -23,24 +23,24 @@ static char THIS_FILE[] = __FILE__; ////////////////////////////////////////////////////////////////////// CWallMgr::CWallMgr() { - m_BaseCube[0].Set(0, 1, 0); // ¾ÕÂÊ LT - m_BaseCube[1].Set(1, 1, 0); // ¾ÕÂÊ RT - m_BaseCube[2].Set(0, 0, 0); // ¾ÕÂÊ LB - m_BaseCube[3].Set(1, 0, 0); // ¾ÕÂÊ RB - m_BaseCube[4].Set(0, 1, 1); // µÚÂÊ LT - m_BaseCube[5].Set(1, 1, 1); // µÚÂÊ RT - m_BaseCube[6].Set(0, 0, 1); // µÚÂÊ LB - m_BaseCube[7].Set(1, 0, 1); // µÚÂÊ RB - - m_pRefMapMng = NULL; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. - m_pWalls.clear(); // º®µé... + m_BaseCube[0].Set(0, 1, 0); // front LT + m_BaseCube[1].Set(1, 1, 0); // front RT + m_BaseCube[2].Set(0, 0, 0); // front LB + m_BaseCube[3].Set(1, 0, 0); // front RB + m_BaseCube[4].Set(0, 1, 1); // rear LT + m_BaseCube[5].Set(1, 1, 1); // rear RT + m_BaseCube[6].Set(0, 0, 1); // rear LB + m_BaseCube[7].Set(1, 0, 1); // rear RB + + m_pRefMapMng = NULL; // Terrain reference pointer.. + m_pWalls.clear(); // Walls... m_pDlg = new CDlgMakeWall; m_pDlg->Create(IDD_MAKE_WALL); m_pDlg->ShowWindow(FALSE); m_pDlg->m_pRefWallMgr = this; - m_bActive = false; // À̱â´ÉÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´ÂÁö...1:Ȱ¼ºÈ­, 0:ºñȰ¼ºÈ­.. + m_bActive = false; // Is this function activated? 1: Enabled, 0: Disabled.. m_pCurrWall = NULL; } @@ -217,7 +217,7 @@ void CWallMgr::Render() { D3DXMATRIX mtx; D3DXMatrixIdentity(&mtx); - hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // ¿ùµå Çà·Ä Àû¿ë.. + hr = s_lpD3DDev->SetTransform(D3DTS_WORLD, &mtx); // Apply world matrix... // set texture hr = s_lpD3DDev->SetTexture(0, NULL); @@ -237,7 +237,7 @@ void CWallMgr::Render() { hr = s_lpD3DDev->SetFVF(FVF_XYZCOLOR); - //ÀÌ¹Ì ¸¸µé¾îÁø ±æ ±×¸®±â... + // Draw an already created path... std::list::iterator itWall; std::list<__Vector3>::iterator itVertex; @@ -270,7 +270,7 @@ void CWallMgr::Render() { } } - //´ÙÀ̾ó·Î±× â¿¡¼­ ¼±ÅÃµÈ ±æ ±×¸®±â.. + // Draw the selected path in the dialog window... CWall * pSelWall = m_pDlg->m_pSelWall; if (pSelWall) { for (itVertex = pSelWall->m_Wall.begin(); itVertex != pSelWall->m_Wall.end(); itVertex++) { @@ -293,7 +293,7 @@ void CWallMgr::Render() { } } - //¸¸µé°í ÀÖ´Â ±æ & ¿µ¿ª ±×¸®±â.. + //Drawing the path & area being created... if (m_pCurrWall) { for (itVertex = m_pCurrWall->m_Wall.begin(); itVertex != m_pCurrWall->m_Wall.end(); itVertex++) { Vertex = (*itVertex); @@ -435,14 +435,14 @@ void CWallMgr::AddWall2Coll(CN3ShapeMgr * pShapeMgr) { __Vector3 PrevVertex(0, 0, 0), Vertex(0, 0, 0); __Vector3 v1, v2, v3; - // ÅØ½ºÆ®ÆÄÀÏ·Î ÇÔ »Ì¾Æº¸ÀÚ.. + // Let's extract it as a text file. FILE * stream = fopen("c:\\Wall_info.txt", "w"); fprintf(stream, "Walls = %d\n", m_pWalls.size()); for (itWall = m_pWalls.begin(); itWall != m_pWalls.end(); itWall++) { pWall = (*itWall); if (!pWall) { - fprintf(stream, "¾Æ½Î..º®µµ ¾ø´Âµ¥ ½ÃµµÇϳ×...¤Ñ.¤Ñ\n"); + fprintf(stream, "Ah... there's no wall, but they're trying... \n"); continue; } @@ -464,10 +464,10 @@ void CWallMgr::AddWall2Coll(CN3ShapeMgr * pShapeMgr) { v3.Set(Vertex.x, -5000.0f, Vertex.z); if (!pShapeMgr->AddCollisionTriangle(v1, v2, v3)) { - fprintf(stream, "º® ¸ø ³Ö¾ú¾î..¤Ñ.¤Ñ\n"); + fprintf(stream, "I couldn't put it in the wall..\n"); } if (!pShapeMgr->AddCollisionTriangle(v1, v3, v2)) { - fprintf(stream, "º® ¸ø ³Ö¾ú¾î..¤Ñ.¤Ñ\n"); + fprintf(stream, "I couldn't put it in the wall..\n"); } v1.Set(PrevVertex.x, 5000.0f, PrevVertex.z); @@ -475,10 +475,10 @@ void CWallMgr::AddWall2Coll(CN3ShapeMgr * pShapeMgr) { v3.Set(PrevVertex.x, -5000.0f, PrevVertex.z); if (!pShapeMgr->AddCollisionTriangle(v1, v2, v3)) { - fprintf(stream, "º® ¸ø ³Ö¾ú¾î..¤Ñ.¤Ñ\n"); + fprintf(stream, "I couldn't put it in the wall..\n"); } if (!pShapeMgr->AddCollisionTriangle(v1, v3, v2)) { - fprintf(stream, "º® ¸ø ³Ö¾ú¾î..¤Ñ.¤Ñ\n"); + fprintf(stream, "I couldn't put it in the wall..\n"); } PrevVertex = Vertex; diff --git a/src/tool/N3ME/WallMgr.h b/src/tool/N3ME/WallMgr.h index 6669da6e..0e93dd68 100644 --- a/src/tool/N3ME/WallMgr.h +++ b/src/tool/N3ME/WallMgr.h @@ -20,11 +20,11 @@ class CWallMgr : public CN3BaseFileAccess { __VertexXyzColor m_BoardVB[4]; public: - CMapMng * m_pRefMapMng; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. - std::list m_pWalls; // º®µé... + CMapMng * m_pRefMapMng; // Terrain reference pointer.. + std::list m_pWalls; // Walls CDlgMakeWall * m_pDlg; // path make dialog.. - bool m_bActive; // À̱â´ÉÀÌ È°¼ºÈ­ µÇ¾î ÀÖ´ÂÁö...1:Ȱ¼ºÈ­, 0:ºñȰ¼ºÈ­.. - CWall * m_pCurrWall; // ÇöÀç ¸¸µé°í ÀÖ´Â º®..or ¸¸µé·Á°í ÁغñÇÑ ¹öÆÛ.. + bool m_bActive; // Is this function activated? 1: Enabled, 0: Disabled.. + CWall * m_pCurrWall; // The wall that is currently being built.. or the buffer that is being prepared to be built.. protected: void MakeLine(__Vector3 sv, __Vector3 ev, D3DCOLOR color); diff --git a/src/tool/N3ME/WarpMgr.cpp b/src/tool/N3ME/WarpMgr.cpp index d23da094..b2dc04a1 100644 --- a/src/tool/N3ME/WarpMgr.cpp +++ b/src/tool/N3ME/WarpMgr.cpp @@ -22,7 +22,7 @@ static char THIS_FILE[] = __FILE__; ////////////////////////////////////////////////////////////////////// CWarpMgr::CWarpMgr() { - m_pRefMapMng = NULL; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + m_pRefMapMng = NULL; // Terrain reference pointer.. m_bActive = false; m_ListWarpInfo.clear(); diff --git a/src/tool/N3ME/WarpMgr.h b/src/tool/N3ME/WarpMgr.h index ff81fdd6..be8e5232 100644 --- a/src/tool/N3ME/WarpMgr.h +++ b/src/tool/N3ME/WarpMgr.h @@ -35,7 +35,7 @@ class CWarpMgr : public CN3BaseFileAccess { public: CDlgEditWarp * m_pDlg; - CMapMng * m_pRefMapMng; // ÁöÇü ÂüÁ¶ Æ÷ÀÎÅÍ.. + CMapMng * m_pRefMapMng; // Terrain reference pointer.. bool m_bActive; std::list m_ListWarpInfo;