#include "ComponentsInfoPull.h" ComponentsInfoPull::ComponentsInfoPull() {} void ComponentsInfoPull::bindEntity(std::weak_ptr ins) { this->_bind_entity = ins; } QString ComponentsInfoPull::name() const { return NAME(ComponentsInfoPull); } #include #include void ComponentsInfoPull::execute(std::shared_ptr map, std::shared_ptr in, QList>& out) { auto rst = std::make_shared(); rst->reset(in->targetEntity(), in->sourceEntity()); auto bind_e = this->_bind_entity.lock(); rst->_entity_json["entity_templet"] = bind_e->templetName(); rst->_entity_json["entity_id"] = QJsonValue::fromVariant(QVariant::fromValue(bind_e->entityID())); rst->_entity_json["entity_name"] = bind_e->name(); QList> comp_list; auto host_conv = std::dynamic_pointer_cast(bind_e); comp_list = host_conv->components(); auto array = QJsonArray(); for (auto ins : comp_list) { if(ins->name() == this->name()) continue; auto info_comp = QJsonObject(); info_comp["component_type"] = ins->name(); ins->saveTo(info_comp); array.append(info_comp); } rst->_entity_json["component_list"] = array; out << rst; } #include void ComponentsInfoPull::execute(std::shared_ptr map, std::shared_ptr in, QList>& out) { auto ent_ins = std::dynamic_pointer_cast(this->_bind_entity.lock()); auto comps = ent_ins->components(); auto result = std::make_shared(); result->reset(in->targetEntity(), in->sourceEntity()); for (auto cp : comps) { result->_signature_list.append(cp->signatureTypes()); } out << result; } std::shared_ptr ComponentsInfoPull::defaultNew() const { return std::make_shared(); } void ComponentsInfoPull::recoveryFrom(const QJsonObject& obj) {} void ComponentsInfoPull::saveTo(QJsonObject& obj) const {}