void CPrefabDlg::OnBnClickedNewPrefab() { int nSelected = -1; POSITION p = m_listPrefabPackages.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabPackages.GetNextSelectedItem(p); } if (nSelected >= 0) { TCHAR szBuffer[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listPrefabPackages.GetItem(&lvi); m_selectedPackageName = szBuffer; } else { MessageBox("Please select a package!", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } m_prefabNameDlg = CNew(CPrefabNameDlg); m_prefabNameDlg->SetInitialData(m_selectedPackageName, "\n", CFalse); if (IDOK == m_prefabNameDlg->DoModal()) InsertItemToPrefabList(m_prefabNameDlg->GetNewName()); CDelete(m_prefabNameDlg); }
int PortsManager::GetPortFromList(int id) { TCHAR szBuffer[1024]; char ascii[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = id; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_list->GetItem(&lvi); wcstombs(ascii, szBuffer, 1024); return htons(atoi(ascii)); }
void CSetCurrentProject::OnOK() { int nSelected = -1; POSITION p = m_listAvailableProjects.GetFirstSelectedItemPosition(); while(p) { nSelected = m_listAvailableProjects.GetNextSelectedItem(p); } if( nSelected >= 0 ) { TCHAR szBuffer[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listAvailableProjects.GetItem(&lvi); for( CUInt i = 0; i < g_projects.size(); i++ ) { if(g_projects[i]->m_isActive) { if( Cmp( szBuffer, g_projects[i]->m_name ) ) { return; // no need to switch projects } } } //switch projects //close curren open VScene if(!ex_pVandaEngine1Dlg->OnMenuClickedNew(CTrue)) return; //fist of all, mark all as inactive for( CUInt i = 0; i < g_projects.size(); i++ ) { g_projects[i]->m_isActive = CFalse; } //then find the selected project and mark it as active for( CUInt i = 0; i < g_projects.size(); i++ ) { if( Cmp( szBuffer, g_projects[i]->m_name ) ) { g_projects[i]->m_isActive = CTrue; break; } } //change current directory Cpy( g_currentProjectPath, g_projectsPath ); Append( g_currentProjectPath, szBuffer ); Append( g_currentProjectPath, "/" ); //clear VScene names g_VSceneNamesOfCurrentProject.clear(); //then fill it with the VScenes of the selected project for( CUInt i = 0; i < g_projects.size(); i++ ) { if( g_projects[i]->m_isActive ) { for( CUInt j = 0; j < g_projects[i]->m_sceneNames.size(); j++ ) { g_VSceneNamesOfCurrentProject.push_back( g_projects[i]->m_sceneNames[j].c_str() ); } } } CChar m_currentVSceneNameWithoutDot[MAX_NAME_SIZE]; if (Cmp(g_currentVSceneName, "\n")) Cpy(m_currentVSceneNameWithoutDot, "Untitled"); else { Cpy(m_currentVSceneNameWithoutDot, g_currentVSceneName); GetWithoutDot(m_currentVSceneNameWithoutDot); } CChar temp[256]; sprintf(temp, "%s%s%s%s%s", "Vanda Engine 1.4 (", szBuffer, " - ", m_currentVSceneNameWithoutDot, ")"); ex_pVandaEngine1Dlg->SetWindowTextA(temp); //save the changes to projects.dat FILE *ProjectsFilePtr; CChar DATPath[MAX_NAME_SIZE]; sprintf( DATPath, "%s%s", g_projectsPath, "projects.dat" ); DeleteFile( DATPath ); ProjectsFilePtr = fopen( DATPath, "wb" ); if( !ProjectsFilePtr ) { MessageBox( "Couldn't open 'assets/Projects/projects.dat' to save data!", "Vanda Engine Error", MB_OK | MB_ICONERROR); //return; } CInt numProjects = (CInt)g_projects.size(); fwrite(&numProjects, sizeof(CInt), 1, ProjectsFilePtr); fclose(ProjectsFilePtr); for (CInt i = 0; i < numProjects; i++) { CChar filePath[MAX_URI_SIZE]; sprintf(filePath, "%s%s%s%s", g_projectsPath, "PRJ/", g_projects[i]->m_name, ".prj"); ProjectsFilePtr = fopen(filePath, "wb"); fwrite(g_projects[i]->m_name, sizeof(CChar), MAX_NAME_SIZE, ProjectsFilePtr); CInt numScenes = (CInt)g_projects[i]->m_sceneNames.size(); fwrite(&numScenes, sizeof(CInt), 1, ProjectsFilePtr); for (CInt j = 0; j < numScenes; j++) { CChar vsceneName[MAX_NAME_SIZE]; Cpy(vsceneName, g_projects[i]->m_sceneNames[j].c_str()); fwrite(vsceneName, sizeof(CChar), MAX_NAME_SIZE, ProjectsFilePtr); } fwrite(&g_projects[i]->m_isActive, sizeof(CBool), 1, ProjectsFilePtr); fclose(ProjectsFilePtr); } CDialog::OnOK(); } else { MessageBoxA( "Please select a project" ); } }
void CPrefabDlg::OnBnClickedDelete() { int nSelected = -1; POSITION p = m_listPrefabPackages.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabPackages.GetNextSelectedItem(p); } TCHAR szBuffer1[1024]; //package TCHAR szBuffer2[1024]; //prefab if (nSelected >= 0) { DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer1; lvi.cchTextMax = cchBuf; m_listPrefabPackages.GetItem(&lvi); m_selectedPackageName = szBuffer1; } else { MessageBox("Please select a package!", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } nSelected = -1; p = m_listPrefabs.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabs.GetNextSelectedItem(p); } if (nSelected >= 0) { CInt packageIndex = -1; for (CUInt i = 0; i < g_prefabPackagesAndNames.size(); i++) { if (Cmp(g_prefabPackagesAndNames[i].front().c_str(), m_selectedPackageName.c_str())) { packageIndex = i; break; } } DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT | LVIF_IMAGE; lvi.pszText = szBuffer2; lvi.cchTextMax = cchBuf; m_listPrefabs.GetItem(&lvi); m_selectedPrefabName = szBuffer2; CChar currentPackageAndPrefabName[MAX_NAME_SIZE]; sprintf(currentPackageAndPrefabName, "%s%s%s", szBuffer1, "_", szBuffer2); if (Cmp(g_currentPackageAndPrefabName, currentPackageAndPrefabName)) { MessageBox("This prefab is already open. Please close current prefab scene and try again.", "Vanda Engine Error", MB_OK | MB_ICONERROR); return; } for (CUInt i = 0; i < g_projects.size(); i++) { for (CUInt j = 0; j < g_projects[i]->m_sceneNames.size(); j++) { //find pkg file CChar pkgPath[MAX_NAME_SIZE]; CChar sceneWithoutDot[MAX_NAME_SIZE]; Cpy(sceneWithoutDot, g_projects[i]->m_sceneNames[j].c_str()); GetWithoutDot(sceneWithoutDot); sprintf(pkgPath, "%s%s%s%s%s", g_projectsPath, g_projects[i]->m_name, "/", sceneWithoutDot, "/packages.pkg"); //copy package names FILE *PackageFilePtr; PackageFilePtr = fopen(pkgPath, "rb"); if (!PackageFilePtr) { CChar temp[MAX_NAME_SIZE]; sprintf(temp, "%s%s%s", "Couldn't open the file '", pkgPath, "' to save data"); MessageBox(temp, "Vanda Engine Error", MB_OK); ReleaseCapture(); PrintInfo("Delete failed.", COLOR_RED); return; } CUInt size = -1; fread(&size, sizeof(CUInt), 1, PackageFilePtr); for (CUInt k = 0; k < size; k++) { CChar name[MAX_NAME_SIZE]; CChar package_name[MAX_NAME_SIZE]; CChar prefab_name[MAX_NAME_SIZE]; //write prefab data fread(name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(package_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(prefab_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); if (Cmp(prefab_name, m_selectedPrefabName.c_str())) { CChar preafbName[MAX_NAME_SIZE]; sprintf(preafbName, "This prefab is used by %s/%s.\nYou can not delete this prefab.", g_projects[i]->m_name, g_projects[i]->m_sceneNames[j].c_str()); MessageBox(preafbName, "Vanda Engine Error", MB_OK | MB_ICONERROR); fclose(PackageFilePtr); return; } } fclose(PackageFilePtr); } } if (MessageBox("Are you sure you want to delete this prefab?", "Warning", MB_YESNO) == IDYES) { //remove prefab directory CChar PackagePath[MAX_NAME_SIZE]; HRESULT doc_result_package = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, PackagePath); if (doc_result_package != S_OK) { PrintInfo("\nCouldn't get the documents folder to write data", COLOR_RED); return; } else { Append(PackagePath, "/Vanda/Packages/"); } CChar path[MAX_NAME_SIZE]; sprintf(path, "%s%s%s%s", PackagePath, szBuffer1, "/", szBuffer2); RemoveAllFilesAndFoldersInDirectory(path); for (CUInt i = 0; i < g_prefabPackagesAndNames[packageIndex].size(); i++) { if (i == 0) continue; if (Cmp(g_prefabPackagesAndNames[packageIndex][i].c_str(), m_selectedPrefabName.c_str())) { g_prefabPackagesAndNames[packageIndex].erase(g_prefabPackagesAndNames[packageIndex].begin() + i); } } m_prefabIndex = -1; //delete all items of prefab list for (int nItem = m_listPrefabs.GetItemCount() - 1; nItem >= 0; nItem--) { m_listPrefabs.DeleteItem(nItem); } for (CUInt i = 0; i < g_prefabPackagesAndNames[packageIndex].size(); i++) { if (i == 0) continue; CChar str[MAX_NAME_SIZE]; Cpy(str, g_prefabPackagesAndNames[packageIndex][i].c_str()); InsertItemToPrefabList(str); } m_listPrefabs.UpdateWindow(); } } else { MessageBox("Please select a prefab!", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } }
void CPrefabDlg::OnLvnItemchangedListPrefabsProjects(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); //remove the current contents of the prefab list for (int nItem = m_listPrefabs.GetItemCount() - 1; nItem >= 0; nItem--) { m_listPrefabs.DeleteItem(nItem); } m_listPrefabs.UpdateWindow(); m_prefabIndex = -1; //reset prefab index int nSelected = -1; POSITION p = m_listPrefabPackages.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabPackages.GetNextSelectedItem(p); } if (nSelected >= 0) { TCHAR szBuffer[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listPrefabPackages.GetItem(&lvi); m_selectedPackageName = szBuffer; if (g_editorMode == eMODE_PREFAB) { //if (Cmp(szBuffer, "Vanda_Basics")) //{ // GetMenu()->EnableMenuItem(ID_PREFAB_NEW, MF_DISABLED | MF_GRAYED); // GetMenu()->EnableMenuItem(ID_PREFAB_OPENSELECTED, MF_DISABLED | MF_GRAYED); // GetMenu()->EnableMenuItem(ID_PREFAB_RENAMESELECTED, MF_DISABLED | MF_GRAYED); // GetMenu()->EnableMenuItem(ID_PREFAB_DELETESELECTED, MF_DISABLED | MF_GRAYED); //} //else //{ // GetMenu()->EnableMenuItem(ID_PREFAB_NEW, MF_ENABLED); // GetMenu()->EnableMenuItem(ID_PREFAB_OPENSELECTED, MF_ENABLED); // GetMenu()->EnableMenuItem(ID_PREFAB_RENAMESELECTED, MF_ENABLED); // GetMenu()->EnableMenuItem(ID_PREFAB_DELETESELECTED, MF_ENABLED); //} } } else { return; } CInt index = -1; for (CInt i = 0; i < (CInt)g_prefabPackagesAndNames.size(); i++) { if (Cmp(g_prefabPackagesAndNames[i].front().c_str(), m_selectedPackageName.c_str())) { index = i; break; } } if (index != -1) { for (CUInt i = 0; i < g_prefabPackagesAndNames[index].size(); i++) { if (i == 0) continue; CChar str[MAX_NAME_SIZE]; Cpy(str, g_prefabPackagesAndNames[index][i].c_str()); InsertItemToPrefabList(str); } } *pResult = 0; }
void CPrefabDlg::OnBnClickedDeletePackage() { int nSelected = -1; POSITION p = m_listPrefabPackages.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabPackages.GetNextSelectedItem(p); } if (nSelected >= 0) { TCHAR szBuffer[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listPrefabPackages.GetItem(&lvi); m_selectedPackageName = szBuffer; if (Cmp(szBuffer, "Vanda_Basics")) { MessageBox("You cannot delete this package", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } for (CUInt i = 0; i < g_projects.size(); i++) { for (CUInt j = 0; j < g_projects[i]->m_sceneNames.size(); j++) { //find pkg file CChar pkgPath[MAX_NAME_SIZE]; CChar sceneWithoutDot[MAX_NAME_SIZE]; Cpy(sceneWithoutDot, g_projects[i]->m_sceneNames[j].c_str()); GetWithoutDot(sceneWithoutDot); sprintf(pkgPath, "%s%s%s%s%s", g_projectsPath, g_projects[i]->m_name, "/", sceneWithoutDot, "/packages.pkg"); //copy package names FILE *PackageFilePtr; PackageFilePtr = fopen(pkgPath, "rb"); if (!PackageFilePtr) { CChar temp[MAX_NAME_SIZE]; sprintf(temp, "%s%s%s", "Couldn't open the file '", pkgPath, "' to save data"); MessageBox(temp, "Vanda Engine Error", MB_OK); ReleaseCapture(); PrintInfo("Delete failed.", COLOR_RED); return; } CUInt size = -1; fread(&size, sizeof(CUInt), 1, PackageFilePtr); for (CUInt k = 0; k < size; k++) { CChar name[MAX_NAME_SIZE]; CChar package_name[MAX_NAME_SIZE]; CChar prefab_name[MAX_NAME_SIZE]; //write prefab data fread(name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(package_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(prefab_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); if (Cmp(package_name, m_selectedPackageName.c_str())) { CChar packageName[MAX_NAME_SIZE]; sprintf(packageName, "This package is used by %s/%s.\nYou can not delete this package.", g_projects[i]->m_name, g_projects[i]->m_sceneNames[j].c_str()); MessageBox(packageName, "Vanda Engine Error", MB_OK | MB_ICONERROR); fclose(PackageFilePtr); return; } } fclose(PackageFilePtr); } } CChar currentPackageName[MAX_NAME_SIZE]; sprintf(currentPackageName, "%s", szBuffer); if (Cmp(g_currentPackageName, currentPackageName)) { MessageBox("current open prefab belongs to selected package. Please close current prefab scene and try again.", "Vanda Engine Error", MB_OK | MB_ICONERROR); return; } if (MessageBox("Are you sure you want to delete this package?", "Warning", MB_YESNO) == IDYES) { CChar PackagePath[MAX_NAME_SIZE]; HRESULT doc_result_package = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, PackagePath); if (doc_result_package != S_OK) { PrintInfo("\nCouldn't get the documents folder to write data", COLOR_RED); return; } else { Append(PackagePath, "/Vanda/Packages/"); } CChar path[MAX_NAME_SIZE]; sprintf(path, "%s%s", PackagePath, szBuffer); RemoveAllFilesAndFoldersInDirectory(path); //remove pkg file in PKG folder CChar PKG_old[MAX_URI_SIZE]; sprintf(PKG_old, "%s%s%s%s", PackagePath, "PKG/", szBuffer, ".pkg"); DeleteFile(PKG_old); //delete items from std::vector for (CUInt i = 0; i < g_prefabPackagesAndNames.size(); i++) { if (Cmp(g_prefabPackagesAndNames[i].front().c_str(), m_selectedPackageName.c_str())) { g_prefabPackagesAndNames[i].clear(); g_prefabPackagesAndNames.erase(g_prefabPackagesAndNames.begin() + i); break; } } m_listPrefabPackages.DeleteItem(nSelected); m_listPrefabPackages.UpdateWindow(); m_packageIndex--; } } else { MessageBox("Please select an item!", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } }
void CPrefabDlg::OnBnClickedRenamePackage() { int nSelected = -1; TCHAR szBuffer[1024]; POSITION p = m_listPrefabPackages.GetFirstSelectedItemPosition(); while (p) { nSelected = m_listPrefabPackages.GetNextSelectedItem(p); } if (nSelected >= 0) { DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listPrefabPackages.GetItem(&lvi); m_selectedPackageName = szBuffer; if (Cmp(szBuffer, "Vanda_Basics")) { MessageBox("You cannot rename this package", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } } else { MessageBox("Please select an item!", "Vanda Engine Error", MB_OK | MB_ICONINFORMATION); return; } CChar currentPackageName[MAX_NAME_SIZE]; sprintf(currentPackageName, "%s", szBuffer); if (Cmp(g_currentPackageName, currentPackageName)) { MessageBox("current open prefab belongs to selected package. Please close current prefab scene and try again.", "Vanda Engine Error", MB_OK | MB_ICONERROR); return; } //then fill it with the VScenes of the selected project for (CUInt i = 0; i < g_projects.size(); i++) { for (CUInt j = 0; j < g_projects[i]->m_sceneNames.size(); j++) { //find pkg file CChar pkgPath[MAX_NAME_SIZE]; CChar sceneWithoutDot[MAX_NAME_SIZE]; Cpy(sceneWithoutDot, g_projects[i]->m_sceneNames[j].c_str()); GetWithoutDot(sceneWithoutDot); sprintf(pkgPath, "%s%s%s%s%s", g_projectsPath, g_projects[i]->m_name, "/", sceneWithoutDot, "/packages.pkg"); //copy package names FILE *PackageFilePtr; PackageFilePtr = fopen(pkgPath, "rb"); if (!PackageFilePtr) { CChar temp[MAX_NAME_SIZE]; sprintf(temp, "%s%s%s", "Couldn't open the file '", pkgPath, "' to save data"); MessageBox(temp, "Vanda Engine Error", MB_OK); ReleaseCapture(); PrintInfo("Rename failed.", COLOR_RED); return; } CUInt size = -1; fread(&size, sizeof(CUInt), 1, PackageFilePtr); for (CUInt k = 0; k < size; k++) { CChar name[MAX_NAME_SIZE]; CChar package_name[MAX_NAME_SIZE]; CChar prefab_name[MAX_NAME_SIZE]; //write prefab data fread(name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(package_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); fread(prefab_name, sizeof(CChar), MAX_NAME_SIZE, PackageFilePtr); if (Cmp(package_name, m_selectedPackageName.c_str())) { CChar packageName[MAX_NAME_SIZE]; sprintf(packageName, "This package is used by %s/%s.\nYou can not rename this package.", g_projects[i]->m_name, g_projects[i]->m_sceneNames[j].c_str()); MessageBox(packageName, "Vanda Engine Error", MB_OK | MB_ICONERROR); fclose(PackageFilePtr); return; } } fclose(PackageFilePtr); } } m_prefabNameDlg = CNew(CPrefabNameDlg); m_prefabNameDlg->SetInitialData(m_selectedPackageName, "\n", CTrue, CTrue); if (IDOK == m_prefabNameDlg->DoModal()) { m_listPrefabPackages.SetItemText(nSelected, 0, m_prefabNameDlg->GetNewName()); CChar PackagePath[MAX_NAME_SIZE]; HRESULT doc_result_package = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, PackagePath); if (doc_result_package != S_OK) { PrintInfo("\nCouldn't get the documents folder to write data", COLOR_RED); return; } else { Append(PackagePath, "/Vanda/Packages/"); } CChar old_path[MAX_NAME_SIZE]; CChar new_path[MAX_NAME_SIZE]; sprintf(old_path, "%s%s", PackagePath, szBuffer); sprintf(new_path, "%s%s", PackagePath, m_prefabNameDlg->GetNewName()); rename(old_path, new_path); //rename vpf files for (CUInt i = 0; i < g_prefabPackagesAndNames.size(); i++) { if (Cmp(g_prefabPackagesAndNames[i].front().c_str(), m_prefabNameDlg->GetNewName())) { for (CUInt j = 0; j < g_prefabPackagesAndNames[i].size(); j++) { if (j == 0)continue; CChar vpfOldPath[MAX_NAME_SIZE]; sprintf(vpfOldPath, "%s%s%s%s%s%s%s%s%s", PackagePath, g_prefabPackagesAndNames[i].front().c_str(), "/", g_prefabPackagesAndNames[i][j].c_str(), "/", szBuffer, "_", g_prefabPackagesAndNames[i][j].c_str(), ".vpf"); CChar vpfNewPath[MAX_NAME_SIZE]; sprintf(vpfNewPath, "%s%s%s%s%s%s%s%s%s", PackagePath, g_prefabPackagesAndNames[i].front().c_str(), "/", g_prefabPackagesAndNames[i][j].c_str(), "/", g_prefabPackagesAndNames[i].front().c_str(), "_", g_prefabPackagesAndNames[i][j].c_str(), ".vpf"); rename(vpfOldPath, vpfNewPath); } break; } } //rename the contents of PKG folder as well CChar PKG_old[MAX_URI_SIZE]; CChar PKG_new[MAX_URI_SIZE]; sprintf(PKG_old, "%s%s%s%s", PackagePath, "PKG/", szBuffer, ".pkg"); sprintf(PKG_new, "%s%s%s%s", PackagePath, "PKG/", m_prefabNameDlg->GetNewName(), ".pkg"); rename(PKG_old, PKG_new); } CDelete(m_prefabNameDlg); }
void CWaterAttachment::OnBnClickedAttach() { CWater* tempWater; int nSelected = -1; POSITION p = m_listBoxWaterObjects.GetFirstSelectedItemPosition(); while(p) { nSelected = m_listBoxWaterObjects.GetNextSelectedItem(p); } if( nSelected >= 0 ) { TCHAR szBuffer[1024]; DWORD cchBuf(1024); LVITEM lvi; lvi.iItem = nSelected; lvi.iSubItem = 0; lvi.mask = LVIF_TEXT; lvi.pszText = szBuffer; lvi.cchTextMax = cchBuf; m_listBoxWaterObjects.GetItem(&lvi); for( CUInt i = 0; i < g_engineWaters.size(); i++ ) { if( Cmp( g_engineWaters[i]->GetName(), szBuffer ) ) { tempWater = g_engineWaters[i]; } } CBool foundTarget = CFalse; for( CUInt i = 0 ; i < g_scene.size(); i++ ) { for( CUInt j = 0; j < g_scene[i]->m_instanceGeometries.size(); j++ ) { if( g_scene[i]->m_instanceGeometries[j]->m_nameIndex == g_selectedName ) { //have we attached this object before? for( CUInt k = 0; k < tempWater->m_geometry.size(); k++ ) { if( Cmp( tempWater->m_geometry[k]->GetName(), g_scene[i]->m_instanceGeometries[j]->m_abstractGeometry->GetName() ) ) { foundTarget = CTrue; break; } } if( foundTarget ) { MessageBox( "This object has been attached to the selected water before!", "VandaEngine Error", MB_OK | MB_ICONINFORMATION); } else { tempWater->SetGeometry( g_scene[i]->m_geometries[j] ); PrintInfo( "\nObject successfully attached to the water " ); } } } } } else MessageBox( "Please select a water name!", "VandaEngine Error", MB_OK | MB_ICONERROR); g_multipleView->RenderWindow(); }