[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45810] branches/soc-2011-tomato: Merging r45801 through r45809 from trunk into soc-2011-tomato

Sergey Sharybin sergey.vfx at gmail.com
Fri Apr 20 15:15:58 CEST 2012


Revision: 45810
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45810
Author:   nazgul
Date:     2012-04-20 13:15:57 +0000 (Fri, 20 Apr 2012)
Log Message:
-----------
Merging r45801 through r45809 from trunk into soc-2011-tomato

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45801
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45809

Modified Paths:
--------------
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_view3d_toolbar.py
    branches/soc-2011-tomato/source/blender/blenkernel/intern/anim.c
    branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.c
    branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.h
    branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_knife.c
    branches/soc-2011-tomato/source/blender/editors/mesh/mesh_intern.h
    branches/soc-2011-tomato/source/blender/editors/mesh/mesh_ops.c

Property Changed:
----------------
    branches/soc-2011-tomato/
    branches/soc-2011-tomato/source/blender/editors/space_outliner/


Property changes on: branches/soc-2011-tomato
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-45800
   + /branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-45809

Modified: branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2012-04-20 12:55:57 UTC (rev 45809)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2012-04-20 13:15:57 UTC (rev 45810)
@@ -142,6 +142,14 @@
         col.operator("mesh.spin")
         col.operator("mesh.screw")
 
