[Bf-blender-cvs] [ce1670b] soc-2016-uv_tools: WIP: Added "select shortest path" operator for UVs
Phil Gosch
noreply at git.blender.org
Tue May 24 16:31:23 CEST 2016
Commit: ce1670be25c7ee08ab6251463e2ae6fb07edecdb
Author: Phil Gosch
Date: Tue May 24 16:27:42 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rBce1670be25c7ee08ab6251463e2ae6fb07edecdb
WIP: Added "select shortest path" operator for UVs
Main functionality still missing, calls mesh-tool for selecting shortest path if Sync Selection is checked
===================================================================
M source/blender/editors/include/ED_mesh.h
M source/blender/editors/mesh/editmesh_path.c
M source/blender/editors/uvedit/uvedit_ops.c
===================================================================
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index de798b1..6b1e305 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -128,6 +128,9 @@ void EDBM_flag_disable_all(struct BMEditMesh *em, const char hflag);
bool BMBVH_EdgeVisible(struct BMBVHTree *tree, struct BMEdge *e,
struct ARegion *ar, struct View3D *v3d, struct Object *obedit);
+/* editmesh_path.c*/
+int EDBM_shortest_path_select(struct bContext *C, struct wmOperator *op);
+
/* editmesh_select.c */
void EDBM_select_mirrored(
struct BMEditMesh *em, const int axis, const bool extend,
diff --git a/source/blender/editors/mesh/editmesh_path.c b/source/blender/editors/mesh/editmesh_path.c
index 4431712..a044cb2 100644
--- a/source/blender/editors/mesh/editmesh_path.c
+++ b/source/blender/editors/mesh/editmesh_path.c
@@ -779,6 +779,11 @@ static int edbm_shortest_path_select_exec(bContext *C, wmOperator *op)
}
}
+int EDBM_shortest_path_select(struct bContext *C, struct wmOperator *op)
+{
+ return edbm_shortest_path_select_exec(C, op);
+}
+
void MESH_OT_shortest_path_select(wmOperatorType *ot)
{
/* identifiers */
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 193b006..6a6e746 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -1472,6 +1472,36 @@ static void UV_OT_select_less(wmOperatorType *ot)
ot->poll = ED_operator_uvedit_space_image;
}
+/*********************** shortest path ***********************/
+static int uv_shortest_path_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ ToolSettings *ts = scene->toolsettings;
+ BMEditMesh *em = BKE_editmesh_from_object(obedit);
+
+ if (ts->uv_flag & UV_SYNC_SELECTION) {
+ return EDBM_shortest_path_select(C, op);
+ }
+
+ /* TODO(SaphireS): implementation of operator based on UV islands*/
+
+ return OPERATOR_FINISHED;
+}
+
+static void UV_OT_shortest_path(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Select Shortest Path";
+ ot->description = "Select the shortest path between the current selection";
+ ot->idname = "UV_OT_shortest_path";
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+ /* api callbacks */
+ ot->exec = uv_shortest_path_exec;
+ ot->poll = ED_operator_uvedit_space_image;
+}
+
/* ******************** align operator **************** */
static void uv_weld_align(bContext *C, int tool)
@@ -4246,6 +4276,7 @@ void ED_operatortypes_uvedit(void)
WM_operatortype_append(UV_OT_circle_select);
WM_operatortype_append(UV_OT_select_more);
WM_operatortype_append(UV_OT_select_less);
+ WM_operatortype_append(UV_OT_shortest_path);
WM_operatortype_append(UV_OT_snap_cursor);
WM_operatortype_append(UV_OT_snap_selected);
More information about the Bf-blender-cvs
mailing list