snapshot: deprecate multi-type component loading function

This commit is contained in:
Michele Caini
2023-05-25 11:50:40 +02:00
parent 35e338cc99
commit cafe851809

View File

@@ -495,7 +495,7 @@ public:
}
/**
* @brief Serializes all required components with associated identifiers.
* @brief Serializes all elements of a type with associated identifiers.
*
* It creates local counterparts for remote elements as needed.<br/>
* Members are either data members of type entity_type or containers of
@@ -504,16 +504,46 @@ public:
*
* @tparam Component Type of component to restore.
* @tparam Archive Type of input archive.
* @tparam Other Types of components to update with local counterparts.
* @tparam Member Types of members to update with their local counterparts.
* @param archive A valid reference to an input archive.
* @param member Members to update with their local counterparts.
* @return A non-const reference to this loader.
*/
template<typename... Component, typename Archive, typename... Other, typename... Member>
basic_continuous_loader &component(Archive &archive, Member Other::*...member) {
(remove_if_exists<Component>(), ...);
(assign<Component>(archive, member...), ...);
template<typename Component, typename Archive, typename... Member>
basic_continuous_loader &component(Archive &archive, Member Component::*...member) {
remove_if_exists<Component>();
assign<Component>(archive, member...);
return *this;
}
/**
* @brief Serializes all required components with associated identifiers.
*
* It creates local counterparts for remote elements as needed.<br/>
* Members are either data members of type entity_type or containers of
* entities. In both cases, a loader visits them and replaces entities with
* their local counterpart.
*
* @tparam First First type of component to serialize.
* @tparam Second Second type of component to serialize.
* @tparam Other Other types of components to serialize.
* @tparam Archive Type of input archive.
* @tparam Clazz Types of components to update with local counterparts.
* @tparam Member Types of members to update with their local counterparts.
* @param archive A valid reference to an input archive.
* @param member Members to update with their local counterparts.
* @return A non-const reference to this loader.
*/
template<typename First, typename Second, typename... Other, typename Archive, typename... Clazz, typename... Member>
[[deprecated("use .component<Type>(archive, members...) instead")]] basic_continuous_loader &component(Archive &archive, Member Clazz::*...member) {
remove_if_exists<First>();
remove_if_exists<Second>();
(remove_if_exists<Other>(), ...);
assign<First>(archive, member...);
assign<Second>(archive, member...);
(assign<Other>(archive, member...), ...);
return *this;
}