Coverage Report

Created: 2025-11-11 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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