[Bf-blender-cvs] [4ec43d1] alembic_basic_io: Cleanup: reorder logic of read_mesh_sample.

Kévin Dietrich noreply at git.blender.org
Fri Jun 24 00:56:10 CEST 2016


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;
 }




More information about the Bf-blender-cvs mailing list