#include "ItemComponent.h" #include "Entity.h" #include "ObjectLoadState.h" #include "PetComponent.h" void ItemComponent::Serialize(RakNet::BitStream& outBitStream, bool isConstruction) { // Live wrote the user-generated-content info on every construction: the model's userModelID (a brick built model, // LOT 14), else no UGC id (items, reward models such as LOT 8069), moderation status NoStatus, no description. outBitStream.Write(isConstruction); if (isConstruction) { outBitStream.Write(m_Parent->GetVarAs(u"userModelID")); // ug_id outBitStream.Write(0); // ug_moderation_status NoStatus outBitStream.Write0(); // ug_description } } void ItemComponent::Allocator(Entity& entity, ObjectLoadState& state) { // A pet takes the item (and model) component away (LWOPetComponent::Factory); models keep theirs (live: an // item block before the model's) PetComponent* petComponent{}; const auto itemID = state.GetComponentID(eReplicaComponentType::ITEM); if (itemID > 0 && !entity.TryGetComponent(eReplicaComponentType::PET, petComponent)) { entity.AddComponent(itemID); } }