Commit: 4ec43d16c7d3ef4af83bdad0edfe55dd35630d2c
Author: Kévin Dietrich
Date:   Fri Jun 24 00:38:43 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rB4ec43d16c7d3ef4af83bdad0edfe55dd35630d2c

Cleanup: reorder logic of read_mesh_sample.

===================================================================

M       source/blender/alembic/intern/alembic_capi.cc

===================================================================

diff --git a/source/blender/alembic/intern/alembic_capi.cc 
b/source/blender/alembic/intern/alembic_capi.cc
index 176fc40..8a25a42 100644
--- a/source/blender/alembic/intern/alembic_capi.cc
+++ b/source/blender/alembic/intern/alembic_capi.cc
@@ -768,6 +768,12 @@ static DerivedMesh *read_mesh_sample(DerivedMesh *dm, 
const IObject &iobject, co
                new_dm = true;
        }
 
+       MVert *mverts = dm->getVertArray(dm);
+       MPoly *mpolys = dm->getPolyArray(dm);
+       MLoop *mloops = dm->getLoopArray(dm);
+       MLoopUV *mloopuvs = NULL;
+       CustomData *ldata = dm->getLoopDataLayout(dm);
+
        const IV2fGeomParam uv = schema.getUVsParam();
        Alembic::Abc::V2fArraySamplePtr uvs;
        Alembic::Abc::UInt32ArraySamplePtr uvs_indices;
@@ -782,6 +788,21 @@ static DerivedMesh *read_mesh_sample(DerivedMesh *dm, 
const IObject &iobject, co
                        uvs = Alembic::Abc::V2fArraySamplePtr();
                        uvs_indices = Alembic::Abc::UInt32ArraySamplePtr();
                }
+               else {
+                       std::string name = 
Alembic::Abc::GetSourceName(uv.getMetaData());
+
+                       /* According to the convention, primary UVs should have 
had their name
+                        * set using Alembic::Abc::SetSourceName, but you can't 
expect everyone
+                        * to follow it! :) */
+                       if (name.empty()) {
+                               name = uv.getName();
+                       }
+
+                       void *ptr = add_customdata_cb(dm, name.c_str(), 
CD_MLOOPUV);
+                       mloopuvs = static_cast<MLoopUV *>(ptr);
+
+                       dm->dirty = 
static_cast<DMDirtyFlag>(static_cast<int>(dm->dirty) | 
static_cast<int>(DM_DIRTY_TESS_CDLAYERS));
+               }
        }
 
        N3fArraySamplePtr vertex_normals, poly_normals;
@@ -798,35 +819,10 @@ static DerivedMesh *read_mesh_sample(DerivedMesh *dm, 
const IObject &iobject, co
                {
                        vertex_normals = normsamp.getVals();
                }
-       }
-
-       MVert *mverts = dm->getVertArray(dm);
-       MPoly *mpolys = dm->getPolyArray(dm);
-       MLoop *mloops = dm->getLoopArray(dm);
-       MLoopUV *mloopuvs = static_cast<MLoopUV 
*>(CustomData_get(&dm->loopData, 0, CD_MLOOPUV));
-
-       if (!mloopuvs && uvs) {
-               std::string name = 
Alembic::Abc::GetSourceName(uv.getMetaData());
-
-               /* According to the convention, primary UVs should have had 
their name
-                * set using Alembic::Abc::SetSourceName, but you can't expect 
everyone
-                * to follow it! :) */
-               if (name.empty()) {
-                       name = uv.getName();
-               }
-
-               void *ptr = 
CustomData_add_layer_named(dm->getLoopDataLayout(dm),
-                                                      CD_MLOOPUV,
-                                                      CD_DEFAULT,
-                                                      NULL,
-                                                      dm->getNumLoops(dm),
-                                                      name.c_str());
 
-               mloopuvs = static_cast<MLoopUV *>(ptr);
+               dm->dirty = 
static_cast<DMDirtyFlag>(static_cast<int>(dm->dirty) | 
static_cast<int>(DM_DIRTY_NORMALS));
        }
 
-       CustomData *ldata = dm->getLoopDataLayout(dm);
-
        read_mverts(mverts, positions, vertex_normals);
        read_mpolys(mpolys, mloops, mloopuvs, ldata, face_indices, face_counts, 
uvs, uvs_indices, poly_normals);
 
@@ -844,10 +840,6 @@ static DerivedMesh *read_mesh_sample(DerivedMesh *dm, 
const IObject &iobject, co
                CDDM_calc_edges(dm);
        }
 
-       if (!normals.valid()) {
-               dm->dirty = 
static_cast<DMDirtyFlag>(static_cast<int>(dm->dirty) | 
static_cast<int>(DM_DIRTY_NORMALS));
-       }
-
        return dm;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to