+        row = col.row(align=True)
+        props = row.operator("mesh.knife_tool", text="Knife")
+        props.use_occlude_geometry = True
+        props.only_select = False
+        props = row.operator("mesh.knife_tool", text="Select")
+        props.use_occlude_geometry = False
+        props.only_select = True
+
         col = layout.column(align=True)
         col.label(text="Remove:")
         col.menu("VIEW3D_MT_edit_mesh_delete")

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/anim.c	2012-04-20 12:55:57 UTC (rev 45809)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/anim.c	2012-04-20 13:15:57 UTC (rev 45810)
@@ -1407,17 +1407,16 @@
 			if (part->ren_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
 				for (go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
 
+					copy_m4_m4(tmat, oblist[b]->obmat);
+					/* apply particle scale */
+					mul_mat3_m4_fl(tmat, size*scale);
+					mul_v3_fl(tmat[3], size*scale);
 					/* group dupli offset, should apply after everything else */
-					if (!is_zero_v3(part->dup_group->dupli_ofs)) {
-						copy_m4_m4(tmat, oblist[b]->obmat);
+					if (!is_zero_v3(part->dup_group->dupli_ofs))
 						sub_v3_v3v3(tmat[3], tmat[3], part->dup_group->dupli_ofs);
-						mult_m4_m4m4(tmat, pamat, tmat);
-					}
-					else {
-						mult_m4_m4m4(tmat, pamat, oblist[b]->obmat);
-					}
+					/* individual particle transform */
+					mult_m4_m4m4(tmat, pamat, tmat);
 
-					mul_mat3_m4_fl(tmat, size*scale);
 					if (par_space_mat)
 						mult_m4_m4m4(mat, par_space_mat, tmat);
 					else

Modified: branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.c	2012-04-20 12:55:57 UTC (rev 45809)
+++ branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.c	2012-04-20 13:15:57 UTC (rev 45810)
@@ -104,10 +104,18 @@
 	tree->bm = em->bm;
 	tree->epsilon = FLT_EPSILON * 2.0f;
 	tree->flag = flag;
-	
-	if (flag & BMBVH_RESPECT_HIDDEN) {
+
+	if (flag & (BMBVH_RESPECT_SELECT)) {
 		tottri = 0;
 		for (i = 0; i < em->tottri; i++) {
+			if (BM_elem_flag_test(em->looptris[i][0]->f, BM_ELEM_SELECT)) {
+				tottri++;
+			}
+		}
+	}
+	else if (flag & (BMBVH_RESPECT_HIDDEN)) {
+		tottri = 0;
+		for (i = 0; i < em->tottri; i++) {
 			if (!BM_elem_flag_test(em->looptris[i][0]->f, BM_ELEM_HIDDEN)) {
 				tottri++;
 			}
@@ -146,8 +154,15 @@
 	
 	for (i = 0; i < em->tottri; i++) {
 
-		if (flag & BMBVH_RESPECT_HIDDEN) {
+
+		if (flag & BMBVH_RESPECT_SELECT) {
 			/* note, the arrays wont allign now! take care */
+			if (!BM_elem_flag_test(em->looptris[i][0]->f, BM_ELEM_SELECT)) {
+				continue;
+			}
+		}
+		else if (flag & BMBVH_RESPECT_HIDDEN) {
+			/* note, the arrays wont allign now! take care */
 			if (BM_elem_flag_test(em->looptris[i][0]->f, BM_ELEM_HIDDEN)) {
 				continue;
 			}

Modified: branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.h
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.h	2012-04-20 12:55:57 UTC (rev 45809)
+++ branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_bvh.h	2012-04-20 13:15:57 UTC (rev 45810)
@@ -64,7 +64,8 @@
 enum {
 	BMBVH_USE_CAGE        = 1, /* project geometry onto modifier cage */
 	BMBVH_RETURN_ORIG     = 2, /* use with BMBVH_USE_CAGE, returns hits in relation to original geometry */
-	BMBVH_RESPECT_HIDDEN  = 4
+	BMBVH_RESPECT_SELECT  = 4, /* restrict to hidden geometry (overrides BMBVH_RESPECT_HIDDEN) */
+	BMBVH_RESPECT_HIDDEN  = 8  /* omit hidden geometry */
 };
 
 #endif /* __EDITBMESH_BVH_H__ */

Modified: branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_knife.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_knife.c	2012-04-20 12:55:57 UTC (rev 45809)
+++ branches/soc-2011-tomato/source/blender/editors/mesh/editmesh_knife.c	2012-04-20 13:15:57 UTC (rev 45810)
@@ -71,7 +71,14 @@
 
 #define KMAXDIST    10  /* max mouse distance from edge before not detecting it */
 
-#define USE_SELECTED_ONLY
+typedef struct KnifeColors {
+	unsigned char line[3];
+	unsigned char edge[3];
+	unsigned char curpoint[3];
+	unsigned char curpoint_a[4];
+	unsigned char point[3];
+	unsigned char point_a[4];
+} KnifeColors;
 
 /* knifetool operator */
 typedef struct KnifeVert {
@@ -123,11 +130,11 @@
 } KnifePosData;
 
 /* struct for properties used while drawing */
-typedef struct knifetool_opdata {
+typedef struct KnifeTool_OpData {
 	ARegion *ar;        /* region that knifetool was activated in */
 	void *draw_handle;  /* for drawing preview loop */
 	ViewContext vc;
-	bContext *C;
+	//bContext *C;
 
 	Object *ob;
 	BMEditMesh *em;
@@ -159,8 +166,15 @@
 	BLI_mempool *refs;
 
 	float projmat[4][4];
-	int is_ortho;
-	int cut_through;
+
+	KnifeColors colors;
+
+	/* operatpr options */
+	char cut_through;    /* preference, can be modified at runtime (that feature may go) */
+	char only_select;    /* set on initialization */
+	char select_result;  /* set on initialization */
+
+	short is_ortho;
 	float clipsta, clipend;
 
 	enum {
@@ -182,30 +196,30 @@
 	} angle_snapping;
 
 	float (*cagecos)[3];
-} knifetool_opdata;
+} KnifeTool_OpData;
 
-static ListBase *knife_get_face_kedges(knifetool_opdata *kcd, BMFace *f);
+static ListBase *knife_get_face_kedges(KnifeTool_OpData *kcd, BMFace *f);
 
-static void knife_input_ray_cast(knifetool_opdata *kcd, const int mval_i[2],
+static void knife_input_ray_cast(KnifeTool_OpData *kcd, const int mval_i[2],
                                  float r_origin[3], float r_ray[3]);
 
-static void knife_update_header(bContext *C, knifetool_opdata *kcd)
+static void knife_update_header(bContext *C, KnifeTool_OpData *kcd)
 {
 	#define HEADER_LENGTH 170
 	char header[HEADER_LENGTH];
 
 	BLI_snprintf(header, HEADER_LENGTH, "LMB: define cut lines, Return: confirm, Esc or RMB: cancel, E: new cut, Ctrl: midpoint snap (%s), "
-				 "Shift: ignore snap (%s), C: angle constrain (%s), Z: cut through (%s)",
-				 kcd->snap_midpoints? "On" : "Off",
-				 kcd->ignore_edge_snapping?  "On" : "Off",
-				 kcd->angle_snapping? "On" : "Off",
-				 kcd->cut_through? "On" : "Off");
+	             "Shift: ignore snap (%s), C: angle constrain (%s), Z: cut through (%s)",
+	             kcd->snap_midpoints ? "On" : "Off",
+	             kcd->ignore_edge_snapping ?  "On" : "Off",
+	             kcd->angle_snapping ? "On" : "Off",
+	             kcd->cut_through ? "On" : "Off");
 
 	ED_area_headerprint(CTX_wm_area(C), header);
 }
 
 
-static void knife_project_v3(knifetool_opdata *kcd, const float co[3], float sco[3])
+static void knife_project_v3(KnifeTool_OpData *kcd, const float co[3], float sco[3])
 {
 	ED_view3d_project_float_v3(kcd->ar, co, sco, kcd->projmat);
 }
@@ -221,7 +235,7 @@
 	kpd->mval[1] = 0;
 }
 
-static ListBase *knife_empty_list(knifetool_opdata *kcd)
+static ListBase *knife_empty_list(KnifeTool_OpData *kcd)
 {
 	ListBase *lst;
 
@@ -230,7 +244,7 @@
 	return lst;
 }
 
-static void knife_append_list(knifetool_opdata *kcd, ListBase *lst, void *elem)
+static void knife_append_list(KnifeTool_OpData *kcd, ListBase *lst, void *elem)
 {
 	Ref *ref;
 
@@ -251,19 +265,19 @@
 	return NULL;
 }
 
-static KnifeEdge *new_knife_edge(knifetool_opdata *kcd)
+static KnifeEdge *new_knife_edge(KnifeTool_OpData *kcd)
 {
 	kcd->totkedge++;
 	return BLI_mempool_calloc(kcd->kedges);
 }
 
-static void knife_add_to_vert_edges(knifetool_opdata *kcd, KnifeEdge *kfe)
+static void knife_add_to_vert_edges(KnifeTool_OpData *kcd, KnifeEdge *kfe)
 {
 	knife_append_list(kcd, &kfe->v1->edges, kfe);
 	knife_append_list(kcd, &kfe->v2->edges, kfe);
 }
 
-static KnifeVert *new_knife_vert(knifetool_opdata *kcd, float *co, float *cageco)
+static KnifeVert *new_knife_vert(KnifeTool_OpData *kcd, float *co, float *cageco)
 {
 	KnifeVert *kfv = BLI_mempool_calloc(kcd->kverts);
 
@@ -279,7 +293,7 @@
 }
 
 /* get a KnifeVert wrapper for an existing BMVert */
-static KnifeVert *get_bm_knife_vert(knifetool_opdata *kcd, BMVert *v)
+static KnifeVert *get_bm_knife_vert(KnifeTool_OpData *kcd, BMVert *v)
 {
 	KnifeVert *kfv = BLI_ghash_lookup(kcd->origvertmap, v);
 
@@ -295,7 +309,7 @@
 /**
  * get a KnifeEdge wrapper for an existing BMEdge
  * \note #knife_get_face_kedges / #get_bm_knife_edge are called recusively - KEEP STACK MEM USAGE LOW */
-static KnifeEdge *get_bm_knife_edge(knifetool_opdata *kcd, BMEdge *e)
+static KnifeEdge *get_bm_knife_edge(KnifeTool_OpData *kcd, BMEdge *e)
 {
 	KnifeEdge *kfe = BLI_ghash_lookup(kcd->origedgemap, e);
 	if (!kfe) {
@@ -328,7 +342,7 @@
 
 /* User has just clicked for first time or first time after a restart (E key).
  * Copy the current position data into prev. */
-static void knife_start_cut(knifetool_opdata *kcd)
+static void knife_start_cut(KnifeTool_OpData *kcd)
 {
 	kcd->prev = kcd->cur;
 	kcd->cur.is_space = 0; /*TODO: why do we do this? */
@@ -352,7 +366,7 @@
 
 /**
  * \note #knife_get_face_kedges / #get_bm_knife_edge are called recusively - KEEP STACK MEM USAGE LOW */
-static ListBase *knife_get_face_kedges(knifetool_opdata *kcd, BMFace *f)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list