New strict 'hide' rules for editmesh & new selectmodes
- vertex hidden, always means edge is hidden too - edge hidden, always means face is hidden too - face hidden, only means face hides This means, that in face mode you can hide a face, whilst in edge mode the edges will still display. Please note, that when you have no edges saved in a Mesh, it also doesnt store the hide flags for it, causing in/out editmode too reset hidden edges.
This commit is contained in:
@@ -302,15 +302,37 @@ void EM_selectmode_set(void)
|
||||
if(eed->f & SELECT) EM_select_edge(eed, 1);
|
||||
/* selects faces based on edge status */
|
||||
EM_selectmode_flush();
|
||||
|
||||
}
|
||||
else if(G.scene->selectmode == SCE_SELECT_FACE) {
|
||||
/* deselect eges, and select again based on face select */
|
||||
for(eed= em->edges.first; eed; eed= eed->next) EM_select_edge(eed, 0);
|
||||
|
||||
for(efa= em->faces.first; efa; efa= efa->next)
|
||||
if(efa->f & SELECT) EM_select_face(efa, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* paranoia check, actually only for entering editmode. rule:
|
||||
- vertex hidden, always means edge is hidden too
|
||||
- edge hidden, always means face is hidden too
|
||||
- face hidden, dont change anything
|
||||
*/
|
||||
void EM_hide_reset(void)
|
||||
{
|
||||
EditMesh *em = G.editMesh;
|
||||
EditEdge *eed;
|
||||
EditFace *efa;
|
||||
|
||||
for(eed= em->edges.first; eed; eed= eed->next)
|
||||
if(eed->v1->h || eed->v2->h) eed->h |= 1;
|
||||
|
||||
for(efa= em->faces.first; efa; efa= efa->next)
|
||||
if((efa->e1->h & 1) || (efa->e2->h & 1) || (efa->e3->h & 1) || (efa->e4 && (efa->e4->h & 1)))
|
||||
efa->h= 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ******** EXTRUDE ********* */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user