diff --git a/dCommon/Lxfml.cpp b/dCommon/Lxfml.cpp index 423324ad..7187cd8f 100644 --- a/dCommon/Lxfml.cpp +++ b/dCommon/Lxfml.cpp @@ -244,17 +244,6 @@ std::vector Lxfml::Split(const std::string_view data, const NiPoi std::unordered_set usedBrickRefs; std::unordered_set usedRigidSystems; - auto splitListAttr = [](const char* attr) { - std::vector out; - if (!attr) return out; - std::stringstream ss(attr); - std::string token; - while (std::getline(ss, token, ',')) { - if (!token.empty()) out.push_back(token); - } - return out; - }; - // Helper to create output document from sets of brick refs and rigidsystem pointers auto makeOutput = [&](const std::unordered_set& bricksToInclude, const std::vector& rigidSystemsToInclude, const std::vector& groupsToInclude = {}) { tinyxml2::XMLDocument outDoc; @@ -307,7 +296,7 @@ std::vector Lxfml::Split(const std::string_view data, const NiPoi if (!g) return; const char* partAttr = g->Attribute("partRefs"); if (partAttr) { - for (auto& tok : splitListAttr(partAttr)) partRefs.insert(tok); + for (auto& tok : GeneralUtils::SplitString(partAttr, ',')) partRefs.insert(tok); } for (auto* child = g->FirstChildElement("Group"); child; child = child->NextSiblingElement("Group")) collectParts(child); }; @@ -345,7 +334,7 @@ std::vector Lxfml::Split(const std::string_view data, const NiPoi for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) { const char* battr = rigid->Attribute("boneRefs"); if (!battr) continue; - for (auto& tok : splitListAttr(battr)) { + for (auto& tok : GeneralUtils::SplitString(battr, ',')) { rsBoneRefs.push_back(tok); if (boneRefsIncluded.find(tok) != boneRefsIncluded.end()) intersects = true; } @@ -366,7 +355,6 @@ std::vector Lxfml::Split(const std::string_view data, const NiPoi } } } - // also include bricks for any newly discovered parts } } @@ -387,7 +375,7 @@ std::vector Lxfml::Split(const std::string_view data, const NiPoi for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) { const char* battr = rigid->Attribute("boneRefs"); if (!battr) continue; - for (auto& tok : splitListAttr(battr)) { + for (auto& tok : GeneralUtils::SplitString(battr, ',')) { auto bpIt = boneRefToPartRef.find(tok); if (bpIt != boneRefToPartRef.end()) { auto partRef = bpIt->second; diff --git a/dGame/dGameMessages/GameMessages.cpp b/dGame/dGameMessages/GameMessages.cpp index 1392b845..879d58ce 100644 --- a/dGame/dGameMessages/GameMessages.cpp +++ b/dGame/dGameMessages/GameMessages.cpp @@ -2640,7 +2640,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent model.id = newID; model.ugcId = blueprintID; model.position = splitLxfmls[i].center; - model.rotation = NiQuaternion(0.0f, 0.0f, 0.0f, 0.0f); + model.rotation = QuatUtils::IDENTITY; model.lot = 14; Database::Get()->InsertNewPropertyModel(propertyId, model, "Objects_14_name"); @@ -2681,7 +2681,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent EntityInfo info; info.lot = 14; info.pos = splitLxfmls[i].center; - info.rot = {}; + info.rot = QuatUtils::IDENTITY; info.spawner = nullptr; info.spawnerID = entity->GetObjectID(); info.spawnerNodeID = 0; diff --git a/tests/dCommonTests/CMakeLists.txt b/tests/dCommonTests/CMakeLists.txt index 888930a3..ca5cd132 100644 --- a/tests/dCommonTests/CMakeLists.txt +++ b/tests/dCommonTests/CMakeLists.txt @@ -10,7 +10,7 @@ set(DCOMMONTEST_SOURCES "TestLUString.cpp" "TestLUWString.cpp" "dCommonDependencies.cpp" - "lxfml_split_tests.cpp" + "LxfmlSplitTests.cpp" ) add_subdirectory(dEnumsTests) diff --git a/tests/dCommonTests/lxfml_split_tests.cpp b/tests/dCommonTests/LxfmlSplitTests.cpp similarity index 97% rename from tests/dCommonTests/lxfml_split_tests.cpp rename to tests/dCommonTests/LxfmlSplitTests.cpp index 86216464..ba3288ef 100644 --- a/tests/dCommonTests/lxfml_split_tests.cpp +++ b/tests/dCommonTests/LxfmlSplitTests.cpp @@ -21,7 +21,10 @@ TEST(LxfmlSplitTests, SplitUsesAllBricksAndNoDuplicates) { // Read the sample test.lxfml included in tests. Resolve path relative to this source file. std::filesystem::path srcDir = std::filesystem::path(__FILE__).parent_path(); std::filesystem::path filePath = srcDir / "test.lxfml"; - std::string data = ReadFile(filePath.string()); + std::ifstream in(filePath, std::ios::in | std::ios::binary); + std::ostringstream ss; + ss << in.rdbuf(); + std::string data = ss.str(); ASSERT_FALSE(data.empty()) << "Failed to read " << filePath.string();