diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-09-18 06:59:57 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-09-18 06:59:57 +0400 |
commit | a87b2ff22b8884449bf04a0773370a33a3a410a3 (patch) | |
tree | a58d34d099d0d1c5810e0ed02d45d25d789832bb /source | |
parent | b32e5f7cb451b238d5ce62c97fa9431d4befd11b (diff) |
unwrapper wasnt working properly when UVSyncSelection was NOT enabled.
unwrapper and UV mapping menu items were not selecting UV's when initializing a new UV layer
selecting with the brush (BB) in the UV window did not update in the 3D view realtime, use the lock settings to make this work.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/src/editface.c | 8 | ||||
-rw-r--r-- | source/blender/src/editsima.c | 12 | ||||
-rw-r--r-- | source/blender/src/unwrapper.c | 17 |
3 files changed, 27 insertions, 10 deletions
diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index 5b86181b4df..65e335ea6ab 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -365,6 +365,14 @@ void calculate_uv_map(unsigned short mapmode) if (!EM_texFaceCheck()) return; + + /* select new UV's */ + if ((G.sima->flag & SI_SYNC_UVSEL)==0) { + for(efa=em->faces.first; efa; efa=efa->next) { + MTFace *tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + SIMA_FACESEL_SET(efa, tf); + } + } } ob=OBACT; diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c index a9d376dfbcd..876baa00260 100644 --- a/source/blender/src/editsima.c +++ b/source/blender/src/editsima.c @@ -964,7 +964,6 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad EditFace *efa; float offset[2]; MTFace *tface; - float ellipse[2]; // we need to deal with ellipses, as // non square textures require for circle // selection. this ellipse is normalized; r = 1.0 @@ -995,11 +994,14 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad bglFlush(); glDrawBuffer(GL_BACK); } + + + if (selecting == LEFTMOUSE) EM_select_flush(); + else EM_deselect_flush(); + + if (G.sima->lock && (G.sima->flag & SI_SYNC_UVSEL)) + force_draw_plus(SPACE_VIEW3D, 0); } - - if (selecting == LEFTMOUSE) EM_select_flush(); - else EM_deselect_flush(); - allqueue(REDRAWVIEW3D, 0); } diff --git a/source/blender/src/unwrapper.c b/source/blender/src/unwrapper.c index 05f128906ab..005119d448d 100644 --- a/source/blender/src/unwrapper.c +++ b/source/blender/src/unwrapper.c @@ -215,14 +215,11 @@ ParamHandle *construct_param_handle(EditMesh *em, short implicit, short fill, sh float *uv[4]; int nverts; - if (efa->h) + if ((efa->h) || (sel && (efa->f & SELECT)==0)) continue; tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if (sel && !SIMA_FACESEL_CHECK(efa, tf)) - continue; - if (implicit && !( SIMA_UVSEL_CHECK(efa, tf, 0) || SIMA_UVSEL_CHECK(efa, tf, 1) || @@ -284,7 +281,7 @@ ParamHandle *construct_param_handle(EditMesh *em, short implicit, short fill, sh } -extern int EM_texFaceCheck(); +extern int EM_texFaceCheck(void); void unwrap_lscm(short seamcut) { @@ -300,6 +297,16 @@ void unwrap_lscm(short seamcut) if (!EM_texFaceCheck()) return; + + /* select new UV's */ + if ((G.sima->flag & SI_SYNC_UVSEL)==0) { + EditFace *efa; + MTFace *tf; + for(efa=em->faces.first; efa; efa=efa->next) { + tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + SIMA_FACESEL_SET(efa, tf); + } + } } handle = construct_param_handle(em, 0, fillholes, seamcut == 0); |