13template <
typename PROP_VAL_TYPE>
27 char const separator =
',');
40 std::string
const& material_id_string,
41 MeshLib::PropertyVector<int>
const*
const material_ids,
42 char const separator =
',',
bool const validate =
false);
47template <
typename T,
typename CreateMedium>
48 requires std::convertible_to<
49 decltype(std::declval<CreateMedium>()(std::declval<int>())),
52 std::map<
int, std::shared_ptr<T>>& media,
53 std::vector<int>
const& material_ids_of_this_medium,
54 CreateMedium&& create_medium)
56 if (media.find(
id) != end(media))
59 "Multiple media were specified for the same material id '{:d}'. "
60 "Keep in mind, that if no material id is specified, it is assumed "
61 "to be 0 by default.",
65 if (
id == material_ids_of_this_medium[0])
67 media[id] = create_medium(
id);
71 media[id] = media[material_ids_of_this_medium[0]];
std::vector< int > parseMaterialIdString(std::string const &material_id_string, MeshLib::PropertyVector< int > const *const material_ids, char const separator, bool const validate)
void createMediumForId(int const id, std::map< int, std::shared_ptr< T > > &media, std::vector< int > const &material_ids_of_this_medium, CreateMedium &&create_medium)
std::vector< int > splitMaterialIdString(std::string const &material_id_string, char const separator)