[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36308] branches/bmesh/blender/source/ blender/editors: edge slide works in ortho now

Joseph Eagar joeedh at gmail.com
Sun Apr 24 09:45:25 CEST 2011


Revision: 36308
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36308
Author:   joeedh
Date:     2011-04-24 07:45:24 +0000 (Sun, 24 Apr 2011)
Log Message:
-----------
edge slide works in ortho now

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c
    branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.h
    branches/bmesh/blender/source/blender/editors/mesh/editface.c
    branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
    branches/bmesh/blender/source/blender/editors/object/object_modifier.c
    branches/bmesh/blender/source/blender/editors/transform/transform.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -1811,7 +1811,8 @@
 static int bm_test_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *obedit= CTX_data_edit_object(C);
-	RegionView3D *r3d = CTX_wm_region_view3d(C);		
+	ARegion *ar = CTX_wm_region(C);
+	View3D *v3d = CTX_wm_view3d(C);
 	BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
 	BMBVHTree *tree = BMBVH_NewBVH(em);
 	BMIter iter;
@@ -1822,7 +1823,7 @@
 		if (!BM_TestHFlag(e, BM_SELECT))
 			continue;
 
-		if (!BMBVH_EdgeVisible(tree, e, r3d, obedit))
+		if (!BMBVH_EdgeVisible(tree, e, ar, v3d, obedit))
 			BM_Select(em->bm, e, 0);
 	}
 
