Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-02-11 11:40:54 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-02-11 13:30:13 +0300
commit2d1e07268645b481dbbb924a5f638dc9fa870945 (patch)
treeb114d919168a89370b90a5aff7636c8339b6c879 /source/blender/editors/transform/transform.h
parentf2951c23cf8d84bdb0964f53a93957f31c8b9f41 (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.h23
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];