mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-10-11 01:48:07 +00:00
Address feedback form Emo in doscord
This commit is contained in:
@@ -244,17 +244,6 @@ std::vector<Lxfml::Result> Lxfml::Split(const std::string_view data, const NiPoi
|
|||||||
std::unordered_set<std::string> usedBrickRefs;
|
std::unordered_set<std::string> usedBrickRefs;
|
||||||
std::unordered_set<tinyxml2::XMLElement*> usedRigidSystems;
|
std::unordered_set<tinyxml2::XMLElement*> usedRigidSystems;
|
||||||
|
|
||||||
auto splitListAttr = [](const char* attr) {
|
|
||||||
std::vector<std::string> 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
|
// Helper to create output document from sets of brick refs and rigidsystem pointers
|
||||||
auto makeOutput = [&](const std::unordered_set<std::string>& bricksToInclude, const std::vector<tinyxml2::XMLElement*>& rigidSystemsToInclude, const std::vector<tinyxml2::XMLElement*>& groupsToInclude = {}) {
|
auto makeOutput = [&](const std::unordered_set<std::string>& bricksToInclude, const std::vector<tinyxml2::XMLElement*>& rigidSystemsToInclude, const std::vector<tinyxml2::XMLElement*>& groupsToInclude = {}) {
|
||||||
tinyxml2::XMLDocument outDoc;
|
tinyxml2::XMLDocument outDoc;
|
||||||
@@ -307,7 +296,7 @@ std::vector<Lxfml::Result> Lxfml::Split(const std::string_view data, const NiPoi
|
|||||||
if (!g) return;
|
if (!g) return;
|
||||||
const char* partAttr = g->Attribute("partRefs");
|
const char* partAttr = g->Attribute("partRefs");
|
||||||
if (partAttr) {
|
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);
|
for (auto* child = g->FirstChildElement("Group"); child; child = child->NextSiblingElement("Group")) collectParts(child);
|
||||||
};
|
};
|
||||||
@@ -345,7 +334,7 @@ std::vector<Lxfml::Result> Lxfml::Split(const std::string_view data, const NiPoi
|
|||||||
for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) {
|
for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) {
|
||||||
const char* battr = rigid->Attribute("boneRefs");
|
const char* battr = rigid->Attribute("boneRefs");
|
||||||
if (!battr) continue;
|
if (!battr) continue;
|
||||||
for (auto& tok : splitListAttr(battr)) {
|
for (auto& tok : GeneralUtils::SplitString(battr, ',')) {
|
||||||
rsBoneRefs.push_back(tok);
|
rsBoneRefs.push_back(tok);
|
||||||
if (boneRefsIncluded.find(tok) != boneRefsIncluded.end()) intersects = true;
|
if (boneRefsIncluded.find(tok) != boneRefsIncluded.end()) intersects = true;
|
||||||
}
|
}
|
||||||
@@ -366,7 +355,6 @@ std::vector<Lxfml::Result> Lxfml::Split(const std::string_view data, const NiPoi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// also include bricks for any newly discovered parts
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -387,7 +375,7 @@ std::vector<Lxfml::Result> Lxfml::Split(const std::string_view data, const NiPoi
|
|||||||
for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) {
|
for (auto* rigid = rs->FirstChildElement("Rigid"); rigid; rigid = rigid->NextSiblingElement("Rigid")) {
|
||||||
const char* battr = rigid->Attribute("boneRefs");
|
const char* battr = rigid->Attribute("boneRefs");
|
||||||
if (!battr) continue;
|
if (!battr) continue;
|
||||||
for (auto& tok : splitListAttr(battr)) {
|
for (auto& tok : GeneralUtils::SplitString(battr, ',')) {
|
||||||
auto bpIt = boneRefToPartRef.find(tok);
|
auto bpIt = boneRefToPartRef.find(tok);
|
||||||
if (bpIt != boneRefToPartRef.end()) {
|
if (bpIt != boneRefToPartRef.end()) {
|
||||||
auto partRef = bpIt->second;
|
auto partRef = bpIt->second;
|
||||||
|
@@ -2640,7 +2640,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent
|
|||||||
model.id = newID;
|
model.id = newID;
|
||||||
model.ugcId = blueprintID;
|
model.ugcId = blueprintID;
|
||||||
model.position = splitLxfmls[i].center;
|
model.position = splitLxfmls[i].center;
|
||||||
model.rotation = NiQuaternion(0.0f, 0.0f, 0.0f, 0.0f);
|
model.rotation = QuatUtils::IDENTITY;
|
||||||
model.lot = 14;
|
model.lot = 14;
|
||||||
Database::Get()->InsertNewPropertyModel(propertyId, model, "Objects_14_name");
|
Database::Get()->InsertNewPropertyModel(propertyId, model, "Objects_14_name");
|
||||||
|
|
||||||
@@ -2681,7 +2681,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent
|
|||||||
EntityInfo info;
|
EntityInfo info;
|
||||||
info.lot = 14;
|
info.lot = 14;
|
||||||
info.pos = splitLxfmls[i].center;
|
info.pos = splitLxfmls[i].center;
|
||||||
info.rot = {};
|
info.rot = QuatUtils::IDENTITY;
|
||||||
info.spawner = nullptr;
|
info.spawner = nullptr;
|
||||||
info.spawnerID = entity->GetObjectID();
|
info.spawnerID = entity->GetObjectID();
|
||||||
info.spawnerNodeID = 0;
|
info.spawnerNodeID = 0;
|
||||||
|
@@ -10,7 +10,7 @@ set(DCOMMONTEST_SOURCES
|
|||||||
"TestLUString.cpp"
|
"TestLUString.cpp"
|
||||||
"TestLUWString.cpp"
|
"TestLUWString.cpp"
|
||||||
"dCommonDependencies.cpp"
|
"dCommonDependencies.cpp"
|
||||||
"lxfml_split_tests.cpp"
|
"LxfmlSplitTests.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(dEnumsTests)
|
add_subdirectory(dEnumsTests)
|
||||||
|
@@ -21,7 +21,10 @@ TEST(LxfmlSplitTests, SplitUsesAllBricksAndNoDuplicates) {
|
|||||||
// Read the sample test.lxfml included in tests. Resolve path relative to this source file.
|
// 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 srcDir = std::filesystem::path(__FILE__).parent_path();
|
||||||
std::filesystem::path filePath = srcDir / "test.lxfml";
|
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();
|
ASSERT_FALSE(data.empty()) << "Failed to read " << filePath.string();
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user