/src/assimp/code/AssetLib/Blender/BlenderScene.cpp
Line | Count | Source |
1 | | /* |
2 | | Open Asset Import Library (ASSIMP) |
3 | | ---------------------------------------------------------------------- |
4 | | |
5 | | Copyright (c) 2006-2020, ASSIMP Development Team |
6 | | All rights reserved. |
7 | | |
8 | | Redistribution and use of this software in source and binary forms, |
9 | | with or without modification, are permitted provided that the |
10 | | following conditions are met: |
11 | | |
12 | | * Redistributions of source code must retain the above |
13 | | copyright notice, this list of conditions and the |
14 | | following disclaimer. |
15 | | |
16 | | * Redistributions in binary form must reproduce the above |
17 | | copyright notice, this list of conditions and the |
18 | | following disclaimer in the documentation and/or other |
19 | | materials provided with the distribution. |
20 | | |
21 | | * Neither the name of the ASSIMP team, nor the names of its |
22 | | contributors may be used to endorse or promote products |
23 | | derived from this software without specific prior |
24 | | written permission of the ASSIMP Development Team. |
25 | | |
26 | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
27 | | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
28 | | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
29 | | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
30 | | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
31 | | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
32 | | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
33 | | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
34 | | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
35 | | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
36 | | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
37 | | |
38 | | ---------------------------------------------------------------------- |
39 | | */ |
40 | | |
41 | | /** @file BlenderScene.cpp |
42 | | * @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py |
43 | | */ |
44 | | |
45 | | #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER |
46 | | |
47 | | #include "BlenderScene.h" |
48 | | #include "BlenderCustomData.h" |
49 | | #include "BlenderDNA.h" |
50 | | #include "BlenderSceneGen.h" |
51 | | |
52 | | namespace Assimp { |
53 | | namespace Blender { |
54 | | |
55 | | //-------------------------------------------------------------------------------- |
56 | | template <> |
57 | | void Structure ::Convert<Object>( |
58 | | Object &dest, |
59 | 0 | const FileDatabase &db) const { |
60 | |
|
61 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
62 | 0 | int temp = 0; |
63 | 0 | ReadField<ErrorPolicy_Fail>(temp, "type", db); |
64 | 0 | dest.type = static_cast<Assimp::Blender::Object::Type>(temp); |
65 | 0 | ReadFieldArray2<ErrorPolicy_Warn>(dest.obmat, "obmat", db); |
66 | 0 | ReadFieldArray2<ErrorPolicy_Warn>(dest.parentinv, "parentinv", db); |
67 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.parsubstr, "parsubstr", db); |
68 | 0 | { |
69 | 0 | std::shared_ptr<Object> parent; |
70 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(parent, "*parent", db); |
71 | 0 | dest.parent = parent.get(); |
72 | 0 | } |
73 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.track, "*track", db); |
74 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy, "*proxy", db); |
75 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_from, "*proxy_from", db); |
76 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_group, "*proxy_group", db); |
77 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.dup_group, "*dup_group", db); |
78 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.data, "*data", db); |
79 | 0 | ReadField<ErrorPolicy_Igno>(dest.modifiers, "modifiers", db); |
80 | |
|
81 | 0 | db.reader->IncPtr(size); |
82 | 0 | } |
83 | | |
84 | | //-------------------------------------------------------------------------------- |
85 | | template <> |
86 | | void Structure ::Convert<Group>( |
87 | | Group &dest, |
88 | 0 | const FileDatabase &db) const { |
89 | |
|
90 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
91 | 0 | ReadField<ErrorPolicy_Igno>(dest.layer, "layer", db); |
92 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.gobject, "*gobject", db); |
93 | |
|
94 | 0 | db.reader->IncPtr(size); |
95 | 0 | } |
96 | | |
97 | | //-------------------------------------------------------------------------------- |
98 | | template <> |
99 | | void Structure::Convert<CollectionObject>( |
100 | | CollectionObject &dest, |
101 | 0 | const FileDatabase &db) const { |
102 | |
|
103 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.next, "*next", db); |
104 | 0 | { |
105 | 0 | std::shared_ptr<Object> ob; |
106 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(ob, "*ob", db); |
107 | 0 | dest.ob = ob.get(); |
108 | 0 | } |
109 | |
|
110 | 0 | db.reader->IncPtr(size); |
111 | 0 | } |
112 | | |
113 | | //-------------------------------------------------------------------------------- |
114 | | template <> |
115 | | void Structure::Convert<CollectionChild>( |
116 | | CollectionChild &dest, |
117 | 0 | const FileDatabase &db) const { |
118 | |
|
119 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.prev, "*prev", db); |
120 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.next, "*next", db); |
121 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.collection, "*collection", db); |
122 | |
|
123 | 0 | db.reader->IncPtr(size); |
124 | 0 | } |
125 | | |
126 | | //-------------------------------------------------------------------------------- |
127 | | template <> |
128 | | void Structure::Convert<Collection>( |
129 | | Collection &dest, |
130 | 0 | const FileDatabase &db) const { |
131 | |
|
132 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
133 | 0 | ReadField<ErrorPolicy_Fail>(dest.gobject, "gobject", db); |
134 | 0 | ReadField<ErrorPolicy_Fail>(dest.children, "children", db); |
135 | |
|
136 | 0 | db.reader->IncPtr(size); |
137 | 0 | } |
138 | | |
139 | | //-------------------------------------------------------------------------------- |
140 | | template <> |
141 | | void Structure ::Convert<MTex>( |
142 | | MTex &dest, |
143 | 0 | const FileDatabase &db) const { |
144 | |
|
145 | 0 | int temp_short = 0; |
146 | 0 | ReadField<ErrorPolicy_Igno>(temp_short, "mapto", db); |
147 | 0 | dest.mapto = static_cast<Assimp::Blender::MTex::MapType>(temp_short); |
148 | 0 | int temp = 0; |
149 | 0 | ReadField<ErrorPolicy_Igno>(temp, "blendtype", db); |
150 | 0 | dest.blendtype = static_cast<Assimp::Blender::MTex::BlendType>(temp); |
151 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.object, "*object", db); |
152 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.tex, "*tex", db); |
153 | 0 | ReadFieldArray<ErrorPolicy_Igno>(dest.uvname, "uvname", db); |
154 | 0 | ReadField<ErrorPolicy_Igno>(temp, "projx", db); |
155 | 0 | dest.projx = static_cast<Assimp::Blender::MTex::Projection>(temp); |
156 | 0 | ReadField<ErrorPolicy_Igno>(temp, "projy", db); |
157 | 0 | dest.projy = static_cast<Assimp::Blender::MTex::Projection>(temp); |
158 | 0 | ReadField<ErrorPolicy_Igno>(temp, "projz", db); |
159 | 0 | dest.projz = static_cast<Assimp::Blender::MTex::Projection>(temp); |
160 | 0 | ReadField<ErrorPolicy_Igno>(dest.mapping, "mapping", db); |
161 | 0 | ReadFieldArray<ErrorPolicy_Igno>(dest.ofs, "ofs", db); |
162 | 0 | ReadFieldArray<ErrorPolicy_Igno>(dest.size, "size", db); |
163 | 0 | ReadField<ErrorPolicy_Igno>(dest.rot, "rot", db); |
164 | 0 | ReadField<ErrorPolicy_Igno>(dest.texflag, "texflag", db); |
165 | 0 | ReadField<ErrorPolicy_Igno>(dest.colormodel, "colormodel", db); |
166 | 0 | ReadField<ErrorPolicy_Igno>(dest.pmapto, "pmapto", db); |
167 | 0 | ReadField<ErrorPolicy_Igno>(dest.pmaptoneg, "pmaptoneg", db); |
168 | 0 | ReadField<ErrorPolicy_Warn>(dest.r, "r", db); |
169 | 0 | ReadField<ErrorPolicy_Warn>(dest.g, "g", db); |
170 | 0 | ReadField<ErrorPolicy_Warn>(dest.b, "b", db); |
171 | 0 | ReadField<ErrorPolicy_Warn>(dest.k, "k", db); |
172 | 0 | ReadField<ErrorPolicy_Igno>(dest.colspecfac, "colspecfac", db); |
173 | 0 | ReadField<ErrorPolicy_Igno>(dest.mirrfac, "mirrfac", db); |
174 | 0 | ReadField<ErrorPolicy_Igno>(dest.alphafac, "alphafac", db); |
175 | 0 | ReadField<ErrorPolicy_Igno>(dest.difffac, "difffac", db); |
176 | 0 | ReadField<ErrorPolicy_Igno>(dest.specfac, "specfac", db); |
177 | 0 | ReadField<ErrorPolicy_Igno>(dest.emitfac, "emitfac", db); |
178 | 0 | ReadField<ErrorPolicy_Igno>(dest.hardfac, "hardfac", db); |
179 | 0 | ReadField<ErrorPolicy_Igno>(dest.norfac, "norfac", db); |
180 | |
|
181 | 0 | db.reader->IncPtr(size); |
182 | 0 | } |
183 | | |
184 | | //-------------------------------------------------------------------------------- |
185 | | template <> |
186 | | void Structure ::Convert<TFace>( |
187 | | TFace &dest, |
188 | 0 | const FileDatabase &db) const { |
189 | |
|
190 | 0 | ReadFieldArray2<ErrorPolicy_Fail>(dest.uv, "uv", db); |
191 | 0 | ReadFieldArray<ErrorPolicy_Fail>(dest.col, "col", db); |
192 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
193 | 0 | ReadField<ErrorPolicy_Igno>(dest.mode, "mode", db); |
194 | 0 | ReadField<ErrorPolicy_Igno>(dest.tile, "tile", db); |
195 | 0 | ReadField<ErrorPolicy_Igno>(dest.unwrap, "unwrap", db); |
196 | |
|
197 | 0 | db.reader->IncPtr(size); |
198 | 0 | } |
199 | | |
200 | | //-------------------------------------------------------------------------------- |
201 | | template <> |
202 | | void Structure ::Convert<SubsurfModifierData>( |
203 | | SubsurfModifierData &dest, |
204 | 0 | const FileDatabase &db) const { |
205 | |
|
206 | 0 | ReadField<ErrorPolicy_Fail>(dest.modifier, "modifier", db); |
207 | 0 | ReadField<ErrorPolicy_Warn>(dest.subdivType, "subdivType", db); |
208 | 0 | ReadField<ErrorPolicy_Fail>(dest.levels, "levels", db); |
209 | 0 | ReadField<ErrorPolicy_Igno>(dest.renderLevels, "renderLevels", db); |
210 | 0 | ReadField<ErrorPolicy_Igno>(dest.flags, "flags", db); |
211 | |
|
212 | 0 | db.reader->IncPtr(size); |
213 | 0 | } |
214 | | |
215 | | //-------------------------------------------------------------------------------- |
216 | | template <> |
217 | | void Structure ::Convert<MFace>( |
218 | | MFace &dest, |
219 | 0 | const FileDatabase &db) const { |
220 | |
|
221 | 0 | ReadField<ErrorPolicy_Fail>(dest.v1, "v1", db); |
222 | 0 | ReadField<ErrorPolicy_Fail>(dest.v2, "v2", db); |
223 | 0 | ReadField<ErrorPolicy_Fail>(dest.v3, "v3", db); |
224 | 0 | ReadField<ErrorPolicy_Fail>(dest.v4, "v4", db); |
225 | 0 | ReadField<ErrorPolicy_Fail>(dest.mat_nr, "mat_nr", db); |
226 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
227 | |
|
228 | 0 | db.reader->IncPtr(size); |
229 | 0 | } |
230 | | |
231 | | //-------------------------------------------------------------------------------- |
232 | | template <> |
233 | | void Structure ::Convert<Lamp>( |
234 | | Lamp &dest, |
235 | 0 | const FileDatabase &db) const { |
236 | |
|
237 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
238 | 0 | int temp = 0; |
239 | 0 | ReadField<ErrorPolicy_Fail>(temp, "type", db); |
240 | 0 | dest.type = static_cast<Assimp::Blender::Lamp::Type>(temp); |
241 | 0 | ReadField<ErrorPolicy_Igno>(dest.flags, "flag", db); |
242 | 0 | ReadField<ErrorPolicy_Igno>(dest.colormodel, "colormodel", db); |
243 | 0 | ReadField<ErrorPolicy_Igno>(dest.totex, "totex", db); |
244 | 0 | ReadField<ErrorPolicy_Warn>(dest.r, "r", db); |
245 | 0 | ReadField<ErrorPolicy_Warn>(dest.g, "g", db); |
246 | 0 | ReadField<ErrorPolicy_Warn>(dest.b, "b", db); |
247 | 0 | ReadField<ErrorPolicy_Warn>(dest.k, "k", db); |
248 | 0 | ReadField<ErrorPolicy_Igno>(dest.energy, "energy", db); |
249 | 0 | ReadField<ErrorPolicy_Warn>(dest.dist, "dist", db); |
250 | 0 | ReadField<ErrorPolicy_Igno>(dest.spotsize, "spotsize", db); |
251 | 0 | ReadField<ErrorPolicy_Igno>(dest.spotblend, "spotblend", db); |
252 | 0 | ReadField<ErrorPolicy_Warn>(dest.constant_coefficient, "coeff_const", db); |
253 | 0 | ReadField<ErrorPolicy_Warn>(dest.linear_coefficient, "coeff_lin", db); |
254 | 0 | ReadField<ErrorPolicy_Warn>(dest.quadratic_coefficient, "coeff_quad", db); |
255 | 0 | ReadField<ErrorPolicy_Igno>(dest.att1, "att1", db); |
256 | 0 | ReadField<ErrorPolicy_Igno>(dest.att2, "att2", db); |
257 | 0 | ReadField<ErrorPolicy_Igno>(temp, "falloff_type", db); |
258 | 0 | dest.falloff_type = static_cast<Assimp::Blender::Lamp::FalloffType>(temp); |
259 | 0 | ReadField<ErrorPolicy_Igno>(dest.sun_brightness, "sun_brightness", db); |
260 | 0 | ReadField<ErrorPolicy_Igno>(dest.area_size, "area_size", db); |
261 | 0 | ReadField<ErrorPolicy_Igno>(dest.area_sizey, "area_sizey", db); |
262 | 0 | ReadField<ErrorPolicy_Igno>(dest.area_sizez, "area_sizez", db); |
263 | 0 | ReadField<ErrorPolicy_Igno>(dest.area_shape, "area_shape", db); |
264 | |
|
265 | 0 | db.reader->IncPtr(size); |
266 | 0 | } |
267 | | |
268 | | //-------------------------------------------------------------------------------- |
269 | | template <> |
270 | | void Structure ::Convert<MDeformWeight>( |
271 | | MDeformWeight &dest, |
272 | 0 | const FileDatabase &db) const { |
273 | |
|
274 | 0 | ReadField<ErrorPolicy_Fail>(dest.def_nr, "def_nr", db); |
275 | 0 | ReadField<ErrorPolicy_Fail>(dest.weight, "weight", db); |
276 | |
|
277 | 0 | db.reader->IncPtr(size); |
278 | 0 | } |
279 | | |
280 | | //-------------------------------------------------------------------------------- |
281 | | template <> |
282 | | void Structure ::Convert<PackedFile>( |
283 | | PackedFile &dest, |
284 | 0 | const FileDatabase &db) const { |
285 | |
|
286 | 0 | ReadField<ErrorPolicy_Warn>(dest.size, "size", db); |
287 | 0 | ReadField<ErrorPolicy_Warn>(dest.seek, "seek", db); |
288 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.data, "*data", db); |
289 | |
|
290 | 0 | db.reader->IncPtr(size); |
291 | 0 | } |
292 | | |
293 | | //-------------------------------------------------------------------------------- |
294 | | template <> |
295 | | void Structure ::Convert<Base>( |
296 | | Base &dest, |
297 | 0 | const FileDatabase &db) const { |
298 | | // note: as per https://github.com/assimp/assimp/issues/128, |
299 | | // reading the Object linked list recursively is prone to stack overflow. |
300 | | // This structure converter is therefore a hand-written exception that |
301 | | // does it iteratively. |
302 | |
|
303 | 0 | const int initial_pos = db.reader->GetCurrentPos(); |
304 | |
|
305 | 0 | std::pair<Base *, int> todo = std::make_pair(&dest, initial_pos); |
306 | 0 | for (;;) { |
307 | |
|
308 | 0 | Base &cur_dest = *todo.first; |
309 | 0 | db.reader->SetCurrentPos(todo.second); |
310 | | |
311 | | // we know that this is a double-linked, circular list which we never |
312 | | // traverse backwards, so don't bother resolving the back links. |
313 | 0 | cur_dest.prev = nullptr; |
314 | |
|
315 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(cur_dest.object, "*object", db); |
316 | | |
317 | | // the return value of ReadFieldPtr indicates whether the object |
318 | | // was already cached. In this case, we don't need to resolve |
319 | | // it again. |
320 | 0 | if (!ReadFieldPtr<ErrorPolicy_Warn>(cur_dest.next, "*next", db, true) && cur_dest.next) { |
321 | 0 | todo = std::make_pair(&*cur_dest.next, db.reader->GetCurrentPos()); |
322 | 0 | continue; |
323 | 0 | } |
324 | 0 | break; |
325 | 0 | } |
326 | |
|
327 | 0 | db.reader->SetCurrentPos(initial_pos + size); |
328 | 0 | } |
329 | | |
330 | | //-------------------------------------------------------------------------------- |
331 | | template <> |
332 | | void Structure ::Convert<MTFace>( |
333 | | MTFace &dest, |
334 | 0 | const FileDatabase &db) const { |
335 | |
|
336 | 0 | ReadFieldArray2<ErrorPolicy_Fail>(dest.uv, "uv", db); |
337 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
338 | 0 | ReadField<ErrorPolicy_Igno>(dest.mode, "mode", db); |
339 | 0 | ReadField<ErrorPolicy_Igno>(dest.tile, "tile", db); |
340 | 0 | ReadField<ErrorPolicy_Igno>(dest.unwrap, "unwrap", db); |
341 | |
|
342 | 0 | db.reader->IncPtr(size); |
343 | 0 | } |
344 | | |
345 | | //-------------------------------------------------------------------------------- |
346 | | template <> |
347 | | void Structure ::Convert<Material>( |
348 | | Material &dest, |
349 | 0 | const FileDatabase &db) const { |
350 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
351 | 0 | ReadField<ErrorPolicy_Warn>(dest.r, "r", db); |
352 | 0 | ReadField<ErrorPolicy_Warn>(dest.g, "g", db); |
353 | 0 | ReadField<ErrorPolicy_Warn>(dest.b, "b", db); |
354 | 0 | ReadField<ErrorPolicy_Warn>(dest.specr, "specr", db); |
355 | 0 | ReadField<ErrorPolicy_Warn>(dest.specg, "specg", db); |
356 | 0 | ReadField<ErrorPolicy_Warn>(dest.specb, "specb", db); |
357 | 0 | ReadField<ErrorPolicy_Igno>(dest.har, "har", db); |
358 | 0 | ReadField<ErrorPolicy_Warn>(dest.ambr, "ambr", db); |
359 | 0 | ReadField<ErrorPolicy_Warn>(dest.ambg, "ambg", db); |
360 | 0 | ReadField<ErrorPolicy_Warn>(dest.ambb, "ambb", db); |
361 | 0 | ReadField<ErrorPolicy_Igno>(dest.mirr, "mirr", db); |
362 | 0 | ReadField<ErrorPolicy_Igno>(dest.mirg, "mirg", db); |
363 | 0 | ReadField<ErrorPolicy_Igno>(dest.mirb, "mirb", db); |
364 | 0 | ReadField<ErrorPolicy_Warn>(dest.emit, "emit", db); |
365 | 0 | ReadField<ErrorPolicy_Igno>(dest.ray_mirror, "ray_mirror", db); |
366 | 0 | ReadField<ErrorPolicy_Warn>(dest.alpha, "alpha", db); |
367 | 0 | ReadField<ErrorPolicy_Igno>(dest.ref, "ref", db); |
368 | 0 | ReadField<ErrorPolicy_Igno>(dest.translucency, "translucency", db); |
369 | 0 | ReadField<ErrorPolicy_Igno>(dest.mode, "mode", db); |
370 | 0 | ReadField<ErrorPolicy_Igno>(dest.roughness, "roughness", db); |
371 | 0 | ReadField<ErrorPolicy_Igno>(dest.darkness, "darkness", db); |
372 | 0 | ReadField<ErrorPolicy_Igno>(dest.refrac, "refrac", db); |
373 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.group, "*group", db); |
374 | 0 | ReadField<ErrorPolicy_Warn>(dest.diff_shader, "diff_shader", db); |
375 | 0 | ReadField<ErrorPolicy_Warn>(dest.spec_shader, "spec_shader", db); |
376 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mtex, "*mtex", db); |
377 | |
|
378 | 0 | ReadField<ErrorPolicy_Igno>(dest.amb, "amb", db); |
379 | 0 | ReadField<ErrorPolicy_Igno>(dest.ang, "ang", db); |
380 | 0 | ReadField<ErrorPolicy_Igno>(dest.spectra, "spectra", db); |
381 | 0 | ReadField<ErrorPolicy_Igno>(dest.spec, "spec", db); |
382 | 0 | ReadField<ErrorPolicy_Igno>(dest.zoffs, "zoffs", db); |
383 | 0 | ReadField<ErrorPolicy_Igno>(dest.add, "add", db); |
384 | 0 | ReadField<ErrorPolicy_Igno>(dest.fresnel_mir, "fresnel_mir", db); |
385 | 0 | ReadField<ErrorPolicy_Igno>(dest.fresnel_mir_i, "fresnel_mir_i", db); |
386 | 0 | ReadField<ErrorPolicy_Igno>(dest.fresnel_tra, "fresnel_tra", db); |
387 | 0 | ReadField<ErrorPolicy_Igno>(dest.fresnel_tra_i, "fresnel_tra_i", db); |
388 | 0 | ReadField<ErrorPolicy_Igno>(dest.filter, "filter", db); |
389 | 0 | ReadField<ErrorPolicy_Igno>(dest.tx_limit, "tx_limit", db); |
390 | 0 | ReadField<ErrorPolicy_Igno>(dest.tx_falloff, "tx_falloff", db); |
391 | 0 | ReadField<ErrorPolicy_Igno>(dest.gloss_mir, "gloss_mir", db); |
392 | 0 | ReadField<ErrorPolicy_Igno>(dest.gloss_tra, "gloss_tra", db); |
393 | 0 | ReadField<ErrorPolicy_Igno>(dest.adapt_thresh_mir, "adapt_thresh_mir", db); |
394 | 0 | ReadField<ErrorPolicy_Igno>(dest.adapt_thresh_tra, "adapt_thresh_tra", db); |
395 | 0 | ReadField<ErrorPolicy_Igno>(dest.aniso_gloss_mir, "aniso_gloss_mir", db); |
396 | 0 | ReadField<ErrorPolicy_Igno>(dest.dist_mir, "dist_mir", db); |
397 | 0 | ReadField<ErrorPolicy_Igno>(dest.hasize, "hasize", db); |
398 | 0 | ReadField<ErrorPolicy_Igno>(dest.flaresize, "flaresize", db); |
399 | 0 | ReadField<ErrorPolicy_Igno>(dest.subsize, "subsize", db); |
400 | 0 | ReadField<ErrorPolicy_Igno>(dest.flareboost, "flareboost", db); |
401 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_sta, "strand_sta", db); |
402 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_end, "strand_end", db); |
403 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_ease, "strand_ease", db); |
404 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_surfnor, "strand_surfnor", db); |
405 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_min, "strand_min", db); |
406 | 0 | ReadField<ErrorPolicy_Igno>(dest.strand_widthfade, "strand_widthfade", db); |
407 | 0 | ReadField<ErrorPolicy_Igno>(dest.sbias, "sbias", db); |
408 | 0 | ReadField<ErrorPolicy_Igno>(dest.lbias, "lbias", db); |
409 | 0 | ReadField<ErrorPolicy_Igno>(dest.shad_alpha, "shad_alpha", db); |
410 | 0 | ReadField<ErrorPolicy_Igno>(dest.param, "param", db); |
411 | 0 | ReadField<ErrorPolicy_Igno>(dest.rms, "rms", db); |
412 | 0 | ReadField<ErrorPolicy_Igno>(dest.rampfac_col, "rampfac_col", db); |
413 | 0 | ReadField<ErrorPolicy_Igno>(dest.rampfac_spec, "rampfac_spec", db); |
414 | 0 | ReadField<ErrorPolicy_Igno>(dest.friction, "friction", db); |
415 | 0 | ReadField<ErrorPolicy_Igno>(dest.fh, "fh", db); |
416 | 0 | ReadField<ErrorPolicy_Igno>(dest.reflect, "reflect", db); |
417 | 0 | ReadField<ErrorPolicy_Igno>(dest.fhdist, "fhdist", db); |
418 | 0 | ReadField<ErrorPolicy_Igno>(dest.xyfrict, "xyfrict", db); |
419 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_radius, "sss_radius", db); |
420 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_col, "sss_col", db); |
421 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_error, "sss_error", db); |
422 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_scale, "sss_scale", db); |
423 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_ior, "sss_ior", db); |
424 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_colfac, "sss_colfac", db); |
425 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_texfac, "sss_texfac", db); |
426 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_front, "sss_front", db); |
427 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_back, "sss_back", db); |
428 | |
|
429 | 0 | ReadField<ErrorPolicy_Igno>(dest.material_type, "material_type", db); |
430 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
431 | 0 | ReadField<ErrorPolicy_Igno>(dest.ray_depth, "ray_depth", db); |
432 | 0 | ReadField<ErrorPolicy_Igno>(dest.ray_depth_tra, "ray_depth_tra", db); |
433 | 0 | ReadField<ErrorPolicy_Igno>(dest.samp_gloss_mir, "samp_gloss_mir", db); |
434 | 0 | ReadField<ErrorPolicy_Igno>(dest.samp_gloss_tra, "samp_gloss_tra", db); |
435 | 0 | ReadField<ErrorPolicy_Igno>(dest.fadeto_mir, "fadeto_mir", db); |
436 | 0 | ReadField<ErrorPolicy_Igno>(dest.shade_flag, "shade_flag", db); |
437 | 0 | ReadField<ErrorPolicy_Igno>(dest.flarec, "flarec", db); |
438 | 0 | ReadField<ErrorPolicy_Igno>(dest.starc, "starc", db); |
439 | 0 | ReadField<ErrorPolicy_Igno>(dest.linec, "linec", db); |
440 | 0 | ReadField<ErrorPolicy_Igno>(dest.ringc, "ringc", db); |
441 | 0 | ReadField<ErrorPolicy_Igno>(dest.pr_lamp, "pr_lamp", db); |
442 | 0 | ReadField<ErrorPolicy_Igno>(dest.pr_texture, "pr_texture", db); |
443 | 0 | ReadField<ErrorPolicy_Igno>(dest.ml_flag, "ml_flag", db); |
444 | 0 | ReadField<ErrorPolicy_Igno>(dest.diff_shader, "diff_shader", db); |
445 | 0 | ReadField<ErrorPolicy_Igno>(dest.spec_shader, "spec_shader", db); |
446 | 0 | ReadField<ErrorPolicy_Igno>(dest.texco, "texco", db); |
447 | 0 | ReadField<ErrorPolicy_Igno>(dest.mapto, "mapto", db); |
448 | 0 | ReadField<ErrorPolicy_Igno>(dest.ramp_show, "ramp_show", db); |
449 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad3, "pad3", db); |
450 | 0 | ReadField<ErrorPolicy_Igno>(dest.dynamode, "dynamode", db); |
451 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad2, "pad2", db); |
452 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_flag, "sss_flag", db); |
453 | 0 | ReadField<ErrorPolicy_Igno>(dest.sss_preset, "sss_preset", db); |
454 | 0 | ReadField<ErrorPolicy_Igno>(dest.shadowonly_flag, "shadowonly_flag", db); |
455 | 0 | ReadField<ErrorPolicy_Igno>(dest.index, "index", db); |
456 | 0 | ReadField<ErrorPolicy_Igno>(dest.vcol_alpha, "vcol_alpha", db); |
457 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad4, "pad4", db); |
458 | |
|
459 | 0 | ReadField<ErrorPolicy_Igno>(dest.seed1, "seed1", db); |
460 | 0 | ReadField<ErrorPolicy_Igno>(dest.seed2, "seed2", db); |
461 | |
|
462 | 0 | db.reader->IncPtr(size); |
463 | 0 | } |
464 | | |
465 | | //-------------------------------------------------------------------------------- |
466 | | template <> |
467 | | void Structure ::Convert<MTexPoly>( |
468 | | MTexPoly &dest, |
469 | 0 | const FileDatabase &db) const { |
470 | |
|
471 | 0 | { |
472 | 0 | std::shared_ptr<Image> tpage; |
473 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(tpage, "*tpage", db); |
474 | 0 | dest.tpage = tpage.get(); |
475 | 0 | } |
476 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
477 | 0 | ReadField<ErrorPolicy_Igno>(dest.transp, "transp", db); |
478 | 0 | ReadField<ErrorPolicy_Igno>(dest.mode, "mode", db); |
479 | 0 | ReadField<ErrorPolicy_Igno>(dest.tile, "tile", db); |
480 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad, "pad", db); |
481 | |
|
482 | 0 | db.reader->IncPtr(size); |
483 | 0 | } |
484 | | |
485 | | //-------------------------------------------------------------------------------- |
486 | | template <> |
487 | | void Structure ::Convert<Mesh>( |
488 | | Mesh &dest, |
489 | 0 | const FileDatabase &db) const { |
490 | |
|
491 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
492 | 0 | ReadField<ErrorPolicy_Fail>(dest.totface, "totface", db); |
493 | 0 | ReadField<ErrorPolicy_Fail>(dest.totedge, "totedge", db); |
494 | 0 | ReadField<ErrorPolicy_Fail>(dest.totvert, "totvert", db); |
495 | 0 | ReadField<ErrorPolicy_Igno>(dest.totloop, "totloop", db); |
496 | 0 | ReadField<ErrorPolicy_Igno>(dest.totpoly, "totpoly", db); |
497 | 0 | ReadField<ErrorPolicy_Igno>(dest.subdiv, "subdiv", db); |
498 | 0 | ReadField<ErrorPolicy_Igno>(dest.subdivr, "subdivr", db); |
499 | 0 | ReadField<ErrorPolicy_Igno>(dest.subsurftype, "subsurftype", db); |
500 | 0 | ReadField<ErrorPolicy_Igno>(dest.smoothresh, "smoothresh", db); |
501 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.mface, "*mface", db); |
502 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mtface, "*mtface", db); |
503 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.tface, "*tface", db); |
504 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.mvert, "*mvert", db); |
505 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.medge, "*medge", db); |
506 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mloop, "*mloop", db); |
507 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopuv, "*mloopuv", db); |
508 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopcol, "*mloopcol", db); |
509 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mpoly, "*mpoly", db); |
510 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mtpoly, "*mtpoly", db); |
511 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.dvert, "*dvert", db); |
512 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.mcol, "*mcol", db); |
513 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.mat, "**mat", db); |
514 | |
|
515 | 0 | ReadField<ErrorPolicy_Igno>(dest.vdata, "vdata", db); |
516 | 0 | ReadField<ErrorPolicy_Igno>(dest.edata, "edata", db); |
517 | 0 | ReadField<ErrorPolicy_Igno>(dest.fdata, "fdata", db); |
518 | 0 | ReadField<ErrorPolicy_Igno>(dest.pdata, "pdata", db); |
519 | 0 | ReadField<ErrorPolicy_Warn>(dest.ldata, "ldata", db); |
520 | |
|
521 | 0 | db.reader->IncPtr(size); |
522 | 0 | } |
523 | | |
524 | | //-------------------------------------------------------------------------------- |
525 | | template <> |
526 | | void Structure ::Convert<MDeformVert>( |
527 | | MDeformVert &dest, |
528 | 0 | const FileDatabase &db) const { |
529 | |
|
530 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.dw, "*dw", db); |
531 | 0 | ReadField<ErrorPolicy_Igno>(dest.totweight, "totweight", db); |
532 | |
|
533 | 0 | db.reader->IncPtr(size); |
534 | 0 | } |
535 | | |
536 | | //-------------------------------------------------------------------------------- |
537 | | template <> |
538 | | void Structure ::Convert<World>( |
539 | | World &dest, |
540 | 0 | const FileDatabase &db) const { |
541 | |
|
542 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
543 | |
|
544 | 0 | db.reader->IncPtr(size); |
545 | 0 | } |
546 | | |
547 | | //-------------------------------------------------------------------------------- |
548 | | template <> |
549 | | void Structure ::Convert<MLoopCol>( |
550 | | MLoopCol &dest, |
551 | 0 | const FileDatabase &db) const { |
552 | |
|
553 | 0 | ReadField<ErrorPolicy_Igno>(dest.r, "r", db); |
554 | 0 | ReadField<ErrorPolicy_Igno>(dest.g, "g", db); |
555 | 0 | ReadField<ErrorPolicy_Igno>(dest.b, "b", db); |
556 | 0 | ReadField<ErrorPolicy_Igno>(dest.a, "a", db); |
557 | |
|
558 | 0 | db.reader->IncPtr(size); |
559 | 0 | } |
560 | | |
561 | | //-------------------------------------------------------------------------------- |
562 | | template <> |
563 | | void Structure ::Convert<MVert>( |
564 | | MVert &dest, |
565 | 0 | const FileDatabase &db) const { |
566 | |
|
567 | 0 | ReadFieldArray<ErrorPolicy_Fail>(dest.co, "co", db); |
568 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.no, "no", db); |
569 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
570 | | //ReadField<ErrorPolicy_Warn>(dest.mat_nr,"mat_nr",db); |
571 | 0 | ReadField<ErrorPolicy_Igno>(dest.bweight, "bweight", db); |
572 | |
|
573 | 0 | db.reader->IncPtr(size); |
574 | 0 | } |
575 | | |
576 | | //-------------------------------------------------------------------------------- |
577 | | template <> |
578 | | void Structure ::Convert<MEdge>( |
579 | | MEdge &dest, |
580 | 0 | const FileDatabase &db) const { |
581 | |
|
582 | 0 | ReadField<ErrorPolicy_Fail>(dest.v1, "v1", db); |
583 | 0 | ReadField<ErrorPolicy_Fail>(dest.v2, "v2", db); |
584 | 0 | ReadField<ErrorPolicy_Igno>(dest.crease, "crease", db); |
585 | 0 | ReadField<ErrorPolicy_Igno>(dest.bweight, "bweight", db); |
586 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
587 | |
|
588 | 0 | db.reader->IncPtr(size); |
589 | 0 | } |
590 | | |
591 | | //-------------------------------------------------------------------------------- |
592 | | template <> |
593 | | void Structure ::Convert<MLoopUV>( |
594 | | MLoopUV &dest, |
595 | 0 | const FileDatabase &db) const { |
596 | |
|
597 | 0 | ReadFieldArray<ErrorPolicy_Igno>(dest.uv, "uv", db); |
598 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
599 | |
|
600 | 0 | db.reader->IncPtr(size); |
601 | 0 | } |
602 | | |
603 | | //-------------------------------------------------------------------------------- |
604 | | template <> |
605 | | void Structure ::Convert<GroupObject>( |
606 | | GroupObject &dest, |
607 | 0 | const FileDatabase &db) const { |
608 | |
|
609 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.prev, "*prev", db); |
610 | 0 | ReadFieldPtr<ErrorPolicy_Fail>(dest.next, "*next", db); |
611 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.ob, "*ob", db); |
612 | |
|
613 | 0 | db.reader->IncPtr(size); |
614 | 0 | } |
615 | | |
616 | | //-------------------------------------------------------------------------------- |
617 | | template <> |
618 | | void Structure ::Convert<ListBase>( |
619 | | ListBase &dest, |
620 | 0 | const FileDatabase &db) const { |
621 | |
|
622 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.first, "*first", db); |
623 | 0 | std::shared_ptr<ElemBase> last; |
624 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(last, "*last", db); |
625 | 0 | dest.last = last; |
626 | |
|
627 | 0 | db.reader->IncPtr(size); |
628 | 0 | } |
629 | | |
630 | | //-------------------------------------------------------------------------------- |
631 | | template <> |
632 | | void Structure ::Convert<MLoop>( |
633 | | MLoop &dest, |
634 | 0 | const FileDatabase &db) const { |
635 | |
|
636 | 0 | ReadField<ErrorPolicy_Igno>(dest.v, "v", db); |
637 | 0 | ReadField<ErrorPolicy_Igno>(dest.e, "e", db); |
638 | |
|
639 | 0 | db.reader->IncPtr(size); |
640 | 0 | } |
641 | | |
642 | | //-------------------------------------------------------------------------------- |
643 | | template <> |
644 | | void Structure ::Convert<ModifierData>( |
645 | | ModifierData &dest, |
646 | 0 | const FileDatabase &db) const { |
647 | |
|
648 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.next, "*next", db); |
649 | 0 | std::shared_ptr<ElemBase> prev; |
650 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(prev, "*prev", db); |
651 | 0 | dest.prev = prev; |
652 | 0 | ReadField<ErrorPolicy_Igno>(dest.type, "type", db); |
653 | 0 | ReadField<ErrorPolicy_Igno>(dest.mode, "mode", db); |
654 | 0 | ReadFieldArray<ErrorPolicy_Igno>(dest.name, "name", db); |
655 | |
|
656 | 0 | db.reader->IncPtr(size); |
657 | 0 | } |
658 | | |
659 | | //-------------------------------------------------------------------------------- |
660 | | template <> |
661 | | void Structure ::Convert<ID>( |
662 | | ID &dest, |
663 | 0 | const FileDatabase &db) const { |
664 | |
|
665 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.name, "name", db); |
666 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
667 | |
|
668 | 0 | db.reader->IncPtr(size); |
669 | 0 | } |
670 | | |
671 | | //-------------------------------------------------------------------------------- |
672 | | template <> |
673 | | void Structure ::Convert<MCol>( |
674 | | MCol &dest, |
675 | 0 | const FileDatabase &db) const { |
676 | |
|
677 | 0 | ReadField<ErrorPolicy_Fail>(dest.r, "r", db); |
678 | 0 | ReadField<ErrorPolicy_Fail>(dest.g, "g", db); |
679 | 0 | ReadField<ErrorPolicy_Fail>(dest.b, "b", db); |
680 | 0 | ReadField<ErrorPolicy_Fail>(dest.a, "a", db); |
681 | |
|
682 | 0 | db.reader->IncPtr(size); |
683 | 0 | } |
684 | | |
685 | | //-------------------------------------------------------------------------------- |
686 | | template <> |
687 | | void Structure ::Convert<MPoly>( |
688 | | MPoly &dest, |
689 | 0 | const FileDatabase &db) const { |
690 | |
|
691 | 0 | ReadField<ErrorPolicy_Igno>(dest.loopstart, "loopstart", db); |
692 | 0 | ReadField<ErrorPolicy_Igno>(dest.totloop, "totloop", db); |
693 | 0 | ReadField<ErrorPolicy_Igno>(dest.mat_nr, "mat_nr", db); |
694 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
695 | |
|
696 | 0 | db.reader->IncPtr(size); |
697 | 0 | } |
698 | | |
699 | | //-------------------------------------------------------------------------------- |
700 | | template <> |
701 | | void Structure ::Convert<Scene>( |
702 | | Scene &dest, |
703 | 0 | const FileDatabase &db) const { |
704 | |
|
705 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
706 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.camera, "*camera", db); |
707 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.world, "*world", db); |
708 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.basact, "*basact", db); |
709 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.master_collection, "*master_collection", db); |
710 | 0 | ReadField<ErrorPolicy_Igno>(dest.base, "base", db); |
711 | |
|
712 | 0 | db.reader->IncPtr(size); |
713 | 0 | } |
714 | | |
715 | | //-------------------------------------------------------------------------------- |
716 | | template <> |
717 | | void Structure ::Convert<Library>( |
718 | | Library &dest, |
719 | 0 | const FileDatabase &db) const { |
720 | |
|
721 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
722 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.name, "name", db); |
723 | 0 | ReadFieldArray<ErrorPolicy_Fail>(dest.filename, "filename", db); |
724 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.parent, "*parent", db); |
725 | |
|
726 | 0 | db.reader->IncPtr(size); |
727 | 0 | } |
728 | | |
729 | | //-------------------------------------------------------------------------------- |
730 | | template <> |
731 | | void Structure ::Convert<Tex>( |
732 | | Tex &dest, |
733 | 0 | const FileDatabase &db) const { |
734 | 0 | short temp_short = 0; |
735 | 0 | ReadField<ErrorPolicy_Igno>(temp_short, "imaflag", db); |
736 | 0 | dest.imaflag = static_cast<Assimp::Blender::Tex::ImageFlags>(temp_short); |
737 | 0 | int temp = 0; |
738 | 0 | ReadField<ErrorPolicy_Fail>(temp, "type", db); |
739 | 0 | dest.type = static_cast<Assimp::Blender::Tex::Type>(temp); |
740 | 0 | ReadFieldPtr<ErrorPolicy_Warn>(dest.ima, "*ima", db); |
741 | |
|
742 | 0 | db.reader->IncPtr(size); |
743 | 0 | } |
744 | | |
745 | | //-------------------------------------------------------------------------------- |
746 | | template <> |
747 | | void Structure ::Convert<Camera>( |
748 | | Camera &dest, |
749 | 0 | const FileDatabase &db) const { |
750 | |
|
751 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
752 | 0 | int temp = 0; |
753 | 0 | ReadField<ErrorPolicy_Warn>(temp, "type", db); |
754 | 0 | dest.type = static_cast<Assimp::Blender::Camera::Type>(temp); |
755 | 0 | ReadField<ErrorPolicy_Warn>(temp, "flag", db); |
756 | 0 | dest.flag = static_cast<Assimp::Blender::Camera::Type>(temp); |
757 | 0 | ReadField<ErrorPolicy_Warn>(dest.lens, "lens", db); |
758 | 0 | ReadField<ErrorPolicy_Warn>(dest.sensor_x, "sensor_x", db); |
759 | 0 | ReadField<ErrorPolicy_Igno>(dest.clipsta, "clipsta", db); |
760 | 0 | ReadField<ErrorPolicy_Igno>(dest.clipend, "clipend", db); |
761 | |
|
762 | 0 | db.reader->IncPtr(size); |
763 | 0 | } |
764 | | |
765 | | //-------------------------------------------------------------------------------- |
766 | | template <> |
767 | | void Structure ::Convert<MirrorModifierData>( |
768 | | MirrorModifierData &dest, |
769 | 0 | const FileDatabase &db) const { |
770 | |
|
771 | 0 | ReadField<ErrorPolicy_Fail>(dest.modifier, "modifier", db); |
772 | 0 | ReadField<ErrorPolicy_Igno>(dest.axis, "axis", db); |
773 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
774 | 0 | ReadField<ErrorPolicy_Igno>(dest.tolerance, "tolerance", db); |
775 | 0 | std::shared_ptr<Object> mirror_ob; |
776 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(mirror_ob, "*mirror_ob", db); |
777 | 0 | dest.mirror_ob = mirror_ob; |
778 | |
|
779 | 0 | db.reader->IncPtr(size); |
780 | 0 | } |
781 | | |
782 | | //-------------------------------------------------------------------------------- |
783 | | template <> |
784 | | void Structure ::Convert<Image>( |
785 | | Image &dest, |
786 | 0 | const FileDatabase &db) const { |
787 | |
|
788 | 0 | ReadField<ErrorPolicy_Fail>(dest.id, "id", db); |
789 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.name, "name", db); |
790 | 0 | ReadField<ErrorPolicy_Igno>(dest.ok, "ok", db); |
791 | 0 | ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
792 | 0 | ReadField<ErrorPolicy_Igno>(dest.source, "source", db); |
793 | 0 | ReadField<ErrorPolicy_Igno>(dest.type, "type", db); |
794 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad, "pad", db); |
795 | 0 | ReadField<ErrorPolicy_Igno>(dest.pad1, "pad1", db); |
796 | 0 | ReadField<ErrorPolicy_Igno>(dest.lastframe, "lastframe", db); |
797 | 0 | ReadField<ErrorPolicy_Igno>(dest.tpageflag, "tpageflag", db); |
798 | 0 | ReadField<ErrorPolicy_Igno>(dest.totbind, "totbind", db); |
799 | 0 | ReadField<ErrorPolicy_Igno>(dest.xrep, "xrep", db); |
800 | 0 | ReadField<ErrorPolicy_Igno>(dest.yrep, "yrep", db); |
801 | 0 | ReadField<ErrorPolicy_Igno>(dest.twsta, "twsta", db); |
802 | 0 | ReadField<ErrorPolicy_Igno>(dest.twend, "twend", db); |
803 | 0 | ReadFieldPtr<ErrorPolicy_Igno>(dest.packedfile, "*packedfile", db); |
804 | 0 | ReadField<ErrorPolicy_Igno>(dest.lastupdate, "lastupdate", db); |
805 | 0 | ReadField<ErrorPolicy_Igno>(dest.lastused, "lastused", db); |
806 | 0 | ReadField<ErrorPolicy_Igno>(dest.animspeed, "animspeed", db); |
807 | 0 | ReadField<ErrorPolicy_Igno>(dest.gen_x, "gen_x", db); |
808 | 0 | ReadField<ErrorPolicy_Igno>(dest.gen_y, "gen_y", db); |
809 | 0 | ReadField<ErrorPolicy_Igno>(dest.gen_type, "gen_type", db); |
810 | |
|
811 | 0 | db.reader->IncPtr(size); |
812 | 0 | } |
813 | | |
814 | | //-------------------------------------------------------------------------------- |
815 | | template <> |
816 | | void Structure::Convert<CustomData>( |
817 | | CustomData &dest, |
818 | 0 | const FileDatabase &db) const { |
819 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.typemap, "typemap", db); |
820 | 0 | ReadField<ErrorPolicy_Warn>(dest.totlayer, "totlayer", db); |
821 | 0 | ReadField<ErrorPolicy_Warn>(dest.maxlayer, "maxlayer", db); |
822 | 0 | ReadField<ErrorPolicy_Warn>(dest.totsize, "totsize", db); |
823 | 0 | ReadFieldPtrVector<ErrorPolicy_Warn>(dest.layers, "*layers", db); |
824 | |
|
825 | 0 | db.reader->IncPtr(size); |
826 | 0 | } |
827 | | |
828 | | //-------------------------------------------------------------------------------- |
829 | | template <> |
830 | | void Structure::Convert<CustomDataLayer>( |
831 | | CustomDataLayer &dest, |
832 | 0 | const FileDatabase &db) const { |
833 | 0 | ReadField<ErrorPolicy_Fail>(dest.type, "type", db); |
834 | 0 | ReadField<ErrorPolicy_Fail>(dest.offset, "offset", db); |
835 | 0 | ReadField<ErrorPolicy_Fail>(dest.flag, "flag", db); |
836 | 0 | ReadField<ErrorPolicy_Fail>(dest.active, "active", db); |
837 | 0 | ReadField<ErrorPolicy_Fail>(dest.active_rnd, "active_rnd", db); |
838 | 0 | ReadField<ErrorPolicy_Warn>(dest.active_clone, "active_clone", db); |
839 | 0 | ReadField<ErrorPolicy_Warn>(dest.active_mask, "active_mask", db); |
840 | 0 | ReadField<ErrorPolicy_Warn>(dest.uid, "uid", db); |
841 | 0 | ReadFieldArray<ErrorPolicy_Warn>(dest.name, "name", db); |
842 | 0 | ReadCustomDataPtr<ErrorPolicy_Fail>(dest.data, dest.type, "*data", db); |
843 | |
|
844 | 0 | db.reader->IncPtr(size); |
845 | 0 | } |
846 | | |
847 | | //-------------------------------------------------------------------------------- |
848 | 0 | void DNA::RegisterConverters() { |
849 | |
|
850 | 0 | converters["Object"] = DNA::FactoryPair(&Structure::Allocate<Object>, &Structure::Convert<Object>); |
851 | 0 | converters["Group"] = DNA::FactoryPair(&Structure::Allocate<Group>, &Structure::Convert<Group>); |
852 | 0 | converters["MTex"] = DNA::FactoryPair(&Structure::Allocate<MTex>, &Structure::Convert<MTex>); |
853 | 0 | converters["TFace"] = DNA::FactoryPair(&Structure::Allocate<TFace>, &Structure::Convert<TFace>); |
854 | 0 | converters["SubsurfModifierData"] = DNA::FactoryPair(&Structure::Allocate<SubsurfModifierData>, &Structure::Convert<SubsurfModifierData>); |
855 | 0 | converters["MFace"] = DNA::FactoryPair(&Structure::Allocate<MFace>, &Structure::Convert<MFace>); |
856 | 0 | converters["Lamp"] = DNA::FactoryPair(&Structure::Allocate<Lamp>, &Structure::Convert<Lamp>); |
857 | 0 | converters["MDeformWeight"] = DNA::FactoryPair(&Structure::Allocate<MDeformWeight>, &Structure::Convert<MDeformWeight>); |
858 | 0 | converters["PackedFile"] = DNA::FactoryPair(&Structure::Allocate<PackedFile>, &Structure::Convert<PackedFile>); |
859 | 0 | converters["Base"] = DNA::FactoryPair(&Structure::Allocate<Base>, &Structure::Convert<Base>); |
860 | 0 | converters["MTFace"] = DNA::FactoryPair(&Structure::Allocate<MTFace>, &Structure::Convert<MTFace>); |
861 | 0 | converters["Material"] = DNA::FactoryPair(&Structure::Allocate<Material>, &Structure::Convert<Material>); |
862 | 0 | converters["MTexPoly"] = DNA::FactoryPair(&Structure::Allocate<MTexPoly>, &Structure::Convert<MTexPoly>); |
863 | 0 | converters["Mesh"] = DNA::FactoryPair(&Structure::Allocate<Mesh>, &Structure::Convert<Mesh>); |
864 | 0 | converters["MDeformVert"] = DNA::FactoryPair(&Structure::Allocate<MDeformVert>, &Structure::Convert<MDeformVert>); |
865 | 0 | converters["World"] = DNA::FactoryPair(&Structure::Allocate<World>, &Structure::Convert<World>); |
866 | 0 | converters["MLoopCol"] = DNA::FactoryPair(&Structure::Allocate<MLoopCol>, &Structure::Convert<MLoopCol>); |
867 | 0 | converters["MVert"] = DNA::FactoryPair(&Structure::Allocate<MVert>, &Structure::Convert<MVert>); |
868 | 0 | converters["MEdge"] = DNA::FactoryPair(&Structure::Allocate<MEdge>, &Structure::Convert<MEdge>); |
869 | 0 | converters["MLoopUV"] = DNA::FactoryPair(&Structure::Allocate<MLoopUV>, &Structure::Convert<MLoopUV>); |
870 | 0 | converters["GroupObject"] = DNA::FactoryPair(&Structure::Allocate<GroupObject>, &Structure::Convert<GroupObject>); |
871 | 0 | converters["ListBase"] = DNA::FactoryPair(&Structure::Allocate<ListBase>, &Structure::Convert<ListBase>); |
872 | 0 | converters["MLoop"] = DNA::FactoryPair(&Structure::Allocate<MLoop>, &Structure::Convert<MLoop>); |
873 | 0 | converters["ModifierData"] = DNA::FactoryPair(&Structure::Allocate<ModifierData>, &Structure::Convert<ModifierData>); |
874 | 0 | converters["ID"] = DNA::FactoryPair(&Structure::Allocate<ID>, &Structure::Convert<ID>); |
875 | 0 | converters["MCol"] = DNA::FactoryPair(&Structure::Allocate<MCol>, &Structure::Convert<MCol>); |
876 | 0 | converters["MPoly"] = DNA::FactoryPair(&Structure::Allocate<MPoly>, &Structure::Convert<MPoly>); |
877 | 0 | converters["Scene"] = DNA::FactoryPair(&Structure::Allocate<Scene>, &Structure::Convert<Scene>); |
878 | 0 | converters["Library"] = DNA::FactoryPair(&Structure::Allocate<Library>, &Structure::Convert<Library>); |
879 | 0 | converters["Tex"] = DNA::FactoryPair(&Structure::Allocate<Tex>, &Structure::Convert<Tex>); |
880 | 0 | converters["Camera"] = DNA::FactoryPair(&Structure::Allocate<Camera>, &Structure::Convert<Camera>); |
881 | 0 | converters["MirrorModifierData"] = DNA::FactoryPair(&Structure::Allocate<MirrorModifierData>, &Structure::Convert<MirrorModifierData>); |
882 | 0 | converters["Image"] = DNA::FactoryPair(&Structure::Allocate<Image>, &Structure::Convert<Image>); |
883 | 0 | converters["CustomData"] = DNA::FactoryPair(&Structure::Allocate<CustomData>, &Structure::Convert<CustomData>); |
884 | 0 | converters["CustomDataLayer"] = DNA::FactoryPair(&Structure::Allocate<CustomDataLayer>, &Structure::Convert<CustomDataLayer>); |
885 | 0 | converters["Collection"] = DNA::FactoryPair(&Structure::Allocate<Collection>, &Structure::Convert<Collection>); |
886 | 0 | converters["CollectionChild"] = DNA::FactoryPair(&Structure::Allocate<CollectionChild>, &Structure::Convert<CollectionChild>); |
887 | 0 | converters["CollectionObject"] = DNA::FactoryPair(&Structure::Allocate<CollectionObject>, &Structure::Convert<CollectionObject>); |
888 | 0 | } |
889 | | |
890 | | } // namespace Blender |
891 | | } //namespace Assimp |
892 | | |
893 | | #endif // ASSIMP_BUILD_NO_BLEND_IMPORTER |