void Node::serialize(IOPacket& packet) { packet.stream(mId, "uuid"); packet.stream(mName, "name", mName); packet.stream(mPosition, "position"); packet.stream(mScale, "scale", Ogre::Vector3::UNIT_SCALE); packet.stream(mRotation, "rotation"); packet.stream(mIsEnabled, "enabled"); onSerialize(packet); // Components uint32_t count = packet.beginList(mComponents.size(), "components"); if(packet.getDirection() == IOPacket::SERIALIZE) { // serialize for(auto iter = mComponents.begin(); iter != mComponents.end(); ++iter) { packet.beginObject(); iter->second->serialize(packet); packet.endObject(); } } else { for(uint32_t i = 0; i < count; ++i) { packet.beginObject(); std::string type; packet.stream(type, "type", std::string("")); Component* c = Serializer::createComponent(type); c->serialize(packet); addComponent(c); packet.endObject(); } } packet.endList(); // Children count = packet.beginList(mChildren.size(), "children"); if(packet.getDirection() == IOPacket::SERIALIZE) { for(auto iter = mChildren.begin(); iter != mChildren.end(); ++iter) { packet.beginObject(); iter->second->serialize(packet); packet.endObject(); } } else { for(uint32_t i = 0; i < count; ++i) { packet.beginObject(); Node* n = new Node; n->serialize(packet); addChildNode(n); packet.endObject(); } } packet.endList(); }
void VariantContainer<T>::OnSerialize(Json::object &output) const { onSerialize( output ); }