#include #include using TiltedPhoques::Serialization; void CharacterData::Serialize(TiltedPhoques::Buffer::Writer& aWriter) const noexcept { ReferenceId.Serialize(aWriter); FormId.Serialize(aWriter); CellId.Serialize(aWriter); WorldSpaceId.Serialize(aWriter); Position.Serialize(aWriter); Rotation.Serialize(aWriter); aWriter.WriteBits(ChangeFlags, 32); Serialization::WriteString(aWriter, AppearanceBuffer); InventoryContent.Serialize(aWriter); FactionsContent.Serialize(aWriter); LatestAction.GenerateDifferential(ActionEvent{}, aWriter); QuestContent.Serialize(aWriter); FaceTints.Serialize(aWriter); AllActorValues.Serialize(aWriter); Serialization::WriteBool(aWriter, IsDead); Serialization::WriteBool(aWriter, IsWeaponDrawn); } void CharacterData::Deserialize(TiltedPhoques::Buffer::Reader& aReader) noexcept { ReferenceId.Deserialize(aReader); FormId.Deserialize(aReader); CellId.Deserialize(aReader); WorldSpaceId.Deserialize(aReader); Position.Deserialize(aReader); Rotation.Deserialize(aReader); uint64_t dest = 0; aReader.ReadBits(dest, 32); ChangeFlags = dest & 0xFFFFFFFF; AppearanceBuffer = Serialization::ReadString(aReader); InventoryContent = {}; InventoryContent.Deserialize(aReader); FactionsContent = {}; FactionsContent.Deserialize(aReader); LatestAction = ActionEvent{}; LatestAction.ApplyDifferential(aReader); QuestContent.Deserialize(aReader); FaceTints.Deserialize(aReader); AllActorValues.Deserialize(aReader); IsDead = Serialization::ReadBool(aReader); IsWeaponDrawn = Serialization::ReadBool(aReader); }