Unravel Engine C++ Reference
Loading...
Searching...
No Matches
mesh_importer_meta.cpp
Go to the documentation of this file.
2
4
8
9namespace unravel
10{
11
13{
14 entt::meta_factory<mesh_importer_meta>{}
15 .type("mesh_importer_meta"_hs)
17 entt::attribute{"name", "mesh_importer_meta"},
18 entt::attribute{"pretty_name", "Mesh Importer Meta"},
19 })
20 .func<&mesh_importer_meta::get_meta_type>("get_meta_type"_hs)
21 .func<&mesh_importer_meta::get_static_meta_type>("get_static_meta_type"_hs)
22 .func<&mesh_importer_meta::as_derived>("as_derived"_hs);
23
24 // Register mesh_importer_meta::model_meta with entt
25 entt::meta_factory<mesh_importer_meta::model_meta>{}
26 .type("model_meta"_hs)
28 entt::attribute{"name", "model_meta"},
29 entt::attribute{"pretty_name", "Model Meta"},
30 })
31
32 .data<&mesh_importer_meta::model_meta::import_meshes>("import_meshes"_hs)
34 entt::attribute{"name", "import_meshes"},
35 entt::attribute{"pretty_name", "Import Meshes"},
36 })
37 .data<&mesh_importer_meta::model_meta::weld_vertices>("weld_vertices"_hs)
39 entt::attribute{"name", "weld_vertices"},
40 entt::attribute{"pretty_name", "Weld Vertices"},
41 entt::attribute{"tooltip",
42 "Identifies and joins identical vertex data sets within all imported meshes.\n"
43 "After this step is run, each mesh contains unique vertices,\n"
44 "so a vertex may be used by multiple faces. You usually want\n"
45 "to use this post processing step. If your application deals with\n"
46 "indexed geometry, this step is compulsory or you'll just waste rendering\n"
47 "time."},
48 })
49 .data<&mesh_importer_meta::model_meta::optimize_meshes>("optimize_meshes"_hs)
51 entt::attribute{"name", "optimize_meshes"},
52 entt::attribute{"pretty_name", "Optimize Meshes"},
53 entt::attribute{"tooltip",
54 "A post-processing step to reduce the number of meshes.\n"
55 "This will, in fact, reduce the number of draw calls."},
56 })
57 .data<&mesh_importer_meta::model_meta::split_large_meshes>("split_large_meshes"_hs)
59 entt::attribute{"name", "split_large_meshes"},
60 entt::attribute{"pretty_name", "Split Large Meshes"},
61 })
62 .data<&mesh_importer_meta::model_meta::find_degenerates>("find_degenerates"_hs)
64 entt::attribute{"name", "find_degenerates"},
65 entt::attribute{"pretty_name", "Find Degenerates"},
66 })
67 .data<&mesh_importer_meta::model_meta::find_invalid_data>("find_invalid_data"_hs)
69 entt::attribute{"name", "find_invalid_data"},
70 entt::attribute{"pretty_name", "Find Invalid Data"},
72 "tooltip",
73 "This step searches all meshes for invalid data, such as zeroed\n"
74 "normal vectors or invalid UV coords and removes/fixes them. This is\n"
75 "intended to get rid of some common exporter errors."},
76 });
77
78 // Register mesh_importer_meta::rig_meta with entt
79 entt::meta_factory<mesh_importer_meta::rig_meta>{}
80 .type("rig_meta"_hs)
82 entt::attribute{"name", "rig_meta"},
83 entt::attribute{"pretty_name", "Rig Meta"},
84 });
85
86 // Register mesh_importer_meta::animations_meta with entt
87 entt::meta_factory<mesh_importer_meta::animations_meta>{}
88 .type("animations_meta"_hs)
90 entt::attribute{"name", "animations_meta"},
91 entt::attribute{"pretty_name", "Animations Meta"},
92 })
93 .data<&mesh_importer_meta::animations_meta::import_animations>("import_animations"_hs)
95 entt::attribute{"name", "import_animations"},
96 entt::attribute{"pretty_name", "Import Animations"},
97 });
98
99 // Register mesh_importer_meta::materials_meta with entt
100 entt::meta_factory<mesh_importer_meta::materials_meta>{}
101 .type("materials_meta"_hs)
103 entt::attribute{"name", "materials_meta"},
104 entt::attribute{"pretty_name", "Materials Meta"},
105 })
106 .data<&mesh_importer_meta::materials_meta::import_materials>("import_materials"_hs)
108 entt::attribute{"name", "import_materials"},
109 entt::attribute{"pretty_name", "Import Materials"},
110 })
111 .data<&mesh_importer_meta::materials_meta::remove_redundant_materials>("remove_redundant_materials"_hs)
113 entt::attribute{"name", "remove_redundant_materials"},
114 entt::attribute{"pretty_name", "Remove Redundant Materials"},
115 });
116
117 // Register mesh_importer_meta with entt
118 entt::meta_factory<mesh_importer_meta>{}
119 .type("mesh_importer_meta"_hs)
121 entt::attribute{"name", "mesh_importer_meta"},
122 entt::attribute{"pretty_name", "Mesh Importer Meta"},
123 })
124 .data<&mesh_importer_meta::model>("model"_hs)
126 entt::attribute{"name", "model"},
127 entt::attribute{"pretty_name", "Model"},
128 })
129 .data<&mesh_importer_meta::rig>("rig"_hs)
131 entt::attribute{"name", "rig"},
132 entt::attribute{"pretty_name", "Rig"},
133 })
134 .data<&mesh_importer_meta::animations>("animations"_hs)
136 entt::attribute{"name", "animations"},
137 entt::attribute{"pretty_name", "Animations"},
138 })
139 .data<&mesh_importer_meta::materials>("materials"_hs)
141 entt::attribute{"name", "materials"},
142 entt::attribute{"pretty_name", "Materials"},
143 });
144}
145
147{
148 try_save(ar, ser20::make_nvp("weld_vertices", obj.weld_vertices));
149 try_save(ar, ser20::make_nvp("optimize_meshes", obj.optimize_meshes));
150 try_save(ar, ser20::make_nvp("split_large_meshes", obj.split_large_meshes));
151 try_save(ar, ser20::make_nvp("find_degenerates", obj.find_degenerates));
152 try_save(ar, ser20::make_nvp("find_invalid_data", obj.find_invalid_data));
153}
156
158{
159 try_load(ar, ser20::make_nvp("weld_vertices", obj.weld_vertices));
160 try_load(ar, ser20::make_nvp("optimize_meshes", obj.optimize_meshes));
161 try_load(ar, ser20::make_nvp("split_large_meshes", obj.split_large_meshes));
162 try_load(ar, ser20::make_nvp("find_degenerates", obj.find_degenerates));
163 try_load(ar, ser20::make_nvp("find_invalid_data", obj.find_invalid_data));
164}
167
173
179
181{
182 try_save(ar, ser20::make_nvp("import_animations", obj.import_animations));
183}
186
188{
189 try_load(ar, ser20::make_nvp("import_animations", obj.import_animations));
190}
193
195{
196 try_save(ar, ser20::make_nvp("import_materials", obj.import_materials));
197 try_save(ar, ser20::make_nvp("remove_redundant_materials", obj.remove_redundant_materials));
198}
201
203{
204 try_load(ar, ser20::make_nvp("import_materials", obj.import_materials));
205 try_load(ar, ser20::make_nvp("remove_redundant_materials", obj.remove_redundant_materials));
206}
209
211{
212 try_save(ar, ser20::make_nvp("base_type", ser20::base_class<asset_importer_meta>(&obj)));
213 try_save(ar, ser20::make_nvp("model", obj.model));
214 try_save(ar, ser20::make_nvp("rig", obj.rig));
215 try_save(ar, ser20::make_nvp("animations", obj.animations));
216 try_save(ar, ser20::make_nvp("materials", obj.materials));
217}
220
222{
223 try_load(ar, ser20::make_nvp("base_type", ser20::base_class<asset_importer_meta>(&obj)));
224 try_load(ar, ser20::make_nvp("model", obj.model));
225 try_load(ar, ser20::make_nvp("rig", obj.rig));
226 try_load(ar, ser20::make_nvp("animations", obj.animations));
227 try_load(ar, ser20::make_nvp("materials", obj.materials));
228}
231
232} // namespace unravel
attributes::value_type attribute
Definition reflection.h:19
std::map< std::string, meta_any > attributes
Definition reflection.h:18
BinaryInputArchive iarchive_binary_t
simd::JSONOutputArchive oarchive_associative_t
BinaryOutputArchive oarchive_binary_t
simd::JSONInputArchive iarchive_associative_t
#define REFLECT(cls)
Definition reflection.h:133
#define SAVE_INSTANTIATE(cls, Archive)
#define LOAD(cls)
auto try_save(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define LOAD_INSTANTIATE(cls, Archive)
#define SAVE(cls)
auto try_load(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
static auto get_static_meta_type() -> entt::meta_type