[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57841] branches/soc-2013-bge/source/ blender/editors/space_view3d/view3d_draw.c: Group instances now update their base objects' level of detail temporarily from their own position.

Daniel Stokes kupomail at gmail.com
Fri Jun 28 02:01:39 CEST 2013


Revision: 57841
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57841
Author:   kupoman
Date:     2013-06-28 00:01:37 +0000 (Fri, 28 Jun 2013)
Log Message:
-----------
Group instances now update their base objects' level of detail temporarily from their own position. This allows group instances to behave properly with levels of detail.

Modified Paths:
--------------
    branches/soc-2013-bge/source/blender/editors/space_view3d/view3d_draw.c

Modified: branches/soc-2013-bge/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/soc-2013-bge/source/blender/editors/space_view3d/view3d_draw.c	2013-06-27 23:43:54 UTC (rev 57840)
+++ branches/soc-2013-bge/source/blender/editors/space_view3d/view3d_draw.c	2013-06-28 00:01:37 UTC (rev 57841)
@@ -2003,6 +2003,7 @@
 {
 	RegionView3D *rv3d = ar->regiondata;
 	ListBase *lb;
+	LodLevel *savedlod;
 	DupliObject *dob_prev = NULL, *dob, *dob_next = NULL;
 	Base tbase = {NULL};
 	BoundBox bb, *bb_tmp; /* use a copy because draw_object, calls clear_mesh_caches */
@@ -2023,6 +2024,13 @@
 	for (; dob; dob_prev = dob, dob = dob_next, dob_next = dob_next ? dupli_step(dob_next->next) : NULL) {
 		tbase.object = dob->ob;
 
+		/* Make sure lod is updated from dupli's position */
+
+		copy_m4_m4(dob->ob->obmat, dob->mat);
+		savedlod = dob->ob->currentlod;
+		BKE_object_lod_update(dob->ob, rv3d->viewinv[3]);
+		
+
 		/* extra service: draw the duplicator in drawtype of parent, minimum taken
 		 * to allow e.g. boundbox box objects in groups for LOD */
 		dt = tbase.object->dt;
@@ -2093,13 +2101,13 @@
 			glLoadMatrixf(rv3d->viewmat);
 		}
 		else {
-			copy_m4_m4(dob->ob->obmat, dob->mat);
 			draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR);
 		}
 
 		tbase.object->dt = dt;
 		tbase.object->dtx = dtx;
 		tbase.object->transflag = transflag;
+		tbase.object->currentlod = savedlod;
 	}
 	
 	/* Transp afterdraw disabled, afterdraw only stores base pointers, and duplis can be same obj */




More information about the Bf-blender-cvs mailing list