[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