@@ -2716,6 +2717,7 @@
 {
 	Object *obedit= CTX_data_edit_object(C);
 	ARegion *ar= CTX_wm_region(C);
+	View3D *v3d = CTX_wm_view3d(C);
 	RegionView3D *rv3d= CTX_wm_region_view3d(C);
 	BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
 	BMOperator bmop;
@@ -2822,7 +2824,7 @@
 		BMO_ITER(e, &siter, em->bm, &bmop, i ? "edgeout2":"edgeout1", BM_EDGE) {
 			float cent[3] = {0, 0, 0}, mid[4], vec[3];
 
-			if (!BMBVH_EdgeVisible(bvhtree, e, rv3d, obedit) || !e->l)
+			if (!BMBVH_EdgeVisible(bvhtree, e, ar, v3d, obedit) || !e->l)
 				continue;
 
 			/*method for calculating distance:
@@ -4810,9 +4812,6 @@
 {
 	Object *obedit= CTX_data_edit_object(C);
 	BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh;
-	Material *ma;
-	Tex *tex;
-	BMVert *eve;
 	BMIter iter;
 	BMEdge *eed;
 	BMOperator bmop;
@@ -4821,7 +4820,7 @@
 	float p3 = RNA_float_get(op->ptr, "param3");
 	float p4 = RNA_float_get(op->ptr, "param4");
 	float p5 = RNA_float_get(op->ptr, "param5");*/
-	int i, tot, recursion = RNA_int_get(op->ptr, "recursion");
+	int i, recursion = RNA_int_get(op->ptr, "recursion");
 	float *w = NULL, ftot;
 	int li;
 	BLI_array_declare(w);

Modified: branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -659,17 +659,25 @@
 	add_v3_v3(c1, p);
 }
 
-int BMBVH_EdgeVisible(BMBVHTree *tree, BMEdge *e, RegionView3D *r3d, Object *obedit)
+
+int BMBVH_EdgeVisible(BMBVHTree *tree, BMEdge *e, ARegion *ar, View3D *v3d, Object *obedit)
 {
 	BMFace *f;
+	RegionView3D *rv3d = ar->regiondata;
 	float co1[3], co2[3], co3[3], dir1[4], dir2[4], dir3[4];
 	float origin[3], invmat[4][4];
 	float epsilon = 0.01f; 
+	float m[2], end[3];
 	
-	if (r3d->persp == RV3D_ORTHO) {
-		VECCOPY(origin, r3d->winmat[3]);
+	if (!ar) {
+		printf("error in BMBVH_EdgeVisible!\n");
+		return 0;
 	}
-	VECCOPY(origin, r3d->viewinv[3]);
+	
+	m[0] = ar->winx/2.0;
+	m[1] = ar->winy/2.0;
+	viewline(ar, v3d, m, origin, end);
+	
 	invert_m4_m4(invmat, obedit->obmat);
 	mul_m4_v3(invmat, origin);
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.h
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.h	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.h	2011-04-24 07:45:24 UTC (rev 36308)
@@ -20,7 +20,7 @@
 struct BMFace *BMBVH_RayCast(struct BMBVHTree *tree, float *co, float *dir, float *hitout);
 
 int BMBVH_EdgeVisible(struct BMBVHTree *tree, struct BMEdge *e, 
-                      struct RegionView3D *r3d, struct Object *obedit);
+                      struct ARegion *ar, struct View3D *v3d, struct Object *obedit);
 
 #define BM_SEARCH_MAXDIST	0.4f
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/editface.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editface.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/mesh/editface.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -74,7 +74,7 @@
 {
 	Mesh *me= get_mesh(ob);
 	DerivedMesh *dm= ob->derivedFinal;
-	MPoly *faces, *mf, *mf_orig;
+	MPoly *mf_orig;
 	DMFaceIter *fiter;
 	int *index = NULL;
 	int totface;
@@ -150,8 +150,6 @@
 MTexPoly *EDBM_get_active_mtface(BMEditMesh *em, BMFace **act_efa, int sloppy)
 {
 	BMFace *efa = NULL;
-	BMLoop *l;
-	BMIter iter, liter;
 	
 	if(!EDBM_texFaceCheck(em))
 		return NULL;
@@ -524,7 +522,7 @@
 	}
 }
 
-static float bm_cdata_get_single_float(BMesh *bm, CustomData *cdata, void *element, int type)
+static float bm_cdata_get_single_float(BMesh *UNUSED(bm), CustomData *cdata, void *element, int type)
 {
 	BMHeader *ele = element;
 	float *f;

Modified: branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -924,10 +924,13 @@
 		return;	
 
 	/*unproject screen line*/
-	view3d_unproject(&mats, v1, s1[0], s1[1], 0.0f);
+	viewline(kcd->ar, kcd->vc.v3d, s1, v1, v3);
+	viewline(kcd->ar, kcd->vc.v3d, s2, v2, v4);
+	
+	/*view3d_unproject(&mats, v1, s1[0], s1[1], 0.0f);
 	view3d_unproject(&mats, v2, s2[0], s2[1], 0.0f);
 	view3d_unproject(&mats, v3, s1[0], s1[1], 1.0f-FLT_EPSILON);
-	view3d_unproject(&mats, v4, s2[0], s2[1], 1.0f-FLT_EPSILON);
+	view3d_unproject(&mats, v4, s2[0], s2[1], 1.0f-FLT_EPSILON);*/
 	
 	mul_m4_v3(kcd->ob->imat, v1);
 	mul_m4_v3(kcd->ob->imat, v2);

Modified: branches/bmesh/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/object/object_modifier.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/object/object_modifier.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -1090,8 +1090,7 @@
 
 static int multires_test_exec(bContext *C, wmOperator *op)
 {
-	Object *ob= ED_object_active_context(C), *secondob= NULL;
-	Scene *scene= CTX_data_scene(C);
+	Object *ob= ED_object_active_context(C);
 	Mesh *me = ob->data;
 	MPoly *mp;
 	MDisps *mdisps;

Modified: branches/bmesh/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/transform/transform.c	2011-04-24 07:02:45 UTC (rev 36307)
+++ branches/bmesh/blender/source/blender/editors/transform/transform.c	2011-04-24 07:45:24 UTC (rev 36308)
@@ -4363,7 +4363,8 @@
 	BMBVHTree *btree = BMBVH_NewBVH(em);
 	SmallHash table;
 	SlideData *sld = MEM_callocN(sizeof(*sld), "sld");
-	RegionView3D *v3d = t->ar ? t->ar->regiondata : NULL; /* background mode support */
+	View3D *v3d = t->sa ? t->sa->spacedata.first : NULL;
+	RegionView3D *rv3d = t->ar ? t->ar->regiondata : NULL; /* background mode support */
 	ARegion *ar = t->ar;
 	float projectMat[4][4];
 	float start[3] = {0.0f, 0.0f, 0.0f}, dir[3], end[3] = {0.0f, 0.0f, 0.0f};
@@ -4374,7 +4375,7 @@
 		/*ok, let's try to survive this*/
 		unit_m4(projectMat);
 	} else {
-		view3d_get_object_project_mat(v3d, t->obedit, projectMat);
+		view3d_get_object_project_mat(rv3d, t->obedit, projectMat);
 	}
 	
 	BLI_smallhash_init(&sld->vhash);
@@ -4558,7 +4559,7 @@
 					if (BM_TestHFlag(e2, BM_SELECT))
 						continue;
 					
-					if (!BMBVH_EdgeVisible(btree, e2, v3d, t->obedit))
+					if (!BMBVH_EdgeVisible(btree, e2, ar, v3d, t->obedit))
 						continue;
 					
 					j = GET_INT_FROM_POINTER(BLI_smallhash_lookup(&table, (uintptr_t)v));




More information about the Bf-blender-cvs mailing list