From f37c0ee9e6777be65c559d6034d45147191fc0fe Mon Sep 17 00:00:00 2001 From: NurgazievichR Date: Tue, 18 Mar 2025 16:49:46 +0600 Subject: [PATCH] loadfromfile bonesystem zip --- BoneAnimatedModel.cpp | 20 ++++++++++++++++---- BoneAnimatedModel.h | 6 +++--- TextModel.cpp | 23 +++++++++++++++++++---- TextModel.h | 2 +- TextureManager.cpp | 14 ++------------ 5 files changed, 41 insertions(+), 24 deletions(-) diff --git a/BoneAnimatedModel.cpp b/BoneAnimatedModel.cpp index 75f0260..5e51a46 100644 --- a/BoneAnimatedModel.cpp +++ b/BoneAnimatedModel.cpp @@ -21,11 +21,23 @@ namespace ZL } - void BoneSystem::LoadFromFile(const std::string& fileName) + void BoneSystem::LoadFromFile(const std::string& fileName, const std::string& ZIPFileName) { - - - std::ifstream f(fileName); + std::ifstream filestream; + std::istringstream zipStream; + + if (!ZIPFileName.empty()) + { + std::vector fileData = readFileFromZIP(fileName, ZIPFileName); + std::string fileContents(fileData.begin(), fileData.end()); + zipStream.str(fileContents); + } + else + { + filestream.open(fileName); + } + + std::istream& f = (!ZIPFileName.empty()) ? static_cast(zipStream) : static_cast(filestream); //Skip first 5 lines std::string tempLine; diff --git a/BoneAnimatedModel.h b/BoneAnimatedModel.h index 1c1ab37..e643d2a 100644 --- a/BoneAnimatedModel.h +++ b/BoneAnimatedModel.h @@ -12,8 +12,8 @@ namespace ZL Vector3f boneStartWorld; float boneLength; Matrix4f boneMatrixWorld; - // boneVector = boneLength * (0, 1, 0) - // Then multiply by boneMatrixWorld + // boneVector = boneLength * (0, 1, 0) � ���� �������� + // Then multiply by boneMatrixWorld � �� �������� �������� ����� int parent; std::vector children; @@ -49,7 +49,7 @@ namespace ZL std::vector animations; - void LoadFromFile(const std::string& fileName); + void LoadFromFile(const std::string& fileName, const std::string& ZIPFileName = ""); void Interpolate(int frame); }; diff --git a/TextModel.cpp b/TextModel.cpp index bbb3979..19589b8 100644 --- a/TextModel.cpp +++ b/TextModel.cpp @@ -8,14 +8,29 @@ namespace ZL { - VertexDataStruct LoadFromTextFile(const std::string& fileName) + VertexDataStruct LoadFromTextFile(const std::string& fileName, const std::string& ZIPFileName) { VertexDataStruct result; - - std::ifstream f(fileName); + std::ifstream filestream; + std::istringstream zipStream; + + if (!ZIPFileName.empty()) + { + std::vector fileData = readFileFromZIP(fileName, ZIPFileName); + std::string fileContents(fileData.begin(), fileData.end()); + zipStream.str(fileContents); + } + else + { + filestream.open(fileName); + } + + // Создаем ссылку f на нужный поток – после этого код ниже остается без изменений + std::istream& f = (!ZIPFileName.empty()) ? static_cast(zipStream) : static_cast(filestream); + //Skip first 5 lines - std::string tempLine; + std::string tempLine; std::getline(f, tempLine); diff --git a/TextModel.h b/TextModel.h index c031ec6..e5b7635 100644 --- a/TextModel.h +++ b/TextModel.h @@ -7,7 +7,7 @@ namespace ZL { - VertexDataStruct LoadFromTextFile(const std::string& fileName); + VertexDataStruct LoadFromTextFile(const std::string& fileName, const std::string& ZIPFileName = ""); diff --git a/TextureManager.cpp b/TextureManager.cpp index faa0927..bab21b8 100755 --- a/TextureManager.cpp +++ b/TextureManager.cpp @@ -75,12 +75,7 @@ namespace ZL TextureDataStruct texData; std::vector fileArr; - if (!ZIPFileName.empty()) { - fileArr = readFileFromZIP(fullFileName, ZIPFileName); - } - else { - fileArr = readFile(fullFileName); - } + fileArr = !ZIPFileName.empty() ? readFileFromZIP(fullFileName, ZIPFileName) : readFile(fullFileName); size_t fileSize = fileArr.size(); @@ -129,12 +124,7 @@ namespace ZL TextureDataStruct texData; std::vector fileArr; - if (!ZIPFileName.empty()) { - fileArr = readFileFromZIP(fullFileName, ZIPFileName); - } - else { - fileArr = readFile(fullFileName); - } + fileArr = !ZIPFileName.empty() ? readFileFromZIP(fullFileName, ZIPFileName) : readFile(fullFileName); size_t fileSize = fileArr.size();