uint32 FileSystem::DeleteDirectoryFiles(const String & path, bool isRecursive) { uint32 fileCount = 0; FileList * fileList = new FileList(path); for(int i = 0; i < fileList->GetCount(); ++i) { if(fileList->IsDirectory(i)) { if(!fileList->IsNavigationDirectory(i)) { if(isRecursive) { fileCount += DeleteDirectoryFiles(fileList->GetPathname(i), isRecursive); } } } else { bool success = DeleteFile(fileList->GetPathname(i)); if(success)fileCount++; } } SafeRelease(fileList); return fileCount; }
void Replay::StartRecord(const FilePath & dirName) { DVASSERT(!isRecord); DVASSERT(!isPlayback); isRecord = true; pauseReplay = false; FileSystem::Instance()->DeleteDirectoryFiles(dirName, false); FileSystem::Instance()->CreateDirectory(dirName); FileList * list = new FileList("~doc:/"); int32 listSize = list->GetCount(); for(int32 i = 0; i < listSize; ++i) { String fileName = list->GetFilename(i); if(!list->IsNavigationDirectory(i) && !list->IsDirectory(i) && fileName != "LastReplay.rep") { FileSystem::Instance()->CopyFile(list->GetPathname(i), dirName + fileName); } } list->Release(); FilePath filePath = dirName + "LastReplay.rep"; file = File::Create(filePath, File::CREATE | File::WRITE); Random::Instance()->Seed(); }
bool FileSystem::DeleteDirectory(const String & path, bool isRecursive) { FileList * fileList = new FileList(path); for(int i = 0; i < fileList->GetCount(); ++i) { if(fileList->IsDirectory(i)) { if(!fileList->IsNavigationDirectory(i)) { if(isRecursive) { // Logger::Debug("- try to delete directory: %s / %s", fileList->GetPathname(i).c_str(), fileList->GetFilename(i).c_str()); bool success = DeleteDirectory(fileList->GetPathname(i), isRecursive); // Logger::Debug("- delete directory: %s / %s- %d", fileList->GetPathname(i).c_str(), fileList->GetFilename(i).c_str(), success ? (1): (0)); if (!success)return false; } } } else { bool success = DeleteFile(fileList->GetPathname(i)); // Logger::Debug("- delete file: %s / %s- %d", fileList->GetPathname(i).c_str(), fileList->GetFilename(i).c_str(), success ? (1): (0)); if(!success)return false; } } SafeRelease(fileList); #ifdef __DAVAENGINE_WIN32__ String sysPath = SystemPathForFrameworkPath(path); int32 chmodres = _chmod(sysPath.c_str(), _S_IWRITE); // change read-only file mode int32 res = _rmdir(sysPath.c_str()); return (res == 0); /*int32 res = ::RemoveDirectoryA(path.c_str()); if (res == 0) { Logger::Warning("Failed to delete directory: %s error: 0x%x", path.c_str(), GetLastError()); } return (res != 0);*/ #elif defined(__DAVAENGINE_MACOS__) || defined(__DAVAENGINE_IPHONE__) || defined(__DAVAENGINE_ANDROID__) int32 res = rmdir(SystemPathForFrameworkPath(path).c_str()); return (res == 0); #endif //PLATFORMS }
void LightmapsPacker::ParseSpriteDescriptors() { FileList * fileList = new FileList(outputDir); char8 buf[512]; uint32 readSize; int32 itemsCount = fileList->GetCount(); for(int32 i = 0; i < itemsCount; ++i) { const FilePath & filePath = fileList->GetPathname(i); if(fileList->IsDirectory(i) || !filePath.IsEqualToExtension(".txt")) { continue; } LightmapAtlasingData data; data.meshInstanceName = filePath.GetBasename(); File * file = File::Create(filePath, File::OPEN | File::READ); file->ReadLine(buf, sizeof(buf)); //textures count readSize = file->ReadLine(buf, sizeof(buf)); //texture name FilePath originalTextureName = outputDir + String(buf, readSize); data.textureName = originalTextureName; file->ReadLine(buf, sizeof(buf)); //image size file->ReadLine(buf, sizeof(buf)); //frames count file->ReadLine(buf, sizeof(buf)); //frame rect int32 x, y, dx, dy, unused0, unused1, unused2; sscanf(buf, "%d %d %d %d %d %d %d", &x, &y, &dx, &dy, &unused0, &unused1, &unused2); dx++;//cause TexturePacker::ReduceRectToOriginalSize removed one pixel by default dy++; Vector2 textureSize = GetTextureSize(originalTextureName); data.uvOffset = Vector2((float32)x/textureSize.x, (float32)y/textureSize.y); data.uvScale = Vector2((float32)dx/textureSize.x, (float32)dy/textureSize.y); file->Release(); atlasingData.push_back(data); FileSystem::Instance()->DeleteFile(filePath); } fileList->Release(); }
void UIFileTree::RecursiveTreeWalk(const String & path, UITreeItemInfo * current) { FileList * fileList = new FileList(path); // Find flags and setup them for (int fi = 0; fi < fileList->GetCount(); ++fi) { bool addElement = true; if (!fileList->IsDirectory(fi)) { size_t extsSize = extensions.size(); if (extsSize > 0) { addElement = false; String ext = FileSystem::GetExtension(fileList->GetFilename(fi)); for (size_t ei = 0; ei < extsSize; ++ei) if (extensions[ei] == ext) { addElement = true; break; } } } if (!isFolderNavigationEnabled) if (fileList->IsNavigationDirectory(fi)) addElement = false; if (fileList->GetFilename(fi) == ".") addElement = false; if (addElement) { UITreeItemInfo *child = new UITreeItemInfo(this); child->Set(current->GetLevel() + 1, fileList->GetFilename(fi), fileList->GetPathname(fi), fileList->IsDirectory(fi)); current->AddChild(child); // if (fileList->IsDirectory(fi) ) // { // if (!fileList->IsNavigationDirectory(fi)) // { // RecursiveTreeWalk(path + String("/") + fileList->GetFilename(fi), child); // } // } } } SafeRelease(fileList); }
void LightmapsPacker::CreateDescriptors() { FileList * fileList = new FileList(outputDir); int32 itemsCount = fileList->GetCount(); for(int32 i = 0; i < itemsCount; ++i) { const FilePath & filePath = fileList->GetPathname(i); if(fileList->IsDirectory(i) || !filePath.IsEqualToExtension(".png")) { continue; } TextureDescriptor descriptor; descriptor.Save(TextureDescriptor::GetDescriptorPathname(filePath)); } fileList->Release(); }
void TextureDescriptorUtils::CopyCompressionParamsForFolder(const FilePath &folderPathname) { FileList * fileList = new FileList(folderPathname); for (int32 fi = 0; fi < fileList->GetCount(); ++fi) { const FilePath &pathname = fileList->GetPathname(fi); if(IsCorrectDirectory(fileList, fi)) { CopyCompressionParamsForFolder(pathname); } else if(IsDescriptorPathname(pathname)) { CopyCompressionParams(pathname); } } SafeRelease(fileList); }
void TextureDescriptorUtils::SetCompressionParamsForFolder( const FilePath &folderPathname, const DAVA::Map<DAVA::eGPUFamily, DAVA::TextureDescriptor::Compression> & compressionParams, bool convertionEnabled, bool force ) { FileList * fileList = new FileList(folderPathname); if(!fileList) return; for (int32 fi = 0; fi < fileList->GetCount(); ++fi) { const FilePath &pathname = fileList->GetPathname(fi); if(IsCorrectDirectory(fileList, fi)) { SetCompressionParamsForFolder(pathname, compressionParams, convertionEnabled, force); } else if(IsDescriptorPathname(pathname)) { SetCompressionParams(pathname, compressionParams, convertionEnabled, force); } } SafeRelease(fileList); }
void TextureDescriptorUtils::CreateDescriptorsForFolder(const FilePath &folderPathname) { FileList * fileList = new FileList(folderPathname); if(!fileList) return; for (int32 fi = 0; fi < fileList->GetCount(); ++fi) { const FilePath &pathname = fileList->GetPathname(fi); if(IsCorrectDirectory(fileList, fi)) { CreateDescriptorsForFolder(pathname); } else if(pathname.IsEqualToExtension(".png")) { CreateDescriptorIfNeed(pathname); } } SafeRelease(fileList); }