[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46510] trunk/blender/source/blender: Code cleanup for multires_dm_create_from_derived().

Nicholas Bishop nicholasbishop at gmail.com
Thu May 10 22:32:09 CEST 2012


Revision: 46510
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46510
Author:   nicholasbishop
Date:     2012-05-10 20:32:09 +0000 (Thu, 10 May 2012)
Log Message:
-----------
Code cleanup for multires_dm_create_from_derived().

Changed name to multires_make_derived_from_derived() and parameter
order to be more similar to subsurf_make_derived_from_derived().

Added MultiresFlags enum with flag values to replace the local_mmd and
useRenderParams parameters.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_multires.h
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/modifiers/intern/MOD_multires.c

Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h	2012-05-10 20:31:55 UTC (rev 46509)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h	2012-05-10 20:32:09 UTC (rev 46510)
@@ -59,9 +59,16 @@
 
 void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob);
 
-struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
-	int local_mmd, struct DerivedMesh*, struct Object *, int);
+typedef enum {
+	MULTIRES_USE_LOCAL_MMD = 1,
+	MULTIRES_USE_RENDER_PARAMS = 2,
+} MultiresFlags;
 
+struct DerivedMesh *multires_make_derived_from_derived(struct DerivedMesh *dm,
+													   struct MultiresModifierData *mmd,
+													   struct Object *ob,
+													   MultiresFlags flags);
+
 struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene,
 	struct ModifierData *lastmd);
 struct MultiresModifierData *get_multires_modifier(struct Scene *scene, struct Object *ob, int use_first);

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2012-05-10 20:31:55 UTC (rev 46509)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2012-05-10 20:32:09 UTC (rev 46510)
@@ -678,7 +678,7 @@
 	mmd.totlvl = totlvl;
 	mmd.simple = simple;
 
-	return multires_dm_create_from_derived(&mmd, 1, dm, ob, 0);
+	return multires_make_derived_from_derived(dm, &mmd, ob, MULTIRES_USE_LOCAL_MMD);
 }
 
 static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple, int optimal, int plain_uv)
@@ -1326,15 +1326,16 @@
 	}
 }
 
-DerivedMesh *multires_dm_create_from_derived(MultiresModifierData *mmd,
-                                             int local_mmd, DerivedMesh *dm,
-                                             Object *ob, int useRenderParams)
+DerivedMesh *multires_make_derived_from_derived(DerivedMesh *dm,
+												MultiresModifierData *mmd,
+												Object *ob,
+												MultiresFlags flags)
 {
 	Mesh *me = ob->data;
 	DerivedMesh *result;
 	CCGDerivedMesh *ccgdm = NULL;
 	DMGridData **gridData, **subGridData;
-	int lvl = multires_get_level(ob, mmd, useRenderParams);
+	int lvl = multires_get_level(ob, mmd, (flags & MULTIRES_USE_RENDER_PARAMS));
 	int i, gridSize, numGrids;
 
 	if (lvl == 0)
@@ -1344,12 +1345,12 @@
 	                                 mmd->simple, mmd->flags & eMultiresModifierFlag_ControlEdges,
 	                                 mmd->flags & eMultiresModifierFlag_PlainUv);
 
-	if (!local_mmd) {
+	if (!(flags & MULTIRES_USE_LOCAL_MMD)) {
 		ccgdm = (CCGDerivedMesh *)result;
 
 		ccgdm->multires.ob = ob;
 		ccgdm->multires.mmd = mmd;
-		ccgdm->multires.local_mmd = local_mmd;
+		ccgdm->multires.local_mmd = 0;
 		ccgdm->multires.lvl = lvl;
 		ccgdm->multires.totlvl = mmd->totlvl;
 		ccgdm->multires.modified_flags = 0;
@@ -1993,7 +1994,7 @@
 
 	mmd->lvl = mmd->totlvl;
 	orig = CDDM_from_mesh(me, NULL);
-	dm = multires_dm_create_from_derived(mmd, 0, orig, ob, 0);
+	dm = multires_make_derived_from_derived(orig, mmd, ob, 0);
 					   
 	multires_load_old_dm(dm, me, mmd->totlvl + 1);
 

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2012-05-10 20:31:55 UTC (rev 46509)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2012-05-10 20:32:09 UTC (rev 46510)
@@ -1020,7 +1020,8 @@
 
 		tmp_mmd.lvl = *lvl;
 		tmp_mmd.sculptlvl = *lvl;
-		dm = multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0);
+		dm = multires_make_derived_from_derived(cddm, &tmp_mmd, ob,
+												MULTIRES_USE_LOCAL_MMD);
 		cddm->release(cddm);
 	}
 
@@ -1040,7 +1041,8 @@
 
 	tmp_mmd.lvl = mmd->totlvl;
 	tmp_mmd.sculptlvl = mmd->totlvl;
-	dm = multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0);
+	dm = multires_make_derived_from_derived(cddm, &tmp_mmd, ob,
+											MULTIRES_USE_LOCAL_MMD);
 	cddm->release(cddm);
 
 	return dm;

Modified: trunk/blender/source/blender/modifiers/intern/MOD_multires.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_multires.c	2012-05-10 20:31:55 UTC (rev 46509)
+++ trunk/blender/source/blender/modifiers/intern/MOD_multires.c	2012-05-10 20:32:09 UTC (rev 46510)
@@ -77,6 +77,7 @@
 	DerivedMesh *result;
 	Mesh *me = (Mesh *)ob->data;
 	const int useRenderParams = flag & MOD_APPLY_RENDER;
+	MultiresFlags flags = 0;
 
 	if (mmd->totlvl) {
 		if (!CustomData_get_layer(&me->ldata, CD_MDISPS)) {
@@ -85,8 +86,11 @@
 		}
 	}
 
-	result = multires_dm_create_from_derived(mmd, 0, dm, ob, useRenderParams);
+	if (useRenderParams)
+		flags |= MULTIRES_USE_RENDER_PARAMS;
 
+	result = multires_make_derived_from_derived(dm, mmd, ob, flags);
+
 	if (result == dm)
 		return dm;
 




More information about the Bf-blender-cvs mailing list