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:
authorTon Roosendaal <ton@blender.org>2003-10-25 15:38:04 +0400
committerTon Roosendaal <ton@blender.org>2003-10-25 15:38:04 +0400
commit3545113051671615aa8190ec59ece03655a20f59 (patch)
tree0ab7ab64ec191e9ef0bb2904c7ba43f44b65ec27 /source/blender/blenkernel/intern/subsurf.c
parentf4ce3d1b86b0ffa084d1505957c5234bab595afd (diff)
fixed three bugs:
- subsurf also smoothed loose vertices, in a strange way that never showed up until 'draw subsurf handles' was implemented. fixed subsurf code not to include loose vertices anymore - saving a file in editmode caused a new displaylist to made... fixed an old bad hack from NaN period. (displists are still lousy code...) - fixed drawing vertices in frontbuffer on select. the delay you see is because blender waits for 'rightmouse transform'.
Diffstat (limited to 'source/blender/blenkernel/intern/subsurf.c')
-rw-r--r--source/blender/blenkernel/intern/subsurf.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/subsurf.c b/source/blender/blenkernel/intern/subsurf.c
index bc1ea3fc478..613cc69d9f7 100644
--- a/source/blender/blenkernel/intern/subsurf.c
+++ b/source/blender/blenkernel/intern/subsurf.c
@@ -402,16 +402,25 @@ static HyperMesh *hypermesh_from_editmesh(EditVert *everts, EditEdge *eedges, Ed
EditEdge *ee;
EditVlak *ef;
+ /* we only add vertices with edges, 'f1' is a free flag */
+ for (ev= everts; ev; ev= ev->next) ev->f1= 1;
+
/* hack, tuck the new hypervert pointer into
* the ev->prev link so we can find it easy,
* then restore real prev links later.
*/
- for (ev= everts; ev; ev= ev->next)
- ev->prev= (EditVert*) hypermesh_add_vert(hme, ev->co, ev->co);
-
- for (ee= eedges; ee; ee= ee->next)
+ for (ee= eedges; ee; ee= ee->next) {
+ if(ee->v1->f1) {
+ ee->v1->prev= (EditVert*) hypermesh_add_vert(hme, ee->v1->co, ee->v1->co);
+ ee->v1->f1= 0;
+ }
+ if(ee->v2->f1) {
+ ee->v2->prev= (EditVert*) hypermesh_add_vert(hme, ee->v2->co, ee->v2->co);
+ ee->v2->f1= 0;
+ }
+
hypermesh_add_edge(hme, (HyperVert*) ee->v1->prev, (HyperVert*) ee->v2->prev, 1);
-
+ }
for (ef= efaces; ef; ef= ef->next) {
int nverts= ef->v4?4:3;
HyperVert *verts[4];