diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2019-08-27 17:19:25 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2019-08-27 17:24:16 +0300 |
commit | d8baafd693ebf830d6153bd31bd63521c7569984 (patch) | |
tree | ee44ef834e826322e9de79cc943edb8be66041a3 /source/blender/editors/include | |
parent | 2a2fd75ef90f18753d3d6ab33c30e60cd95bf174 (diff) |
Edit Mesh: Poly build tool improvements
This commit changes the functionality of the Poly build tool to make it more suitable for retopology tasks:
- Click and drag from a boundary edge extrudes a new quad
- Click and drag on vertices tweaks the position
- Ctrl + click adds geometry. There is a geometry preview in the gizmo. It also can automatically convert triangles to quads.
- Shift + click deletes mesh elements (faces or vertices)
- Updated preselection code. Different mesh elements take priority depending on the selected action.
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D5573
Diffstat (limited to 'source/blender/editors/include')
-rw-r--r-- | source/blender/editors/include/ED_mesh.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 234f36a587b..194378d6bb6 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -194,8 +194,11 @@ bool EDBM_unified_findnearest(struct ViewContext *vc, bool EDBM_unified_findnearest_from_raycast(struct ViewContext *vc, struct Base **bases, const uint bases_len, - bool use_boundary, - int *r_base_index, + bool use_boundary_vertices, + bool use_boundary_edges, + int *r_base_index_vert, + int *r_base_index_edge, + int *r_base_index_face, struct BMVert **r_eve, struct BMEdge **r_eed, struct BMFace **r_efa); @@ -245,15 +248,30 @@ void EDBM_preselect_edgering_update_from_edge(struct EditMesh_PreSelEdgeRing *ps /* editmesh_preselect_elem.c */ struct EditMesh_PreSelElem; +typedef enum eEditMesh_PreSelPreviewAction { + PRESELECT_ACTION_TRANSFORM = 1, + PRESELECT_ACTION_CREATE = 2, + PRESELECT_ACTION_DELETE = 3, +} eEditMesh_PreSelPreviewAction; + struct EditMesh_PreSelElem *EDBM_preselect_elem_create(void); void EDBM_preselect_elem_destroy(struct EditMesh_PreSelElem *psel); void EDBM_preselect_elem_clear(struct EditMesh_PreSelElem *psel); +void EDBM_preselect_preview_clear(struct EditMesh_PreSelElem *psel); void EDBM_preselect_elem_draw(struct EditMesh_PreSelElem *psel, const float matrix[4][4]); void EDBM_preselect_elem_update_from_single(struct EditMesh_PreSelElem *psel, struct BMesh *bm, struct BMElem *ele, const float (*coords)[3]); +void EDBM_preselect_elem_update_preview(struct EditMesh_PreSelElem *psel, + struct ViewContext *vc, + struct BMesh *bm, + struct BMElem *ele, + const int mval[2]); +void EDBM_preselect_action_set(struct EditMesh_PreSelElem *psel, + eEditMesh_PreSelPreviewAction action); +eEditMesh_PreSelPreviewAction EDBM_preselect_action_get(struct EditMesh_PreSelElem *psel); /* mesh_ops.c */ void ED_operatortypes_mesh(void); void ED_operatormacros_mesh(void); |