[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33265] trunk/blender/source/blender: use unit system for the grid floor (was only ortho before).
Campbell Barton
ideasman42 at gmail.com
Tue Nov 23 18:14:03 CET 2010
Revision: 33265
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33265
Author: campbellbarton
Date: 2010-11-23 18:14:03 +0100 (Tue, 23 Nov 2010)
Log Message:
-----------
use unit system for the grid floor (was only ortho before).
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_unit.h
trunk/blender/source/blender/blenkernel/intern/unit.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
Modified: trunk/blender/source/blender/blenkernel/BKE_unit.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_unit.h 2010-11-23 16:45:17 UTC (rev 33264)
+++ trunk/blender/source/blender/blenkernel/BKE_unit.h 2010-11-23 17:14:03 UTC (rev 33265)
@@ -52,6 +52,7 @@
//double bUnit_Iter(void **unit, char **name, int system, int type);
void bUnit_GetSystem(void **usys_pt, int *len, int system, int type);
+int bUnit_GetBaseUnit(void *usys_pt);
const char* bUnit_GetName(void *usys_pt, int index);
const char* bUnit_GetNameDisplay(void *usys_pt, int index);
double bUnit_GetScaler(void *usys_pt, int index);
Modified: trunk/blender/source/blender/blenkernel/intern/unit.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/unit.c 2010-11-23 16:45:17 UTC (rev 33264)
+++ trunk/blender/source/blender/blenkernel/intern/unit.c 2010-11-23 17:14:03 UTC (rev 33265)
@@ -755,6 +755,11 @@
*len= usys->length;
}
+int bUnit_GetBaseUnit(void *usys_pt)
+{
+ return ((bUnitCollection *)usys_pt)->base_unit;
+}
+
const char *bUnit_GetName(void *usys_pt, int index)
{
return ((bUnitCollection *)usys_pt)->units[index].name;
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-11-23 16:45:17 UTC (rev 33264)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-11-23 17:14:03 UTC (rev 33265)
@@ -250,8 +250,6 @@
float wx, wy, x, y, fw, fx, fy, dx;
float vec4[4];
char col[3], col2[3];
-
- *grid_unit= NULL;
vec4[0]=vec4[1]=vec4[2]=0.0;
vec4[3]= 1.0;
@@ -306,7 +304,7 @@
/* Store the smallest drawn grid size units name so users know how big each grid cell is */
if(*grid_unit==NULL) {
*grid_unit= bUnit_GetNameDisplay(usys, i);
- rv3d->gridview= (scalar / unit->scale_length) * v3d->grid;
+ rv3d->gridview= (scalar * v3d->grid) / unit->scale_length;
}
blend_fac= 1-((GRID_MIN_PX*2)/dx_scalar);
@@ -417,9 +415,9 @@
}
#undef GRID_MIN_PX
-static void drawfloor(Scene *scene, View3D *v3d)
+static void drawfloor(Scene *scene, View3D *v3d, const char **grid_unit)
{
- float vert[3], grid;
+ float vert[3], grid, grid_scale;
int a, gridlines, emphasise;
char col[3], col2[3];
short draw_line = 0;
@@ -428,11 +426,28 @@
if(v3d->gridlines<3) return;
+ grid_scale= v3d->grid;
+ /* use 'grid_scale' instead of 'v3d->grid' from now on */
+
+ /* apply units */
+ if(scene->unit.system) {
+ void *usys;
+ int len;
+
+ bUnit_GetSystem(&usys, &len, scene->unit.system, B_UNIT_LENGTH);
+
+ if(usys) {
+ int i= bUnit_GetBaseUnit(usys);
+ *grid_unit= bUnit_GetNameDisplay(usys, i);
+ grid_scale = (grid_scale * bUnit_GetScaler(usys, i)) / scene->unit.scale_length;
+ }
+ }
+
if(v3d->zbuf && scene->obedit) glDepthMask(0); // for zbuffer-select
gridlines= v3d->gridlines/2;
- grid= gridlines*v3d->grid;
-
+ grid= gridlines * grid_scale;
+
UI_GetThemeColor3ubv(TH_GRID, col);
UI_GetThemeColor3ubv(TH_BACK, col2);
@@ -472,7 +487,7 @@
if (draw_line) {
glBegin(GL_LINE_STRIP);
- vert[0]= a*v3d->grid;
+ vert[0]= a * grid_scale;
vert[1]= grid;
glVertex3fv(vert);
vert[1]= -grid;
@@ -511,7 +526,7 @@
if (draw_line) {
glBegin(GL_LINE_STRIP);
- vert[1]= a*v3d->grid;
+ vert[1]= a * grid_scale;
vert[0]= grid;
glVertex3fv(vert );
vert[0]= -grid;
@@ -2340,7 +2355,7 @@
if(rv3d->view==0 || rv3d->persp != RV3D_ORTHO) {
if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) {
- drawfloor(scene, v3d);
+ drawfloor(scene, v3d, &grid_unit);
}
if(rv3d->persp==RV3D_CAMOB) {
if(scene->world) {
More information about the Bf-blender-cvs
mailing list