mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-04-26 16:46:31 +00:00
add some notes and remove some logs
This commit is contained in:
parent
a4295a26f7
commit
2cf0eac8f2
@ -40,9 +40,9 @@ Lxfml::Result Lxfml::NormalizePosition(const std::string_view data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// These points are well out of bounds for an actual player
|
// These points are well out of bounds for an actual player
|
||||||
NiPoint3 lowest{10'000, 10'000, 10'000};
|
NiPoint3 lowest{ 10'000.0f, 10'000.0f, 10'000.0f };
|
||||||
NiPoint3 highest{-10'000, -10'000, -10'000};
|
NiPoint3 highest{ -10'000.0f, -10'000.0f, -10'000.0f };
|
||||||
|
|
||||||
// Calculate the lowest and highest points on the entire model
|
// Calculate the lowest and highest points on the entire model
|
||||||
for (const auto& transformation : transformations | std::views::values) {
|
for (const auto& transformation : transformations | std::views::values) {
|
||||||
auto split = GeneralUtils::SplitString(transformation, ',');
|
auto split = GeneralUtils::SplitString(transformation, ',');
|
||||||
@ -100,7 +100,7 @@ Lxfml::Result Lxfml::NormalizePosition(const std::string_view data) {
|
|||||||
auto* refID = bone->Attribute("refID");
|
auto* refID = bone->Attribute("refID");
|
||||||
if (refID) {
|
if (refID) {
|
||||||
bone->SetAttribute("transformation", transformations[refID].c_str());
|
bone->SetAttribute("transformation", transformations[refID].c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,7 +109,6 @@ Lxfml::Result Lxfml::NormalizePosition(const std::string_view data) {
|
|||||||
tinyxml2::XMLPrinter printer;
|
tinyxml2::XMLPrinter printer;
|
||||||
doc.Print(&printer);
|
doc.Print(&printer);
|
||||||
|
|
||||||
LOG("root pos %f %f %f", newRootPos.x, newRootPos.y, newRootPos.z);
|
|
||||||
toReturn.lxfml = printer.CStr();
|
toReturn.lxfml = printer.CStr();
|
||||||
toReturn.center = newRootPos;
|
toReturn.center = newRootPos;
|
||||||
return toReturn;
|
return toReturn;
|
||||||
|
@ -15,6 +15,8 @@ namespace Lxfml {
|
|||||||
NiPoint3 center;
|
NiPoint3 center;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Normalizes a LXFML model to be positioned relative to its local 0, 0, 0 rather than a game worlds 0, 0, 0.
|
||||||
|
// Returns a struct of its new center and the updated LXFML containing these edits.
|
||||||
[[nodiscard]] Result NormalizePosition(const std::string_view data);
|
[[nodiscard]] Result NormalizePosition(const std::string_view data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,13 +23,13 @@ public:
|
|||||||
Sd0(std::istream& buffer);
|
Sd0(std::istream& buffer);
|
||||||
|
|
||||||
// Uncompresses the entire Sd0 buffer and returns it as a string
|
// Uncompresses the entire Sd0 buffer and returns it as a string
|
||||||
std::string GetAsStringUncompressed() const;
|
[[nodiscard]] std::string GetAsStringUncompressed() const;
|
||||||
|
|
||||||
// Gets the Sd0 buffer as a stream in its raw compressed form
|
// Gets the Sd0 buffer as a stream in its raw compressed form
|
||||||
std::stringstream GetAsStream() const;
|
[[nodiscard]] std::stringstream GetAsStream() const;
|
||||||
|
|
||||||
// Gets the Sd0 buffer as a vector in its raw compressed form
|
// Gets the Sd0 buffer as a vector in its raw compressed form
|
||||||
const std::vector<BinaryBuffer>& GetAsVector() const;
|
[[nodiscard]] const std::vector<BinaryBuffer>& GetAsVector() const;
|
||||||
|
|
||||||
// Compress data into a Sd0 buffer
|
// Compress data into a Sd0 buffer
|
||||||
void FromData(const uint8_t* data, size_t bufferSize);
|
void FromData(const uint8_t* data, size_t bufferSize);
|
||||||
|
@ -16,8 +16,8 @@ namespace TinyXmlUtils {
|
|||||||
ElementIterator(tinyxml2::XMLElement* elem);
|
ElementIterator(tinyxml2::XMLElement* elem);
|
||||||
|
|
||||||
ElementIterator& operator++();
|
ElementIterator& operator++();
|
||||||
tinyxml2::XMLElement* operator->() { DluAssert(m_CurElem); return m_CurElem; }
|
[[nodiscard]] tinyxml2::XMLElement* operator->() { DluAssert(m_CurElem); return m_CurElem; }
|
||||||
tinyxml2::XMLElement& operator*() { DluAssert(m_CurElem); return *m_CurElem; }
|
[[nodiscard]] tinyxml2::XMLElement& operator*() { DluAssert(m_CurElem); return *m_CurElem; }
|
||||||
|
|
||||||
bool operator==(const ElementIterator& other) const { return other.m_CurElem == m_CurElem; }
|
bool operator==(const ElementIterator& other) const { return other.m_CurElem == m_CurElem; }
|
||||||
|
|
||||||
@ -32,21 +32,21 @@ namespace TinyXmlUtils {
|
|||||||
Element(tinyxml2::XMLElement* xmlElem, const std::string_view elem);
|
Element(tinyxml2::XMLElement* xmlElem, const std::string_view elem);
|
||||||
|
|
||||||
// The first child element of this element.
|
// The first child element of this element.
|
||||||
ElementIterator begin();
|
[[nodiscard]] ElementIterator begin();
|
||||||
|
|
||||||
// Always returns an ElementIterator which points to nullptr.
|
// Always returns an ElementIterator which points to nullptr.
|
||||||
// TinyXml2 return NULL when you've reached the last child element so
|
// TinyXml2 return NULL when you've reached the last child element so
|
||||||
// you can't do any funny one past end logic here.
|
// you can't do any funny one past end logic here.
|
||||||
ElementIterator end();
|
[[nodiscard]] ElementIterator end();
|
||||||
|
|
||||||
// Get a child element
|
// Get a child element
|
||||||
Element operator[](const std::string_view elem) const;
|
[[nodiscard]] Element operator[](const std::string_view elem) const;
|
||||||
Element operator[](const char* elem) const { return operator[](std::string_view(elem)); };
|
[[nodiscard]] Element operator[](const char* elem) const { return operator[](std::string_view(elem)); };
|
||||||
|
|
||||||
// Whether or not data exists for this element
|
// Whether or not data exists for this element
|
||||||
operator bool() const { return m_Elem != nullptr; }
|
operator bool() const { return m_Elem != nullptr; }
|
||||||
|
|
||||||
const tinyxml2::XMLElement* operator->() const { return m_Elem; }
|
[[nodiscard]] const tinyxml2::XMLElement* operator->() const { return m_Elem; }
|
||||||
private:
|
private:
|
||||||
const char* GetElementName() const { return m_IteratedName.empty() ? nullptr : m_IteratedName.c_str(); }
|
const char* GetElementName() const { return m_IteratedName.empty() ? nullptr : m_IteratedName.c_str(); }
|
||||||
const std::string m_IteratedName;
|
const std::string m_IteratedName;
|
||||||
@ -57,7 +57,7 @@ namespace TinyXmlUtils {
|
|||||||
public:
|
public:
|
||||||
DocumentReader(tinyxml2::XMLDocument& doc) : m_Doc{ doc } {}
|
DocumentReader(tinyxml2::XMLDocument& doc) : m_Doc{ doc } {}
|
||||||
|
|
||||||
Element operator[](const std::string_view elem) const;
|
[[nodiscard]] Element operator[](const std::string_view elem) const;
|
||||||
private:
|
private:
|
||||||
tinyxml2::XMLDocument& m_Doc;
|
tinyxml2::XMLDocument& m_Doc;
|
||||||
};
|
};
|
||||||
|
@ -2611,7 +2611,6 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream& inStream, Entity* ent
|
|||||||
// Uncompress the data and normalize the position
|
// Uncompress the data and normalize the position
|
||||||
const auto asStr = sd0.GetAsStringUncompressed();
|
const auto asStr = sd0.GetAsStringUncompressed();
|
||||||
const auto [newLxfml, newCenter] = Lxfml::NormalizePosition(asStr);
|
const auto [newLxfml, newCenter] = Lxfml::NormalizePosition(asStr);
|
||||||
auto [x, y, z] = newCenter;
|
|
||||||
|
|
||||||
// Recompress the data and save to the database
|
// Recompress the data and save to the database
|
||||||
sd0.FromData(reinterpret_cast<const uint8_t*>(newLxfml.data()), newLxfml.size());
|
sd0.FromData(reinterpret_cast<const uint8_t*>(newLxfml.data()), newLxfml.size());
|
||||||
|
@ -1118,6 +1118,8 @@ void HandlePacket(Packet* packet) {
|
|||||||
GeneralUtils::SetBit(blueprintID, eObjectBits::CHARACTER);
|
GeneralUtils::SetBit(blueprintID, eObjectBits::CHARACTER);
|
||||||
GeneralUtils::SetBit(blueprintID, eObjectBits::PERSISTENT);
|
GeneralUtils::SetBit(blueprintID, eObjectBits::PERSISTENT);
|
||||||
|
|
||||||
|
// Workaround for not having a UGC server to get model LXFML onto the client so it
|
||||||
|
// can generate the physics and nif for the object.
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
BitStreamUtils::WriteHeader(bitStream, eConnectionType::CLIENT, MessageType::Client::BLUEPRINT_SAVE_RESPONSE);
|
BitStreamUtils::WriteHeader(bitStream, eConnectionType::CLIENT, MessageType::Client::BLUEPRINT_SAVE_RESPONSE);
|
||||||
bitStream.Write<LWOOBJID>(LWOOBJID_EMPTY); //always zero so that a check on the client passes
|
bitStream.Write<LWOOBJID>(LWOOBJID_EMPTY); //always zero so that a check on the client passes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user