Ejemplo n.º 1
0
ISCORE_PLUGIN_SCENARIO_EXPORT void Visitor<Writer<DataStream>>::writeTo(Scenario::StateModel& s)
{
    // Common metadata
    writeTo(s.metadata);

    m_stream >> s.m_eventId
            >> s.m_previousConstraint
            >> s.m_nextConstraint
            >> s.m_heightPercentage;

    // Message tree
    Process::MessageNode n;
    m_stream >> n;
    s.m_messageItemModel = new Scenario::MessageItemModel{s.m_stack, s, &s};
    s.messages() = n;

    // Processes plugins
    int32_t process_count;
    m_stream >> process_count;
    auto& pl = context.components.factory<Process::StateProcessList>();
    for(; process_count -- > 0;)
    {
        s.stateProcesses.add(deserialize_interface(pl, *this, &s));
    }


    checkDelimiter();
}
Ejemplo n.º 2
0
bool DataStreamSerializedComponents::deserializeRemaining(
    Components& components,
    QObject* entity)
{
  auto& ctx = score::IDocument::documentContext(*entity);
  auto& comp_factory
      = ctx.app.interfaces<score::SerializableComponentFactoryList>();
  for (auto it = data.begin(); it != data.end();)
  {
    DataStream::Deserializer s{it->second};
    auto res = deserialize_interface(comp_factory, s, ctx, entity);
    if (res)
    {
      components.add(res);
      it = data.erase(it);
    }
    else
    {
      ++it;
    }
  }
  return data.empty();
}
Ejemplo n.º 3
0
ISCORE_PLUGIN_SCENARIO_EXPORT void Visitor<Writer<JSONObject>>::writeTo(Scenario::StateModel& s)
{
    // Common metadata
    s.metadata = fromJsonObject<ModelMetadata>(m_obj["Metadata"]);

    s.m_eventId = fromJsonValue<Id<Scenario::EventModel>>(m_obj["Event"]);
    s.m_previousConstraint = fromJsonValue<Id<Scenario::ConstraintModel>>(m_obj["PreviousConstraint"]);
    s.m_nextConstraint = fromJsonValue<Id<Scenario::ConstraintModel>>(m_obj["NextConstraint"]);
    s.m_heightPercentage = m_obj["HeightPercentage"].toDouble();

    // Message tree
    s.m_messageItemModel = new Scenario::MessageItemModel{s.m_stack, s, &s};
    s.messages() = fromJsonObject<Process::MessageNode>(m_obj["Messages"]);

    // Processes plugins
    auto& pl = context.components.factory<Process::StateProcessList>();

    QJsonArray process_array = m_obj["StateProcesses"].toArray();
    for(const auto& json_vref : process_array)
    {
        Deserializer<JSONObject> deserializer{json_vref.toObject()};
        s.stateProcesses.add(deserialize_interface(pl, deserializer, &s));
    }
}