| /* |
| Open Asset Import Library (ASSIMP) |
| ---------------------------------------------------------------------- |
| |
| Copyright (c) 2006-2016, ASSIMP Development Team |
| All rights reserved. |
| |
| Redistribution and use of this software in source and binary forms, |
| with or without modification, are permitted provided that the |
| following conditions are met: |
| |
| * Redistributions of source code must retain the above |
| copyright notice, this list of conditions and the |
| following disclaimer. |
| |
| * Redistributions in binary form must reproduce the above |
| copyright notice, this list of conditions and the |
| following disclaimer in the documentation and/or other |
| materials provided with the distribution. |
| |
| * Neither the name of the ASSIMP team, nor the names of its |
| contributors may be used to endorse or promote products |
| derived from this software without specific prior |
| written permission of the ASSIMP Development Team. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| ---------------------------------------------------------------------- |
| */ |
| |
| /** @file BlenderScene.cpp |
| * @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py |
| */ |
| |
| #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER |
| |
| #include "BlenderScene.h" |
| #include "BlenderSceneGen.h" |
| #include "BlenderDNA.h" |
| |
| using namespace Assimp; |
| using namespace Assimp::Blender; |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Object> ( |
| Object& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| int temp = 0; |
| ReadField<ErrorPolicy_Fail>(temp,"type",db); |
| dest.type = static_cast<Assimp::Blender::Object::Type>(temp); |
| ReadFieldArray2<ErrorPolicy_Warn>(dest.obmat,"obmat",db); |
| ReadFieldArray2<ErrorPolicy_Warn>(dest.parentinv,"parentinv",db); |
| ReadFieldArray<ErrorPolicy_Warn>(dest.parsubstr,"parsubstr",db); |
| { |
| std::shared_ptr<Object> parent; |
| ReadFieldPtr<ErrorPolicy_Warn>(parent,"*parent",db); |
| dest.parent = parent.get(); |
| } |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.track,"*track",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy,"*proxy",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_from,"*proxy_from",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_group,"*proxy_group",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.dup_group,"*dup_group",db); |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.data,"*data",db); |
| ReadField<ErrorPolicy_Igno>(dest.modifiers,"modifiers",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Group> ( |
| Group& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadField<ErrorPolicy_Igno>(dest.layer,"layer",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.gobject,"*gobject",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MTex> ( |
| MTex& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| int temp_short = 0; |
| ReadField<ErrorPolicy_Igno>(temp_short,"mapto",db); |
| dest.mapto = static_cast<Assimp::Blender::MTex::MapType>(temp_short); |
| int temp = 0; |
| ReadField<ErrorPolicy_Igno>(temp,"blendtype",db); |
| dest.blendtype = static_cast<Assimp::Blender::MTex::BlendType>(temp); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.object,"*object",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.tex,"*tex",db); |
| ReadFieldArray<ErrorPolicy_Igno>(dest.uvname,"uvname",db); |
| ReadField<ErrorPolicy_Igno>(temp,"projx",db); |
| dest.projx = static_cast<Assimp::Blender::MTex::Projection>(temp); |
| ReadField<ErrorPolicy_Igno>(temp,"projy",db); |
| dest.projy = static_cast<Assimp::Blender::MTex::Projection>(temp); |
| ReadField<ErrorPolicy_Igno>(temp,"projz",db); |
| dest.projx = static_cast<Assimp::Blender::MTex::Projection>(temp); |
| ReadField<ErrorPolicy_Igno>(dest.mapping,"mapping",db); |
| ReadFieldArray<ErrorPolicy_Igno>(dest.ofs,"ofs",db); |
| ReadFieldArray<ErrorPolicy_Igno>(dest.size,"size",db); |
| ReadField<ErrorPolicy_Igno>(dest.rot,"rot",db); |
| ReadField<ErrorPolicy_Igno>(dest.texflag,"texflag",db); |
| ReadField<ErrorPolicy_Igno>(dest.colormodel,"colormodel",db); |
| ReadField<ErrorPolicy_Igno>(dest.pmapto,"pmapto",db); |
| ReadField<ErrorPolicy_Igno>(dest.pmaptoneg,"pmaptoneg",db); |
| ReadField<ErrorPolicy_Warn>(dest.r,"r",db); |
| ReadField<ErrorPolicy_Warn>(dest.g,"g",db); |
| ReadField<ErrorPolicy_Warn>(dest.b,"b",db); |
| ReadField<ErrorPolicy_Warn>(dest.k,"k",db); |
| ReadField<ErrorPolicy_Igno>(dest.colspecfac,"colspecfac",db); |
| ReadField<ErrorPolicy_Igno>(dest.mirrfac,"mirrfac",db); |
| ReadField<ErrorPolicy_Igno>(dest.alphafac,"alphafac",db); |
| ReadField<ErrorPolicy_Igno>(dest.difffac,"difffac",db); |
| ReadField<ErrorPolicy_Igno>(dest.specfac,"specfac",db); |
| ReadField<ErrorPolicy_Igno>(dest.emitfac,"emitfac",db); |
| ReadField<ErrorPolicy_Igno>(dest.hardfac,"hardfac",db); |
| ReadField<ErrorPolicy_Igno>(dest.norfac,"norfac",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<TFace> ( |
| TFace& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldArray2<ErrorPolicy_Fail>(dest.uv,"uv",db); |
| ReadFieldArray<ErrorPolicy_Fail>(dest.col,"col",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); |
| ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); |
| ReadField<ErrorPolicy_Igno>(dest.unwrap,"unwrap",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<SubsurfModifierData> ( |
| SubsurfModifierData& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.modifier,"modifier",db); |
| ReadField<ErrorPolicy_Warn>(dest.subdivType,"subdivType",db); |
| ReadField<ErrorPolicy_Fail>(dest.levels,"levels",db); |
| ReadField<ErrorPolicy_Igno>(dest.renderLevels,"renderLevels",db); |
| ReadField<ErrorPolicy_Igno>(dest.flags,"flags",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MFace> ( |
| MFace& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.v1,"v1",db); |
| ReadField<ErrorPolicy_Fail>(dest.v2,"v2",db); |
| ReadField<ErrorPolicy_Fail>(dest.v3,"v3",db); |
| ReadField<ErrorPolicy_Fail>(dest.v4,"v4",db); |
| ReadField<ErrorPolicy_Fail>(dest.mat_nr,"mat_nr",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Lamp> ( |
| Lamp& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| int temp = 0; |
| ReadField<ErrorPolicy_Fail>(temp,"type",db); |
| dest.type = static_cast<Assimp::Blender::Lamp::Type>(temp); |
| ReadField<ErrorPolicy_Igno>(dest.flags,"flags",db); |
| ReadField<ErrorPolicy_Igno>(dest.colormodel,"colormodel",db); |
| ReadField<ErrorPolicy_Igno>(dest.totex,"totex",db); |
| ReadField<ErrorPolicy_Warn>(dest.r,"r",db); |
| ReadField<ErrorPolicy_Warn>(dest.g,"g",db); |
| ReadField<ErrorPolicy_Warn>(dest.b,"b",db); |
| ReadField<ErrorPolicy_Warn>(dest.k,"k",db); |
| ReadField<ErrorPolicy_Igno>(dest.energy,"energy",db); |
| ReadField<ErrorPolicy_Igno>(dest.dist,"dist",db); |
| ReadField<ErrorPolicy_Igno>(dest.spotsize,"spotsize",db); |
| ReadField<ErrorPolicy_Igno>(dest.spotblend,"spotblend",db); |
| ReadField<ErrorPolicy_Igno>(dest.att1,"att1",db); |
| ReadField<ErrorPolicy_Igno>(dest.att2,"att2",db); |
| ReadField<ErrorPolicy_Igno>(temp,"falloff_type",db); |
| dest.falloff_type = static_cast<Assimp::Blender::Lamp::FalloffType>(temp); |
| ReadField<ErrorPolicy_Igno>(dest.sun_brightness,"sun_brightness",db); |
| ReadField<ErrorPolicy_Igno>(dest.area_size,"area_size",db); |
| ReadField<ErrorPolicy_Igno>(dest.area_sizey,"area_sizey",db); |
| ReadField<ErrorPolicy_Igno>(dest.area_sizez,"area_sizez",db); |
| ReadField<ErrorPolicy_Igno>(dest.area_shape,"area_shape",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MDeformWeight> ( |
| MDeformWeight& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.def_nr,"def_nr",db); |
| ReadField<ErrorPolicy_Fail>(dest.weight,"weight",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<PackedFile> ( |
| PackedFile& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Warn>(dest.size,"size",db); |
| ReadField<ErrorPolicy_Warn>(dest.seek,"seek",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.data,"*data",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Base> ( |
| Base& dest, |
| const FileDatabase& db |
| ) const |
| { |
| // note: as per https://github.com/assimp/assimp/issues/128, |
| // reading the Object linked list recursively is prone to stack overflow. |
| // This structure converter is therefore an hand-written exception that |
| // does it iteratively. |
| |
| const int initial_pos = db.reader->GetCurrentPos(); |
| |
| std::pair<Base*, int> todo = std::make_pair(&dest, initial_pos); |
| for ( ;; ) { |
| |
| Base& cur_dest = *todo.first; |
| db.reader->SetCurrentPos(todo.second); |
| |
| // we know that this is a double-linked, circular list which we never |
| // traverse backwards, so don't bother resolving the back links. |
| cur_dest.prev = NULL; |
| |
| ReadFieldPtr<ErrorPolicy_Warn>(cur_dest.object,"*object",db); |
| |
| // the return value of ReadFieldPtr indicates whether the object |
| // was already cached. In this case, we don't need to resolve |
| // it again. |
| if(!ReadFieldPtr<ErrorPolicy_Warn>(cur_dest.next,"*next",db, true) && cur_dest.next) { |
| todo = std::make_pair(&*cur_dest.next, db.reader->GetCurrentPos()); |
| continue; |
| } |
| break; |
| } |
| |
| db.reader->SetCurrentPos(initial_pos + size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MTFace> ( |
| MTFace& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldArray2<ErrorPolicy_Fail>(dest.uv,"uv",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); |
| ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); |
| ReadField<ErrorPolicy_Igno>(dest.unwrap,"unwrap",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Material> ( |
| Material& dest, |
| const FileDatabase& db |
| ) const |
| { |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadField<ErrorPolicy_Warn>(dest.r,"r",db); |
| ReadField<ErrorPolicy_Warn>(dest.g,"g",db); |
| ReadField<ErrorPolicy_Warn>(dest.b,"b",db); |
| ReadField<ErrorPolicy_Warn>(dest.specr,"specr",db); |
| ReadField<ErrorPolicy_Warn>(dest.specg,"specg",db); |
| ReadField<ErrorPolicy_Warn>(dest.specb,"specb",db); |
| ReadField<ErrorPolicy_Igno>(dest.har,"har",db); |
| ReadField<ErrorPolicy_Warn>(dest.ambr,"ambr",db); |
| ReadField<ErrorPolicy_Warn>(dest.ambg,"ambg",db); |
| ReadField<ErrorPolicy_Warn>(dest.ambb,"ambb",db); |
| ReadField<ErrorPolicy_Igno>(dest.mirr,"mirr",db); |
| ReadField<ErrorPolicy_Igno>(dest.mirg,"mirg",db); |
| ReadField<ErrorPolicy_Igno>(dest.mirb,"mirb",db); |
| ReadField<ErrorPolicy_Warn>(dest.emit,"emit",db); |
| ReadField<ErrorPolicy_Igno>(dest.ray_mirror,"ray_mirror",db); |
| ReadField<ErrorPolicy_Warn>(dest.alpha,"alpha",db); |
| ReadField<ErrorPolicy_Igno>(dest.ref,"ref",db); |
| ReadField<ErrorPolicy_Igno>(dest.translucency,"translucency",db); |
| ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); |
| ReadField<ErrorPolicy_Igno>(dest.roughness,"roughness",db); |
| ReadField<ErrorPolicy_Igno>(dest.darkness,"darkness",db); |
| ReadField<ErrorPolicy_Igno>(dest.refrac,"refrac",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.group,"*group",db); |
| ReadField<ErrorPolicy_Warn>(dest.diff_shader,"diff_shader",db); |
| ReadField<ErrorPolicy_Warn>(dest.spec_shader,"spec_shader",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mtex,"*mtex",db); |
| |
| |
| ReadField<ErrorPolicy_Igno>(dest.amb, "amb", db); |
| ReadField<ErrorPolicy_Igno>(dest.ang, "ang", db); |
| ReadField<ErrorPolicy_Igno>(dest.spectra, "spectra", db); |
| ReadField<ErrorPolicy_Igno>(dest.spec, "spec", db); |
| ReadField<ErrorPolicy_Igno>(dest.zoffs, "zoffs", db); |
| ReadField<ErrorPolicy_Igno>(dest.add, "add", db); |
| ReadField<ErrorPolicy_Igno>(dest.fresnel_mir, "fresnel_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.fresnel_mir_i, "fresnel_mir_i", db); |
| ReadField<ErrorPolicy_Igno>(dest.fresnel_tra, "fresnel_tra", db); |
| ReadField<ErrorPolicy_Igno>(dest.fresnel_tra_i, "fresnel_tra_i", db); |
| ReadField<ErrorPolicy_Igno>(dest.filter, "filter", db); |
| ReadField<ErrorPolicy_Igno>(dest.tx_limit, "tx_limit", db); |
| ReadField<ErrorPolicy_Igno>(dest.tx_falloff, "tx_falloff", db); |
| ReadField<ErrorPolicy_Igno>(dest.gloss_mir, "gloss_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.gloss_tra, "gloss_tra", db); |
| ReadField<ErrorPolicy_Igno>(dest.adapt_thresh_mir, "adapt_thresh_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.adapt_thresh_tra, "adapt_thresh_tra", db); |
| ReadField<ErrorPolicy_Igno>(dest.aniso_gloss_mir, "aniso_gloss_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.dist_mir, "dist_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.hasize, "hasize", db); |
| ReadField<ErrorPolicy_Igno>(dest.flaresize, "flaresize", db); |
| ReadField<ErrorPolicy_Igno>(dest.subsize, "subsize", db); |
| ReadField<ErrorPolicy_Igno>(dest.flareboost, "flareboost", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_sta, "strand_sta", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_end, "strand_end", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_ease, "strand_ease", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_surfnor, "strand_surfnor", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_min, "strand_min", db); |
| ReadField<ErrorPolicy_Igno>(dest.strand_widthfade, "strand_widthfade", db); |
| ReadField<ErrorPolicy_Igno>(dest.sbias, "sbias", db); |
| ReadField<ErrorPolicy_Igno>(dest.lbias, "lbias", db); |
| ReadField<ErrorPolicy_Igno>(dest.shad_alpha, "shad_alpha", db); |
| ReadField<ErrorPolicy_Igno>(dest.param, "param", db); |
| ReadField<ErrorPolicy_Igno>(dest.rms, "rms", db); |
| ReadField<ErrorPolicy_Igno>(dest.rampfac_col, "rampfac_col", db); |
| ReadField<ErrorPolicy_Igno>(dest.rampfac_spec, "rampfac_spec", db); |
| ReadField<ErrorPolicy_Igno>(dest.friction, "friction", db); |
| ReadField<ErrorPolicy_Igno>(dest.fh, "fh", db); |
| ReadField<ErrorPolicy_Igno>(dest.reflect, "reflect", db); |
| ReadField<ErrorPolicy_Igno>(dest.fhdist, "fhdist", db); |
| ReadField<ErrorPolicy_Igno>(dest.xyfrict, "xyfrict", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_radius, "sss_radius", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_col, "sss_col", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_error, "sss_error", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_scale, "sss_scale", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_ior, "sss_ior", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_colfac, "sss_colfac", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_texfac, "sss_texfac", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_front, "sss_front", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_back, "sss_back", db); |
| |
| ReadField<ErrorPolicy_Igno>(dest.material_type, "material_type", db); |
| ReadField<ErrorPolicy_Igno>(dest.flag, "flag", db); |
| ReadField<ErrorPolicy_Igno>(dest.ray_depth, "ray_depth", db); |
| ReadField<ErrorPolicy_Igno>(dest.ray_depth_tra, "ray_depth_tra", db); |
| ReadField<ErrorPolicy_Igno>(dest.samp_gloss_mir, "samp_gloss_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.samp_gloss_tra, "samp_gloss_tra", db); |
| ReadField<ErrorPolicy_Igno>(dest.fadeto_mir, "fadeto_mir", db); |
| ReadField<ErrorPolicy_Igno>(dest.shade_flag, "shade_flag", db); |
| ReadField<ErrorPolicy_Igno>(dest.flarec, "flarec", db); |
| ReadField<ErrorPolicy_Igno>(dest.starc, "starc", db); |
| ReadField<ErrorPolicy_Igno>(dest.linec, "linec", db); |
| ReadField<ErrorPolicy_Igno>(dest.ringc, "ringc", db); |
| ReadField<ErrorPolicy_Igno>(dest.pr_lamp, "pr_lamp", db); |
| ReadField<ErrorPolicy_Igno>(dest.pr_texture, "pr_texture", db); |
| ReadField<ErrorPolicy_Igno>(dest.ml_flag, "ml_flag", db); |
| ReadField<ErrorPolicy_Igno>(dest.diff_shader, "diff_shader", db); |
| ReadField<ErrorPolicy_Igno>(dest.spec_shader, "spec_shader", db); |
| ReadField<ErrorPolicy_Igno>(dest.texco, "texco", db); |
| ReadField<ErrorPolicy_Igno>(dest.mapto, "mapto", db); |
| ReadField<ErrorPolicy_Igno>(dest.ramp_show, "ramp_show", db); |
| ReadField<ErrorPolicy_Igno>(dest.pad3, "pad3", db); |
| ReadField<ErrorPolicy_Igno>(dest.dynamode, "dynamode", db); |
| ReadField<ErrorPolicy_Igno>(dest.pad2, "pad2", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_flag, "sss_flag", db); |
| ReadField<ErrorPolicy_Igno>(dest.sss_preset, "sss_preset", db); |
| ReadField<ErrorPolicy_Igno>(dest.shadowonly_flag, "shadowonly_flag", db); |
| ReadField<ErrorPolicy_Igno>(dest.index, "index", db); |
| ReadField<ErrorPolicy_Igno>(dest.vcol_alpha, "vcol_alpha", db); |
| ReadField<ErrorPolicy_Igno>(dest.pad4, "pad4", db); |
| |
| ReadField<ErrorPolicy_Igno>(dest.seed1, "seed1", db); |
| ReadField<ErrorPolicy_Igno>(dest.seed2, "seed2", db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MTexPoly> ( |
| MTexPoly& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| { |
| std::shared_ptr<Image> tpage; |
| ReadFieldPtr<ErrorPolicy_Igno>(tpage,"*tpage",db); |
| dest.tpage = tpage.get(); |
| } |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| ReadField<ErrorPolicy_Igno>(dest.transp,"transp",db); |
| ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); |
| ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); |
| ReadField<ErrorPolicy_Igno>(dest.pad,"pad",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Mesh> ( |
| Mesh& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadField<ErrorPolicy_Fail>(dest.totface,"totface",db); |
| ReadField<ErrorPolicy_Fail>(dest.totedge,"totedge",db); |
| ReadField<ErrorPolicy_Fail>(dest.totvert,"totvert",db); |
| ReadField<ErrorPolicy_Igno>(dest.totloop,"totloop",db); |
| ReadField<ErrorPolicy_Igno>(dest.totpoly,"totpoly",db); |
| ReadField<ErrorPolicy_Igno>(dest.subdiv,"subdiv",db); |
| ReadField<ErrorPolicy_Igno>(dest.subdivr,"subdivr",db); |
| ReadField<ErrorPolicy_Igno>(dest.subsurftype,"subsurftype",db); |
| ReadField<ErrorPolicy_Igno>(dest.smoothresh,"smoothresh",db); |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.mface,"*mface",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mtface,"*mtface",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.tface,"*tface",db); |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.mvert,"*mvert",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.medge,"*medge",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mloop,"*mloop",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopuv,"*mloopuv",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopcol,"*mloopcol",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mpoly,"*mpoly",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mtpoly,"*mtpoly",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.dvert,"*dvert",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mcol,"*mcol",db); |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.mat,"**mat",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MDeformVert> ( |
| MDeformVert& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.dw,"*dw",db); |
| ReadField<ErrorPolicy_Igno>(dest.totweight,"totweight",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<World> ( |
| World& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MLoopCol> ( |
| MLoopCol& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Igno>(dest.r,"r",db); |
| ReadField<ErrorPolicy_Igno>(dest.g,"g",db); |
| ReadField<ErrorPolicy_Igno>(dest.b,"b",db); |
| ReadField<ErrorPolicy_Igno>(dest.a,"a",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MVert> ( |
| MVert& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldArray<ErrorPolicy_Fail>(dest.co,"co",db); |
| ReadFieldArray<ErrorPolicy_Fail>(dest.no,"no",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| //ReadField<ErrorPolicy_Warn>(dest.mat_nr,"mat_nr",db); |
| ReadField<ErrorPolicy_Igno>(dest.bweight,"bweight",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MEdge> ( |
| MEdge& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.v1,"v1",db); |
| ReadField<ErrorPolicy_Fail>(dest.v2,"v2",db); |
| ReadField<ErrorPolicy_Igno>(dest.crease,"crease",db); |
| ReadField<ErrorPolicy_Igno>(dest.bweight,"bweight",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MLoopUV> ( |
| MLoopUV& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldArray<ErrorPolicy_Igno>(dest.uv,"uv",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<GroupObject> ( |
| GroupObject& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.prev,"*prev",db); |
| ReadFieldPtr<ErrorPolicy_Fail>(dest.next,"*next",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.ob,"*ob",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<ListBase> ( |
| ListBase& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.first,"*first",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.last,"*last",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MLoop> ( |
| MLoop& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Igno>(dest.v,"v",db); |
| ReadField<ErrorPolicy_Igno>(dest.e,"e",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<ModifierData> ( |
| ModifierData& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.next,"*next",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.prev,"*prev",db); |
| ReadField<ErrorPolicy_Igno>(dest.type,"type",db); |
| ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); |
| ReadFieldArray<ErrorPolicy_Igno>(dest.name,"name",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<ID> ( |
| ID& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MCol> ( |
| MCol& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.r,"r",db); |
| ReadField<ErrorPolicy_Fail>(dest.g,"g",db); |
| ReadField<ErrorPolicy_Fail>(dest.b,"b",db); |
| ReadField<ErrorPolicy_Fail>(dest.a,"a",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MPoly> ( |
| MPoly& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Igno>(dest.loopstart,"loopstart",db); |
| ReadField<ErrorPolicy_Igno>(dest.totloop,"totloop",db); |
| ReadField<ErrorPolicy_Igno>(dest.mat_nr,"mat_nr",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Scene> ( |
| Scene& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.camera,"*camera",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.world,"*world",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.basact,"*basact",db); |
| ReadField<ErrorPolicy_Igno>(dest.base,"base",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Library> ( |
| Library& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); |
| ReadFieldArray<ErrorPolicy_Fail>(dest.filename,"filename",db); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.parent,"*parent",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Tex> ( |
| Tex& dest, |
| const FileDatabase& db |
| ) const |
| { |
| short temp_short = 0; |
| ReadField<ErrorPolicy_Igno>(temp_short,"imaflag",db); |
| dest.imaflag = static_cast<Assimp::Blender::Tex::ImageFlags>(temp_short); |
| int temp = 0; |
| ReadField<ErrorPolicy_Fail>(temp,"type",db); |
| dest.type = static_cast<Assimp::Blender::Tex::Type>(temp); |
| ReadFieldPtr<ErrorPolicy_Warn>(dest.ima,"*ima",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Camera> ( |
| Camera& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| int temp = 0; |
| ReadField<ErrorPolicy_Warn>(temp,"type",db); |
| dest.type = static_cast<Assimp::Blender::Camera::Type>(temp); |
| ReadField<ErrorPolicy_Warn>(temp,"flag",db); |
| dest.flag = static_cast<Assimp::Blender::Camera::Type>(temp); |
| ReadField<ErrorPolicy_Warn>(dest.lens,"lens",db); |
| ReadField<ErrorPolicy_Warn>(dest.sensor_x,"sensor_x",db); |
| ReadField<ErrorPolicy_Igno>(dest.clipsta,"clipsta",db); |
| ReadField<ErrorPolicy_Igno>(dest.clipend,"clipend",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<MirrorModifierData> ( |
| MirrorModifierData& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.modifier,"modifier",db); |
| ReadField<ErrorPolicy_Igno>(dest.axis,"axis",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| ReadField<ErrorPolicy_Igno>(dest.tolerance,"tolerance",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.mirror_ob,"*mirror_ob",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| template <> void Structure :: Convert<Image> ( |
| Image& dest, |
| const FileDatabase& db |
| ) const |
| { |
| |
| ReadField<ErrorPolicy_Fail>(dest.id,"id",db); |
| ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); |
| ReadField<ErrorPolicy_Igno>(dest.ok,"ok",db); |
| ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); |
| ReadField<ErrorPolicy_Igno>(dest.source,"source",db); |
| ReadField<ErrorPolicy_Igno>(dest.type,"type",db); |
| ReadField<ErrorPolicy_Igno>(dest.pad,"pad",db); |
| ReadField<ErrorPolicy_Igno>(dest.pad1,"pad1",db); |
| ReadField<ErrorPolicy_Igno>(dest.lastframe,"lastframe",db); |
| ReadField<ErrorPolicy_Igno>(dest.tpageflag,"tpageflag",db); |
| ReadField<ErrorPolicy_Igno>(dest.totbind,"totbind",db); |
| ReadField<ErrorPolicy_Igno>(dest.xrep,"xrep",db); |
| ReadField<ErrorPolicy_Igno>(dest.yrep,"yrep",db); |
| ReadField<ErrorPolicy_Igno>(dest.twsta,"twsta",db); |
| ReadField<ErrorPolicy_Igno>(dest.twend,"twend",db); |
| ReadFieldPtr<ErrorPolicy_Igno>(dest.packedfile,"*packedfile",db); |
| ReadField<ErrorPolicy_Igno>(dest.lastupdate,"lastupdate",db); |
| ReadField<ErrorPolicy_Igno>(dest.lastused,"lastused",db); |
| ReadField<ErrorPolicy_Igno>(dest.animspeed,"animspeed",db); |
| ReadField<ErrorPolicy_Igno>(dest.gen_x,"gen_x",db); |
| ReadField<ErrorPolicy_Igno>(dest.gen_y,"gen_y",db); |
| ReadField<ErrorPolicy_Igno>(dest.gen_type,"gen_type",db); |
| |
| db.reader->IncPtr(size); |
| } |
| |
| //-------------------------------------------------------------------------------- |
| void DNA::RegisterConverters() { |
| |
| converters["Object"] = DNA::FactoryPair( &Structure::Allocate<Object>, &Structure::Convert<Object> ); |
| converters["Group"] = DNA::FactoryPair( &Structure::Allocate<Group>, &Structure::Convert<Group> ); |
| converters["MTex"] = DNA::FactoryPair( &Structure::Allocate<MTex>, &Structure::Convert<MTex> ); |
| converters["TFace"] = DNA::FactoryPair( &Structure::Allocate<TFace>, &Structure::Convert<TFace> ); |
| converters["SubsurfModifierData"] = DNA::FactoryPair( &Structure::Allocate<SubsurfModifierData>, &Structure::Convert<SubsurfModifierData> ); |
| converters["MFace"] = DNA::FactoryPair( &Structure::Allocate<MFace>, &Structure::Convert<MFace> ); |
| converters["Lamp"] = DNA::FactoryPair( &Structure::Allocate<Lamp>, &Structure::Convert<Lamp> ); |
| converters["MDeformWeight"] = DNA::FactoryPair( &Structure::Allocate<MDeformWeight>, &Structure::Convert<MDeformWeight> ); |
| converters["PackedFile"] = DNA::FactoryPair( &Structure::Allocate<PackedFile>, &Structure::Convert<PackedFile> ); |
| converters["Base"] = DNA::FactoryPair( &Structure::Allocate<Base>, &Structure::Convert<Base> ); |
| converters["MTFace"] = DNA::FactoryPair( &Structure::Allocate<MTFace>, &Structure::Convert<MTFace> ); |
| converters["Material"] = DNA::FactoryPair( &Structure::Allocate<Material>, &Structure::Convert<Material> ); |
| converters["MTexPoly"] = DNA::FactoryPair( &Structure::Allocate<MTexPoly>, &Structure::Convert<MTexPoly> ); |
| converters["Mesh"] = DNA::FactoryPair( &Structure::Allocate<Mesh>, &Structure::Convert<Mesh> ); |
| converters["MDeformVert"] = DNA::FactoryPair( &Structure::Allocate<MDeformVert>, &Structure::Convert<MDeformVert> ); |
| converters["World"] = DNA::FactoryPair( &Structure::Allocate<World>, &Structure::Convert<World> ); |
| converters["MLoopCol"] = DNA::FactoryPair( &Structure::Allocate<MLoopCol>, &Structure::Convert<MLoopCol> ); |
| converters["MVert"] = DNA::FactoryPair( &Structure::Allocate<MVert>, &Structure::Convert<MVert> ); |
| converters["MEdge"] = DNA::FactoryPair( &Structure::Allocate<MEdge>, &Structure::Convert<MEdge> ); |
| converters["MLoopUV"] = DNA::FactoryPair( &Structure::Allocate<MLoopUV>, &Structure::Convert<MLoopUV> ); |
| converters["GroupObject"] = DNA::FactoryPair( &Structure::Allocate<GroupObject>, &Structure::Convert<GroupObject> ); |
| converters["ListBase"] = DNA::FactoryPair( &Structure::Allocate<ListBase>, &Structure::Convert<ListBase> ); |
| converters["MLoop"] = DNA::FactoryPair( &Structure::Allocate<MLoop>, &Structure::Convert<MLoop> ); |
| converters["ModifierData"] = DNA::FactoryPair( &Structure::Allocate<ModifierData>, &Structure::Convert<ModifierData> ); |
| converters["ID"] = DNA::FactoryPair( &Structure::Allocate<ID>, &Structure::Convert<ID> ); |
| converters["MCol"] = DNA::FactoryPair( &Structure::Allocate<MCol>, &Structure::Convert<MCol> ); |
| converters["MPoly"] = DNA::FactoryPair( &Structure::Allocate<MPoly>, &Structure::Convert<MPoly> ); |
| converters["Scene"] = DNA::FactoryPair( &Structure::Allocate<Scene>, &Structure::Convert<Scene> ); |
| converters["Library"] = DNA::FactoryPair( &Structure::Allocate<Library>, &Structure::Convert<Library> ); |
| converters["Tex"] = DNA::FactoryPair( &Structure::Allocate<Tex>, &Structure::Convert<Tex> ); |
| converters["Camera"] = DNA::FactoryPair( &Structure::Allocate<Camera>, &Structure::Convert<Camera> ); |
| converters["MirrorModifierData"] = DNA::FactoryPair( &Structure::Allocate<MirrorModifierData>, &Structure::Convert<MirrorModifierData> ); |
| converters["Image"] = DNA::FactoryPair( &Structure::Allocate<Image>, &Structure::Convert<Image> ); |
| } |
| |
| #endif // ASSIMP_BUILD_NO_BLEND_IMPORTER |
| |