From 2184a7fdfbbe8c027501a685daafe102a36fa692 Mon Sep 17 00:00:00 2001 From: David Markowitz Date: Thu, 26 Jun 2025 01:20:36 -0700 Subject: [PATCH] revert all changes related to normalization of bbb positions --- dCommon/Lxfml.cpp | 6 ++++-- dCommon/LxfmlBugged.cpp | 5 +++++ dDatabase/ModelNormalizeMigration.cpp | 4 ++++ dGame/dGameMessages/GameMessages.cpp | 17 +++++++++++------ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/dCommon/Lxfml.cpp b/dCommon/Lxfml.cpp index a244c3ae..a0db12fd 100644 --- a/dCommon/Lxfml.cpp +++ b/dCommon/Lxfml.cpp @@ -66,9 +66,11 @@ Lxfml::Result Lxfml::NormalizePosition(const std::string_view data) { auto delta = (highest - lowest) / 2.0f; auto newRootPos = lowest + delta; - + // Clamp the Y to the lowest point on the model newRootPos.y = lowest.y; + // newRootPos = newRootPos - NiPoint3{-0.4f, 0, 0.4}; + const auto posToReturn = newRootPos; // Adjust all positions to account for the new origin for (auto& transformation : transformations | std::views::values) { @@ -112,6 +114,6 @@ Lxfml::Result Lxfml::NormalizePosition(const std::string_view data) { doc.Print(&printer); toReturn.lxfml = printer.CStr(); - toReturn.center = newRootPos; + toReturn.center = posToReturn; return toReturn; } diff --git a/dCommon/LxfmlBugged.cpp b/dCommon/LxfmlBugged.cpp index f5eeebc8..90b45047 100644 --- a/dCommon/LxfmlBugged.cpp +++ b/dCommon/LxfmlBugged.cpp @@ -9,6 +9,8 @@ // this file should not be touched Lxfml::Result Lxfml::NormalizePositionOnlyFirstPart(const std::string_view data) { + // this is bugged + return; Result toReturn; tinyxml2::XMLDocument doc; const auto err = doc.Parse(data.data()); @@ -117,6 +119,9 @@ Lxfml::Result Lxfml::NormalizePositionOnlyFirstPart(const std::string_view data) } Lxfml::Result Lxfml::NormalizePositionAfterFirstPart(const std::string_view data, const NiPoint3& position) { + // this is bugged + return; + Result toReturn; tinyxml2::XMLDocument doc; const auto err = doc.Parse(data.data()); diff --git a/dDatabase/ModelNormalizeMigration.cpp b/dDatabase/ModelNormalizeMigration.cpp index e33e5e4f..7e7122d0 100644 --- a/dDatabase/ModelNormalizeMigration.cpp +++ b/dDatabase/ModelNormalizeMigration.cpp @@ -5,6 +5,8 @@ #include "Sd0.h" void ModelNormalizeMigration::Run() { + // Take this out when model position normalization works (never) + return; const auto oldCommit = Database::Get()->GetAutoCommit(); Database::Get()->SetAutoCommit(false); for (auto& [lxfmlData, id, modelID] : Database::Get()->GetAllUgcModels()) { @@ -30,6 +32,8 @@ void ModelNormalizeMigration::Run() { } void ModelNormalizeMigration::RunAfterFirstPart() { + // Take this out when model position normalization works (never) + return; const auto oldCommit = Database::Get()->GetAutoCommit(); Database::Get()->SetAutoCommit(false); for (auto& [lxfmlData, id, modelID] : Database::Get()->GetAllUgcModels()) { diff --git a/dGame/dGameMessages/GameMessages.cpp b/dGame/dGameMessages/GameMessages.cpp index c2f464d1..4f86e308 100644 --- a/dGame/dGameMessages/GameMessages.cpp +++ b/dGame/dGameMessages/GameMessages.cpp @@ -2611,10 +2611,15 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent // Uncompress the data and normalize the position const auto asStr = sd0.GetAsStringUncompressed(); - const auto [newLxfml, newCenter] = Lxfml::NormalizePosition(asStr); + + // This logic doesnt work + /* + // const auto [newLxfml, newCenter] = Lxfml::NormalizePosition(asStr); // Recompress the data and save to the database - sd0.FromData(reinterpret_cast(newLxfml.data()), newLxfml.size()); + // sd0.FromData(reinterpret_cast(newLxfml.data()), newLxfml.size()); + */ + auto sd0AsStream = sd0.GetAsStream(); Database::Get()->InsertNewUgcModel(sd0AsStream, blueprintIDSmall, entity->GetCharacter()->GetParentUser()->GetAccountID(), entity->GetCharacter()->GetID()); @@ -2622,8 +2627,8 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent IPropertyContents::Model model; model.id = newIDL; model.ugcId = blueprintIDSmall; - model.position = newCenter; - model.rotation = NiQuaternion(0.0f, 0.0f, 0.0f, 0.0f); + model.position = NiPoint3Constant::ZERO; + model.rotation = NiQuaternionConstant::IDENTITY; model.lot = 14; Database::Get()->InsertNewPropertyModel(propertyId, model, "Objects_14_name"); @@ -2668,8 +2673,8 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent EntityInfo info; info.lot = 14; - info.pos = newCenter; - info.rot = {}; + info.pos = NiPoint3Constant::ZERO; + info.rot = NiQuaternionConstant::IDENTITY; info.spawner = nullptr; info.spawnerID = entity->GetObjectID(); info.spawnerNodeID = 0;