vrshoot
diff libs/assimp/BlenderScene.cpp @ 0:b2f14e535253
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 01 Feb 2014 19:58:19 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/libs/assimp/BlenderScene.cpp Sat Feb 01 19:58:19 2014 +0200 1.3 @@ -0,0 +1,694 @@ 1.4 +/* 1.5 +Open Asset Import Library (ASSIMP) 1.6 +---------------------------------------------------------------------- 1.7 + 1.8 +Copyright (c) 2006-2010, ASSIMP Development Team 1.9 +All rights reserved. 1.10 + 1.11 +Redistribution and use of this software in source and binary forms, 1.12 +with or without modification, are permitted provided that the 1.13 +following conditions are met: 1.14 + 1.15 +* Redistributions of source code must retain the above 1.16 + copyright notice, this list of conditions and the 1.17 + following disclaimer. 1.18 + 1.19 +* Redistributions in binary form must reproduce the above 1.20 + copyright notice, this list of conditions and the 1.21 + following disclaimer in the documentation and/or other 1.22 + materials provided with the distribution. 1.23 + 1.24 +* Neither the name of the ASSIMP team, nor the names of its 1.25 + contributors may be used to endorse or promote products 1.26 + derived from this software without specific prior 1.27 + written permission of the ASSIMP Development Team. 1.28 + 1.29 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1.30 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1.31 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1.32 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1.33 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1.34 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1.35 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1.36 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1.37 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1.38 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1.39 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.40 + 1.41 +---------------------------------------------------------------------- 1.42 +*/ 1.43 + 1.44 +/** @file BlenderScene.cpp 1.45 + * @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py 1.46 + */ 1.47 +#include "AssimpPCH.h" 1.48 +#ifndef AI_BUILD_NO_BLEND_IMPORTER 1.49 + 1.50 +#include "BlenderDNA.h" 1.51 +#include "BlenderScene.h" 1.52 +#include "BlenderSceneGen.h" 1.53 + 1.54 +using namespace Assimp; 1.55 +using namespace Assimp::Blender; 1.56 + 1.57 +//-------------------------------------------------------------------------------- 1.58 +template <> void Structure :: Convert<Object> ( 1.59 + Object& dest, 1.60 + const FileDatabase& db 1.61 + ) const 1.62 +{ 1.63 + 1.64 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.65 + ReadField<ErrorPolicy_Fail>((int&)dest.type,"type",db); 1.66 + ReadFieldArray2<ErrorPolicy_Warn>(dest.obmat,"obmat",db); 1.67 + ReadFieldArray2<ErrorPolicy_Warn>(dest.parentinv,"parentinv",db); 1.68 + ReadFieldArray<ErrorPolicy_Warn>(dest.parsubstr,"parsubstr",db); 1.69 + { 1.70 + boost::shared_ptr<Object> parent; 1.71 + ReadFieldPtr<ErrorPolicy_Warn>(parent,"*parent",db); 1.72 + dest.parent = parent.get(); 1.73 + } 1.74 + ReadFieldPtr<ErrorPolicy_Warn>(dest.track,"*track",db); 1.75 + ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy,"*proxy",db); 1.76 + ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_from,"*proxy_from",db); 1.77 + ReadFieldPtr<ErrorPolicy_Warn>(dest.proxy_group,"*proxy_group",db); 1.78 + ReadFieldPtr<ErrorPolicy_Warn>(dest.dup_group,"*dup_group",db); 1.79 + ReadFieldPtr<ErrorPolicy_Fail>(dest.data,"*data",db); 1.80 + ReadField<ErrorPolicy_Igno>(dest.modifiers,"modifiers",db); 1.81 + 1.82 + db.reader->IncPtr(size); 1.83 +} 1.84 + 1.85 +//-------------------------------------------------------------------------------- 1.86 +template <> void Structure :: Convert<Group> ( 1.87 + Group& dest, 1.88 + const FileDatabase& db 1.89 + ) const 1.90 +{ 1.91 + 1.92 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.93 + ReadField<ErrorPolicy_Igno>(dest.layer,"layer",db); 1.94 + ReadFieldPtr<ErrorPolicy_Igno>(dest.gobject,"*gobject",db); 1.95 + 1.96 + db.reader->IncPtr(size); 1.97 +} 1.98 + 1.99 +//-------------------------------------------------------------------------------- 1.100 +template <> void Structure :: Convert<MTex> ( 1.101 + MTex& dest, 1.102 + const FileDatabase& db 1.103 + ) const 1.104 +{ 1.105 + 1.106 + ReadField<ErrorPolicy_Igno>((int&)dest.blendtype,"blendtype",db); 1.107 + ReadFieldPtr<ErrorPolicy_Igno>(dest.object,"*object",db); 1.108 + ReadFieldPtr<ErrorPolicy_Igno>(dest.tex,"*tex",db); 1.109 + ReadFieldArray<ErrorPolicy_Igno>(dest.uvname,"uvname",db); 1.110 + ReadField<ErrorPolicy_Igno>((int&)dest.projx,"projx",db); 1.111 + ReadField<ErrorPolicy_Igno>((int&)dest.projy,"projy",db); 1.112 + ReadField<ErrorPolicy_Igno>((int&)dest.projz,"projz",db); 1.113 + ReadField<ErrorPolicy_Igno>(dest.mapping,"mapping",db); 1.114 + ReadFieldArray<ErrorPolicy_Igno>(dest.ofs,"ofs",db); 1.115 + ReadFieldArray<ErrorPolicy_Igno>(dest.size,"size",db); 1.116 + ReadField<ErrorPolicy_Igno>(dest.rot,"rot",db); 1.117 + ReadField<ErrorPolicy_Igno>(dest.texflag,"texflag",db); 1.118 + ReadField<ErrorPolicy_Igno>(dest.colormodel,"colormodel",db); 1.119 + ReadField<ErrorPolicy_Igno>(dest.pmapto,"pmapto",db); 1.120 + ReadField<ErrorPolicy_Igno>(dest.pmaptoneg,"pmaptoneg",db); 1.121 + ReadField<ErrorPolicy_Warn>(dest.r,"r",db); 1.122 + ReadField<ErrorPolicy_Warn>(dest.g,"g",db); 1.123 + ReadField<ErrorPolicy_Warn>(dest.b,"b",db); 1.124 + ReadField<ErrorPolicy_Warn>(dest.k,"k",db); 1.125 + ReadField<ErrorPolicy_Igno>(dest.colspecfac,"colspecfac",db); 1.126 + ReadField<ErrorPolicy_Igno>(dest.mirrfac,"mirrfac",db); 1.127 + ReadField<ErrorPolicy_Igno>(dest.alphafac,"alphafac",db); 1.128 + ReadField<ErrorPolicy_Igno>(dest.difffac,"difffac",db); 1.129 + ReadField<ErrorPolicy_Igno>(dest.specfac,"specfac",db); 1.130 + ReadField<ErrorPolicy_Igno>(dest.emitfac,"emitfac",db); 1.131 + ReadField<ErrorPolicy_Igno>(dest.hardfac,"hardfac",db); 1.132 + 1.133 + db.reader->IncPtr(size); 1.134 +} 1.135 + 1.136 +//-------------------------------------------------------------------------------- 1.137 +template <> void Structure :: Convert<TFace> ( 1.138 + TFace& dest, 1.139 + const FileDatabase& db 1.140 + ) const 1.141 +{ 1.142 + 1.143 + ReadFieldArray2<ErrorPolicy_Fail>(dest.uv,"uv",db); 1.144 + ReadFieldArray<ErrorPolicy_Fail>(dest.col,"col",db); 1.145 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.146 + ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); 1.147 + ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); 1.148 + ReadField<ErrorPolicy_Igno>(dest.unwrap,"unwrap",db); 1.149 + 1.150 + db.reader->IncPtr(size); 1.151 +} 1.152 + 1.153 +//-------------------------------------------------------------------------------- 1.154 +template <> void Structure :: Convert<SubsurfModifierData> ( 1.155 + SubsurfModifierData& dest, 1.156 + const FileDatabase& db 1.157 + ) const 1.158 +{ 1.159 + 1.160 + ReadField<ErrorPolicy_Fail>(dest.modifier,"modifier",db); 1.161 + ReadField<ErrorPolicy_Warn>(dest.subdivType,"subdivType",db); 1.162 + ReadField<ErrorPolicy_Fail>(dest.levels,"levels",db); 1.163 + ReadField<ErrorPolicy_Igno>(dest.renderLevels,"renderLevels",db); 1.164 + ReadField<ErrorPolicy_Igno>(dest.flags,"flags",db); 1.165 + 1.166 + db.reader->IncPtr(size); 1.167 +} 1.168 + 1.169 +//-------------------------------------------------------------------------------- 1.170 +template <> void Structure :: Convert<MFace> ( 1.171 + MFace& dest, 1.172 + const FileDatabase& db 1.173 + ) const 1.174 +{ 1.175 + 1.176 + ReadField<ErrorPolicy_Fail>(dest.v1,"v1",db); 1.177 + ReadField<ErrorPolicy_Fail>(dest.v2,"v2",db); 1.178 + ReadField<ErrorPolicy_Fail>(dest.v3,"v3",db); 1.179 + ReadField<ErrorPolicy_Fail>(dest.v4,"v4",db); 1.180 + ReadField<ErrorPolicy_Fail>(dest.mat_nr,"mat_nr",db); 1.181 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.182 + 1.183 + db.reader->IncPtr(size); 1.184 +} 1.185 + 1.186 +//-------------------------------------------------------------------------------- 1.187 +template <> void Structure :: Convert<Lamp> ( 1.188 + Lamp& dest, 1.189 + const FileDatabase& db 1.190 + ) const 1.191 +{ 1.192 + 1.193 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.194 + ReadField<ErrorPolicy_Fail>((int&)dest.type,"type",db); 1.195 + ReadField<ErrorPolicy_Igno>(dest.flags,"flags",db); 1.196 + ReadField<ErrorPolicy_Igno>(dest.colormodel,"colormodel",db); 1.197 + ReadField<ErrorPolicy_Igno>(dest.totex,"totex",db); 1.198 + ReadField<ErrorPolicy_Warn>(dest.r,"r",db); 1.199 + ReadField<ErrorPolicy_Warn>(dest.g,"g",db); 1.200 + ReadField<ErrorPolicy_Warn>(dest.b,"b",db); 1.201 + ReadField<ErrorPolicy_Warn>(dest.k,"k",db); 1.202 + ReadField<ErrorPolicy_Igno>(dest.energy,"energy",db); 1.203 + ReadField<ErrorPolicy_Igno>(dest.dist,"dist",db); 1.204 + ReadField<ErrorPolicy_Igno>(dest.spotsize,"spotsize",db); 1.205 + ReadField<ErrorPolicy_Igno>(dest.spotblend,"spotblend",db); 1.206 + ReadField<ErrorPolicy_Igno>(dest.att1,"att1",db); 1.207 + ReadField<ErrorPolicy_Igno>(dest.att2,"att2",db); 1.208 + ReadField<ErrorPolicy_Igno>((int&)dest.falloff_type,"falloff_type",db); 1.209 + ReadField<ErrorPolicy_Igno>(dest.sun_brightness,"sun_brightness",db); 1.210 + 1.211 + db.reader->IncPtr(size); 1.212 +} 1.213 + 1.214 +//-------------------------------------------------------------------------------- 1.215 +template <> void Structure :: Convert<MDeformWeight> ( 1.216 + MDeformWeight& dest, 1.217 + const FileDatabase& db 1.218 + ) const 1.219 +{ 1.220 + 1.221 + ReadField<ErrorPolicy_Fail>(dest.def_nr,"def_nr",db); 1.222 + ReadField<ErrorPolicy_Fail>(dest.weight,"weight",db); 1.223 + 1.224 + db.reader->IncPtr(size); 1.225 +} 1.226 + 1.227 +//-------------------------------------------------------------------------------- 1.228 +template <> void Structure :: Convert<PackedFile> ( 1.229 + PackedFile& dest, 1.230 + const FileDatabase& db 1.231 + ) const 1.232 +{ 1.233 + 1.234 + ReadField<ErrorPolicy_Warn>(dest.size,"size",db); 1.235 + ReadField<ErrorPolicy_Warn>(dest.seek,"seek",db); 1.236 + ReadFieldPtr<ErrorPolicy_Warn>(dest.data,"*data",db); 1.237 + 1.238 + db.reader->IncPtr(size); 1.239 +} 1.240 + 1.241 +//-------------------------------------------------------------------------------- 1.242 +template <> void Structure :: Convert<Base> ( 1.243 + Base& dest, 1.244 + const FileDatabase& db 1.245 + ) const 1.246 +{ 1.247 + 1.248 + { 1.249 + boost::shared_ptr<Base> prev; 1.250 + ReadFieldPtr<ErrorPolicy_Warn>(prev,"*prev",db); 1.251 + dest.prev = prev.get(); 1.252 + } 1.253 + ReadFieldPtr<ErrorPolicy_Warn>(dest.next,"*next",db); 1.254 + ReadFieldPtr<ErrorPolicy_Warn>(dest.object,"*object",db); 1.255 + 1.256 + db.reader->IncPtr(size); 1.257 +} 1.258 + 1.259 +//-------------------------------------------------------------------------------- 1.260 +template <> void Structure :: Convert<MTFace> ( 1.261 + MTFace& dest, 1.262 + const FileDatabase& db 1.263 + ) const 1.264 +{ 1.265 + 1.266 + ReadFieldArray2<ErrorPolicy_Fail>(dest.uv,"uv",db); 1.267 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.268 + ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); 1.269 + ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); 1.270 + ReadField<ErrorPolicy_Igno>(dest.unwrap,"unwrap",db); 1.271 + 1.272 + db.reader->IncPtr(size); 1.273 +} 1.274 + 1.275 +//-------------------------------------------------------------------------------- 1.276 +template <> void Structure :: Convert<Material> ( 1.277 + Material& dest, 1.278 + const FileDatabase& db 1.279 + ) const 1.280 +{ 1.281 + 1.282 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.283 + ReadField<ErrorPolicy_Warn>(dest.r,"r",db); 1.284 + ReadField<ErrorPolicy_Warn>(dest.g,"g",db); 1.285 + ReadField<ErrorPolicy_Warn>(dest.b,"b",db); 1.286 + ReadField<ErrorPolicy_Warn>(dest.specr,"specr",db); 1.287 + ReadField<ErrorPolicy_Warn>(dest.specg,"specg",db); 1.288 + ReadField<ErrorPolicy_Warn>(dest.specb,"specb",db); 1.289 + ReadField<ErrorPolicy_Igno>(dest.har,"har",db); 1.290 + ReadField<ErrorPolicy_Warn>(dest.ambr,"ambr",db); 1.291 + ReadField<ErrorPolicy_Warn>(dest.ambg,"ambg",db); 1.292 + ReadField<ErrorPolicy_Warn>(dest.ambb,"ambb",db); 1.293 + ReadField<ErrorPolicy_Igno>(dest.mirr,"mirr",db); 1.294 + ReadField<ErrorPolicy_Igno>(dest.mirg,"mirg",db); 1.295 + ReadField<ErrorPolicy_Igno>(dest.mirb,"mirb",db); 1.296 + ReadField<ErrorPolicy_Warn>(dest.emit,"emit",db); 1.297 + ReadField<ErrorPolicy_Warn>(dest.alpha,"alpha",db); 1.298 + ReadField<ErrorPolicy_Igno>(dest.ref,"ref",db); 1.299 + ReadField<ErrorPolicy_Igno>(dest.translucency,"translucency",db); 1.300 + ReadField<ErrorPolicy_Igno>(dest.roughness,"roughness",db); 1.301 + ReadField<ErrorPolicy_Igno>(dest.darkness,"darkness",db); 1.302 + ReadField<ErrorPolicy_Igno>(dest.refrac,"refrac",db); 1.303 + ReadFieldPtr<ErrorPolicy_Igno>(dest.group,"*group",db); 1.304 + ReadField<ErrorPolicy_Warn>(dest.diff_shader,"diff_shader",db); 1.305 + ReadField<ErrorPolicy_Warn>(dest.spec_shader,"spec_shader",db); 1.306 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mtex,"*mtex",db); 1.307 + 1.308 + db.reader->IncPtr(size); 1.309 +} 1.310 + 1.311 +//-------------------------------------------------------------------------------- 1.312 +template <> void Structure :: Convert<MTexPoly> ( 1.313 + MTexPoly& dest, 1.314 + const FileDatabase& db 1.315 + ) const 1.316 +{ 1.317 + 1.318 + { 1.319 + boost::shared_ptr<Image> tpage; 1.320 + ReadFieldPtr<ErrorPolicy_Igno>(tpage,"*tpage",db); 1.321 + dest.tpage = tpage.get(); 1.322 + } 1.323 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.324 + ReadField<ErrorPolicy_Igno>(dest.transp,"transp",db); 1.325 + ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); 1.326 + ReadField<ErrorPolicy_Igno>(dest.tile,"tile",db); 1.327 + ReadField<ErrorPolicy_Igno>(dest.pad,"pad",db); 1.328 + 1.329 + db.reader->IncPtr(size); 1.330 +} 1.331 + 1.332 +//-------------------------------------------------------------------------------- 1.333 +template <> void Structure :: Convert<Mesh> ( 1.334 + Mesh& dest, 1.335 + const FileDatabase& db 1.336 + ) const 1.337 +{ 1.338 + 1.339 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.340 + ReadField<ErrorPolicy_Fail>(dest.totface,"totface",db); 1.341 + ReadField<ErrorPolicy_Fail>(dest.totedge,"totedge",db); 1.342 + ReadField<ErrorPolicy_Fail>(dest.totvert,"totvert",db); 1.343 + ReadField<ErrorPolicy_Igno>(dest.totloop,"totloop",db); 1.344 + ReadField<ErrorPolicy_Igno>(dest.totpoly,"totpoly",db); 1.345 + ReadField<ErrorPolicy_Igno>(dest.subdiv,"subdiv",db); 1.346 + ReadField<ErrorPolicy_Igno>(dest.subdivr,"subdivr",db); 1.347 + ReadField<ErrorPolicy_Igno>(dest.subsurftype,"subsurftype",db); 1.348 + ReadField<ErrorPolicy_Igno>(dest.smoothresh,"smoothresh",db); 1.349 + ReadFieldPtr<ErrorPolicy_Fail>(dest.mface,"*mface",db); 1.350 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mtface,"*mtface",db); 1.351 + ReadFieldPtr<ErrorPolicy_Igno>(dest.tface,"*tface",db); 1.352 + ReadFieldPtr<ErrorPolicy_Fail>(dest.mvert,"*mvert",db); 1.353 + ReadFieldPtr<ErrorPolicy_Warn>(dest.medge,"*medge",db); 1.354 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mloop,"*mloop",db); 1.355 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopuv,"*mloopuv",db); 1.356 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mloopcol,"*mloopcol",db); 1.357 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mpoly,"*mpoly",db); 1.358 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mtpoly,"*mtpoly",db); 1.359 + ReadFieldPtr<ErrorPolicy_Igno>(dest.dvert,"*dvert",db); 1.360 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mcol,"*mcol",db); 1.361 + ReadFieldPtr<ErrorPolicy_Fail>(dest.mat,"**mat",db); 1.362 + 1.363 + db.reader->IncPtr(size); 1.364 +} 1.365 + 1.366 +//-------------------------------------------------------------------------------- 1.367 +template <> void Structure :: Convert<MDeformVert> ( 1.368 + MDeformVert& dest, 1.369 + const FileDatabase& db 1.370 + ) const 1.371 +{ 1.372 + 1.373 + ReadFieldPtr<ErrorPolicy_Warn>(dest.dw,"*dw",db); 1.374 + ReadField<ErrorPolicy_Igno>(dest.totweight,"totweight",db); 1.375 + 1.376 + db.reader->IncPtr(size); 1.377 +} 1.378 + 1.379 +//-------------------------------------------------------------------------------- 1.380 +template <> void Structure :: Convert<World> ( 1.381 + World& dest, 1.382 + const FileDatabase& db 1.383 + ) const 1.384 +{ 1.385 + 1.386 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.387 + 1.388 + db.reader->IncPtr(size); 1.389 +} 1.390 + 1.391 +//-------------------------------------------------------------------------------- 1.392 +template <> void Structure :: Convert<MLoopCol> ( 1.393 + MLoopCol& dest, 1.394 + const FileDatabase& db 1.395 + ) const 1.396 +{ 1.397 + 1.398 + ReadField<ErrorPolicy_Igno>(dest.r,"r",db); 1.399 + ReadField<ErrorPolicy_Igno>(dest.g,"g",db); 1.400 + ReadField<ErrorPolicy_Igno>(dest.b,"b",db); 1.401 + ReadField<ErrorPolicy_Igno>(dest.a,"a",db); 1.402 + 1.403 + db.reader->IncPtr(size); 1.404 +} 1.405 + 1.406 +//-------------------------------------------------------------------------------- 1.407 +template <> void Structure :: Convert<MVert> ( 1.408 + MVert& dest, 1.409 + const FileDatabase& db 1.410 + ) const 1.411 +{ 1.412 + 1.413 + ReadFieldArray<ErrorPolicy_Fail>(dest.co,"co",db); 1.414 + ReadFieldArray<ErrorPolicy_Fail>(dest.no,"no",db); 1.415 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.416 + ReadField<ErrorPolicy_Warn>(dest.mat_nr,"mat_nr",db); 1.417 + ReadField<ErrorPolicy_Igno>(dest.bweight,"bweight",db); 1.418 + 1.419 + db.reader->IncPtr(size); 1.420 +} 1.421 + 1.422 +//-------------------------------------------------------------------------------- 1.423 +template <> void Structure :: Convert<MEdge> ( 1.424 + MEdge& dest, 1.425 + const FileDatabase& db 1.426 + ) const 1.427 +{ 1.428 + 1.429 + ReadField<ErrorPolicy_Fail>(dest.v1,"v1",db); 1.430 + ReadField<ErrorPolicy_Fail>(dest.v2,"v2",db); 1.431 + ReadField<ErrorPolicy_Igno>(dest.crease,"crease",db); 1.432 + ReadField<ErrorPolicy_Igno>(dest.bweight,"bweight",db); 1.433 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.434 + 1.435 + db.reader->IncPtr(size); 1.436 +} 1.437 + 1.438 +//-------------------------------------------------------------------------------- 1.439 +template <> void Structure :: Convert<MLoopUV> ( 1.440 + MLoopUV& dest, 1.441 + const FileDatabase& db 1.442 + ) const 1.443 +{ 1.444 + 1.445 + ReadFieldArray<ErrorPolicy_Igno>(dest.uv,"uv",db); 1.446 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.447 + 1.448 + db.reader->IncPtr(size); 1.449 +} 1.450 + 1.451 +//-------------------------------------------------------------------------------- 1.452 +template <> void Structure :: Convert<GroupObject> ( 1.453 + GroupObject& dest, 1.454 + const FileDatabase& db 1.455 + ) const 1.456 +{ 1.457 + 1.458 + ReadFieldPtr<ErrorPolicy_Fail>(dest.prev,"*prev",db); 1.459 + ReadFieldPtr<ErrorPolicy_Fail>(dest.next,"*next",db); 1.460 + ReadFieldPtr<ErrorPolicy_Igno>(dest.ob,"*ob",db); 1.461 + 1.462 + db.reader->IncPtr(size); 1.463 +} 1.464 + 1.465 +//-------------------------------------------------------------------------------- 1.466 +template <> void Structure :: Convert<ListBase> ( 1.467 + ListBase& dest, 1.468 + const FileDatabase& db 1.469 + ) const 1.470 +{ 1.471 + 1.472 + ReadFieldPtr<ErrorPolicy_Igno>(dest.first,"*first",db); 1.473 + ReadFieldPtr<ErrorPolicy_Igno>(dest.last,"*last",db); 1.474 + 1.475 + db.reader->IncPtr(size); 1.476 +} 1.477 + 1.478 +//-------------------------------------------------------------------------------- 1.479 +template <> void Structure :: Convert<MLoop> ( 1.480 + MLoop& dest, 1.481 + const FileDatabase& db 1.482 + ) const 1.483 +{ 1.484 + 1.485 + ReadField<ErrorPolicy_Igno>(dest.v,"v",db); 1.486 + ReadField<ErrorPolicy_Igno>(dest.e,"e",db); 1.487 + 1.488 + db.reader->IncPtr(size); 1.489 +} 1.490 + 1.491 +//-------------------------------------------------------------------------------- 1.492 +template <> void Structure :: Convert<ModifierData> ( 1.493 + ModifierData& dest, 1.494 + const FileDatabase& db 1.495 + ) const 1.496 +{ 1.497 + 1.498 + ReadFieldPtr<ErrorPolicy_Warn>(dest.next,"*next",db); 1.499 + ReadFieldPtr<ErrorPolicy_Warn>(dest.prev,"*prev",db); 1.500 + ReadField<ErrorPolicy_Igno>(dest.type,"type",db); 1.501 + ReadField<ErrorPolicy_Igno>(dest.mode,"mode",db); 1.502 + ReadFieldArray<ErrorPolicy_Igno>(dest.name,"name",db); 1.503 + 1.504 + db.reader->IncPtr(size); 1.505 +} 1.506 + 1.507 +//-------------------------------------------------------------------------------- 1.508 +template <> void Structure :: Convert<ID> ( 1.509 + ID& dest, 1.510 + const FileDatabase& db 1.511 + ) const 1.512 +{ 1.513 + 1.514 + ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); 1.515 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.516 + 1.517 + db.reader->IncPtr(size); 1.518 +} 1.519 + 1.520 +//-------------------------------------------------------------------------------- 1.521 +template <> void Structure :: Convert<MCol> ( 1.522 + MCol& dest, 1.523 + const FileDatabase& db 1.524 + ) const 1.525 +{ 1.526 + 1.527 + ReadField<ErrorPolicy_Fail>(dest.r,"r",db); 1.528 + ReadField<ErrorPolicy_Fail>(dest.g,"g",db); 1.529 + ReadField<ErrorPolicy_Fail>(dest.b,"b",db); 1.530 + ReadField<ErrorPolicy_Fail>(dest.a,"a",db); 1.531 + 1.532 + db.reader->IncPtr(size); 1.533 +} 1.534 + 1.535 +//-------------------------------------------------------------------------------- 1.536 +template <> void Structure :: Convert<MPoly> ( 1.537 + MPoly& dest, 1.538 + const FileDatabase& db 1.539 + ) const 1.540 +{ 1.541 + 1.542 + ReadField<ErrorPolicy_Igno>(dest.loopstart,"loopstart",db); 1.543 + ReadField<ErrorPolicy_Igno>(dest.totloop,"totloop",db); 1.544 + ReadField<ErrorPolicy_Igno>(dest.mat_nr,"mat_nr",db); 1.545 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.546 + 1.547 + db.reader->IncPtr(size); 1.548 +} 1.549 + 1.550 +//-------------------------------------------------------------------------------- 1.551 +template <> void Structure :: Convert<Scene> ( 1.552 + Scene& dest, 1.553 + const FileDatabase& db 1.554 + ) const 1.555 +{ 1.556 + 1.557 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.558 + ReadFieldPtr<ErrorPolicy_Warn>(dest.camera,"*camera",db); 1.559 + ReadFieldPtr<ErrorPolicy_Warn>(dest.world,"*world",db); 1.560 + ReadFieldPtr<ErrorPolicy_Warn>(dest.basact,"*basact",db); 1.561 + ReadField<ErrorPolicy_Igno>(dest.base,"base",db); 1.562 + 1.563 + db.reader->IncPtr(size); 1.564 +} 1.565 + 1.566 +//-------------------------------------------------------------------------------- 1.567 +template <> void Structure :: Convert<Library> ( 1.568 + Library& dest, 1.569 + const FileDatabase& db 1.570 + ) const 1.571 +{ 1.572 + 1.573 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.574 + ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); 1.575 + ReadFieldArray<ErrorPolicy_Fail>(dest.filename,"filename",db); 1.576 + ReadFieldPtr<ErrorPolicy_Warn>(dest.parent,"*parent",db); 1.577 + 1.578 + db.reader->IncPtr(size); 1.579 +} 1.580 + 1.581 +//-------------------------------------------------------------------------------- 1.582 +template <> void Structure :: Convert<Tex> ( 1.583 + Tex& dest, 1.584 + const FileDatabase& db 1.585 + ) const 1.586 +{ 1.587 + 1.588 + ReadField<ErrorPolicy_Fail>((int&)dest.type,"type",db); 1.589 + ReadFieldPtr<ErrorPolicy_Warn>(dest.ima,"*ima",db); 1.590 + 1.591 + db.reader->IncPtr(size); 1.592 +} 1.593 + 1.594 +//-------------------------------------------------------------------------------- 1.595 +template <> void Structure :: Convert<Camera> ( 1.596 + Camera& dest, 1.597 + const FileDatabase& db 1.598 + ) const 1.599 +{ 1.600 + 1.601 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.602 + ReadField<ErrorPolicy_Warn>((int&)dest.type,"type",db); 1.603 + ReadField<ErrorPolicy_Warn>((int&)dest.flag,"flag",db); 1.604 + ReadField<ErrorPolicy_Warn>(dest.angle,"angle",db); 1.605 + 1.606 + db.reader->IncPtr(size); 1.607 +} 1.608 + 1.609 +//-------------------------------------------------------------------------------- 1.610 +template <> void Structure :: Convert<MirrorModifierData> ( 1.611 + MirrorModifierData& dest, 1.612 + const FileDatabase& db 1.613 + ) const 1.614 +{ 1.615 + 1.616 + ReadField<ErrorPolicy_Fail>(dest.modifier,"modifier",db); 1.617 + ReadField<ErrorPolicy_Igno>(dest.axis,"axis",db); 1.618 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.619 + ReadField<ErrorPolicy_Igno>(dest.tolerance,"tolerance",db); 1.620 + ReadFieldPtr<ErrorPolicy_Igno>(dest.mirror_ob,"*mirror_ob",db); 1.621 + 1.622 + db.reader->IncPtr(size); 1.623 +} 1.624 + 1.625 +//-------------------------------------------------------------------------------- 1.626 +template <> void Structure :: Convert<Image> ( 1.627 + Image& dest, 1.628 + const FileDatabase& db 1.629 + ) const 1.630 +{ 1.631 + 1.632 + ReadField<ErrorPolicy_Fail>(dest.id,"id",db); 1.633 + ReadFieldArray<ErrorPolicy_Warn>(dest.name,"name",db); 1.634 + ReadField<ErrorPolicy_Igno>(dest.ok,"ok",db); 1.635 + ReadField<ErrorPolicy_Igno>(dest.flag,"flag",db); 1.636 + ReadField<ErrorPolicy_Igno>(dest.source,"source",db); 1.637 + ReadField<ErrorPolicy_Igno>(dest.type,"type",db); 1.638 + ReadField<ErrorPolicy_Igno>(dest.pad,"pad",db); 1.639 + ReadField<ErrorPolicy_Igno>(dest.pad1,"pad1",db); 1.640 + ReadField<ErrorPolicy_Igno>(dest.lastframe,"lastframe",db); 1.641 + ReadField<ErrorPolicy_Igno>(dest.tpageflag,"tpageflag",db); 1.642 + ReadField<ErrorPolicy_Igno>(dest.totbind,"totbind",db); 1.643 + ReadField<ErrorPolicy_Igno>(dest.xrep,"xrep",db); 1.644 + ReadField<ErrorPolicy_Igno>(dest.yrep,"yrep",db); 1.645 + ReadField<ErrorPolicy_Igno>(dest.twsta,"twsta",db); 1.646 + ReadField<ErrorPolicy_Igno>(dest.twend,"twend",db); 1.647 + ReadFieldPtr<ErrorPolicy_Igno>(dest.packedfile,"*packedfile",db); 1.648 + ReadField<ErrorPolicy_Igno>(dest.lastupdate,"lastupdate",db); 1.649 + ReadField<ErrorPolicy_Igno>(dest.lastused,"lastused",db); 1.650 + ReadField<ErrorPolicy_Igno>(dest.animspeed,"animspeed",db); 1.651 + ReadField<ErrorPolicy_Igno>(dest.gen_x,"gen_x",db); 1.652 + ReadField<ErrorPolicy_Igno>(dest.gen_y,"gen_y",db); 1.653 + ReadField<ErrorPolicy_Igno>(dest.gen_type,"gen_type",db); 1.654 + 1.655 + db.reader->IncPtr(size); 1.656 +} 1.657 + 1.658 +//-------------------------------------------------------------------------------- 1.659 +void DNA::RegisterConverters() { 1.660 + 1.661 + converters["Object"] = DNA::FactoryPair( &Structure::Allocate<Object>, &Structure::Convert<Object> ); 1.662 + converters["Group"] = DNA::FactoryPair( &Structure::Allocate<Group>, &Structure::Convert<Group> ); 1.663 + converters["MTex"] = DNA::FactoryPair( &Structure::Allocate<MTex>, &Structure::Convert<MTex> ); 1.664 + converters["TFace"] = DNA::FactoryPair( &Structure::Allocate<TFace>, &Structure::Convert<TFace> ); 1.665 + converters["SubsurfModifierData"] = DNA::FactoryPair( &Structure::Allocate<SubsurfModifierData>, &Structure::Convert<SubsurfModifierData> ); 1.666 + converters["MFace"] = DNA::FactoryPair( &Structure::Allocate<MFace>, &Structure::Convert<MFace> ); 1.667 + converters["Lamp"] = DNA::FactoryPair( &Structure::Allocate<Lamp>, &Structure::Convert<Lamp> ); 1.668 + converters["MDeformWeight"] = DNA::FactoryPair( &Structure::Allocate<MDeformWeight>, &Structure::Convert<MDeformWeight> ); 1.669 + converters["PackedFile"] = DNA::FactoryPair( &Structure::Allocate<PackedFile>, &Structure::Convert<PackedFile> ); 1.670 + converters["Base"] = DNA::FactoryPair( &Structure::Allocate<Base>, &Structure::Convert<Base> ); 1.671 + converters["MTFace"] = DNA::FactoryPair( &Structure::Allocate<MTFace>, &Structure::Convert<MTFace> ); 1.672 + converters["Material"] = DNA::FactoryPair( &Structure::Allocate<Material>, &Structure::Convert<Material> ); 1.673 + converters["MTexPoly"] = DNA::FactoryPair( &Structure::Allocate<MTexPoly>, &Structure::Convert<MTexPoly> ); 1.674 + converters["Mesh"] = DNA::FactoryPair( &Structure::Allocate<Mesh>, &Structure::Convert<Mesh> ); 1.675 + converters["MDeformVert"] = DNA::FactoryPair( &Structure::Allocate<MDeformVert>, &Structure::Convert<MDeformVert> ); 1.676 + converters["World"] = DNA::FactoryPair( &Structure::Allocate<World>, &Structure::Convert<World> ); 1.677 + converters["MLoopCol"] = DNA::FactoryPair( &Structure::Allocate<MLoopCol>, &Structure::Convert<MLoopCol> ); 1.678 + converters["MVert"] = DNA::FactoryPair( &Structure::Allocate<MVert>, &Structure::Convert<MVert> ); 1.679 + converters["MEdge"] = DNA::FactoryPair( &Structure::Allocate<MEdge>, &Structure::Convert<MEdge> ); 1.680 + converters["MLoopUV"] = DNA::FactoryPair( &Structure::Allocate<MLoopUV>, &Structure::Convert<MLoopUV> ); 1.681 + converters["GroupObject"] = DNA::FactoryPair( &Structure::Allocate<GroupObject>, &Structure::Convert<GroupObject> ); 1.682 + converters["ListBase"] = DNA::FactoryPair( &Structure::Allocate<ListBase>, &Structure::Convert<ListBase> ); 1.683 + converters["MLoop"] = DNA::FactoryPair( &Structure::Allocate<MLoop>, &Structure::Convert<MLoop> ); 1.684 + converters["ModifierData"] = DNA::FactoryPair( &Structure::Allocate<ModifierData>, &Structure::Convert<ModifierData> ); 1.685 + converters["ID"] = DNA::FactoryPair( &Structure::Allocate<ID>, &Structure::Convert<ID> ); 1.686 + converters["MCol"] = DNA::FactoryPair( &Structure::Allocate<MCol>, &Structure::Convert<MCol> ); 1.687 + converters["MPoly"] = DNA::FactoryPair( &Structure::Allocate<MPoly>, &Structure::Convert<MPoly> ); 1.688 + converters["Scene"] = DNA::FactoryPair( &Structure::Allocate<Scene>, &Structure::Convert<Scene> ); 1.689 + converters["Library"] = DNA::FactoryPair( &Structure::Allocate<Library>, &Structure::Convert<Library> ); 1.690 + converters["Tex"] = DNA::FactoryPair( &Structure::Allocate<Tex>, &Structure::Convert<Tex> ); 1.691 + converters["Camera"] = DNA::FactoryPair( &Structure::Allocate<Camera>, &Structure::Convert<Camera> ); 1.692 + converters["MirrorModifierData"] = DNA::FactoryPair( &Structure::Allocate<MirrorModifierData>, &Structure::Convert<MirrorModifierData> ); 1.693 + converters["Image"] = DNA::FactoryPair( &Structure::Allocate<Image>, &Structure::Convert<Image> ); 1.694 +} 1.695 + 1.696 + 1.697 +#endif