[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