diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-02-11 11:40:54 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-02-11 13:30:13 +0300 |
commit | 2d1e07268645b481dbbb924a5f638dc9fa870945 (patch) | |
tree | b114d919168a89370b90a5aff7636c8339b6c879 /source/blender/editors/transform/transform.h | |
parent | f2951c23cf8d84bdb0964f53a93957f31c8b9f41 (diff) |
UV Island support for vertex & edge slide
This ensures slide with `Correct UVs` enabled, keeps UV's (any loop custom-data) contiguous.
Adds 2 key functions `BM_vert_loop_groups_data_layer_create` and `BM_vert_loop_groups_data_layer_merge`
They work by collecting matching loop custom-data around the vertices loop-fan,
and merging the custom-data after edits are made.
Thanks to @mont29 for review!
Diffstat (limited to 'source/blender/editors/transform/transform.h')
-rw-r--r-- | source/blender/editors/transform/transform.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 2330ec6e79e..84a81e8b3d8 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -200,9 +200,19 @@ typedef struct TransDataNla { struct LinkNode; struct GHash; +/* header of TransDataEdgeSlideVert, TransDataEdgeSlideEdge */ +typedef struct TransDataGenericSlideVert { + struct BMVert *v; + struct LinkNode **cd_loop_groups; +} TransDataGenericSlideVert; + typedef struct TransDataEdgeSlideVert { - struct BMVert *v_a, *v_b; + /* TransDataGenericSlideVert */ struct BMVert *v; + struct LinkNode **cd_loop_groups; + /* end generic */ + + struct BMVert *v_a, *v_b; float v_co_orig[3]; float edge_len; @@ -220,6 +230,13 @@ typedef struct SlideOrigData { bool use_origfaces; struct GHash *origfaces; struct BMesh *bm_origfaces; + + struct MemArena *arena; + /* number of math BMLoop layers */ + int layer_math_map_num; + /* array size of 'layer_math_map_num' + * maps TransDataVertSlideVert.cd_group index to absolute CustomData layer index */ + int *layer_math_map; } SlideOrigData; typedef struct EdgeSlideData { @@ -241,7 +258,11 @@ typedef struct EdgeSlideData { typedef struct TransDataVertSlideVert { + /* TransDataGenericSlideVert */ BMVert *v; + struct LinkNode **cd_loop_groups; + /* end generic */ + float co_orig_3d[3]; float co_orig_2d[2]; float (*co_link_orig_3d)[3]; |