void operator delete[]([[maybe_unused]] void *p) { fail(); }
virtual void internal_serialize(bool save, void *ar) = 0;
+ virtual std::string serializeName(void) const = 0;
protected:
static void fail() {
for (size_t i = 0; i < component_helpers_.size(); i++) {
BaseComponentHelper *helper = component_helpers_[i];
if (helper && mask.test(i)) {
- helper->get_component(entity)->internal_serialize(save,
- static_cast<void*>(&ar));
+ auto* c = helper->get_component(entity);
+ ar.setNextName(c->serializeName().c_str());
+ ar.startNode();
+ c->internal_serialize(save, static_cast<void*>(&ar));
+ ar.finishNode();
}
}
}
}
void serialize(cereal::JSONOutputArchive& ar) final {
- ar(r, g, b, strength);
+ ar(CEREAL_NVP(r), CEREAL_NVP(g), CEREAL_NVP(b), CEREAL_NVP(strength));
}
void serialize(cereal::JSONInputArchive& ar) final {
- ar(r, g, b, strength);
+ ar(CEREAL_NVP(r), CEREAL_NVP(g), CEREAL_NVP(b), CEREAL_NVP(strength));
+ }
+
+ std::string serializeName(void) const final {
+ return "Light";
}
};
}
void serialize(cereal::JSONOutputArchive& ar) final {
- ar(name);
+ ar(CEREAL_NVP(name));
}
void serialize(cereal::JSONInputArchive& ar) final {
- ar(name);
+ ar(CEREAL_NVP(name));
+ }
+
+ std::string serializeName(void) const final {
+ return "Name";
}
};
void serialize([[maybe_unused]] cereal::JSONOutputArchive& ar) final {}
void serialize([[maybe_unused]] cereal::JSONInputArchive& ar) final {}
+
+ std::string serializeName(void) const final {
+ return "Player";
+ }
};
#endif // COMPONENT_PLAYER_HPP_
}
void serialize(cereal::JSONOutputArchive& ar) final {
- ar(x, y);
+ ar(CEREAL_NVP(x), CEREAL_NVP(y));
}
void serialize(cereal::JSONInputArchive& ar) final {
- ar(x, y);
+ ar(CEREAL_NVP(x), CEREAL_NVP(y));
+ }
+
+ std::string serializeName(void) const final {
+ return "Position";
}
};
}
void serialize(cereal::JSONOutputArchive& ar) final {
- ar(visible, flipX);
+ ar(CEREAL_NVP(visible), CEREAL_NVP(flipX));
}
void serialize(cereal::JSONInputArchive& ar) final {
- ar(visible, flipX);
+ ar(CEREAL_NVP(visible), CEREAL_NVP(flipX));
+ }
+
+ std::string serializeName(void) const final {
+ return "Render";
}
};
void serialize([[maybe_unused]] cereal::JSONOutputArchive& ar) final {}
void serialize([[maybe_unused]] cereal::JSONInputArchive& ar) final {}
+
+ std::string serializeName(void) const final {
+ return "Scripted";
+ }
};
#endif // COMPONENT_SCRIPT_HPP_
}
void serialize(cereal::JSONOutputArchive& ar) final {
- ar(x, y);
+ ar(CEREAL_NVP(x), CEREAL_NVP(y));
}
void serialize(cereal::JSONInputArchive& ar) final {
- ar(x, y);
+ ar(CEREAL_NVP(x), CEREAL_NVP(y));
+ }
+
+ std::string serializeName(void) const final {
+ return "Velocity";
}
};
entities.entity_serialize(e, true, archive);
archive.finishNode();
}
+ std::cout << std::endl;
}
bool Engine::shouldRun(void)