diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-07-25 15:57:36 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-07-25 15:57:36 +0400 |
commit | cc0f3146e798479be0758b5c152ef67ef42ea8dc (patch) | |
tree | 669704799ec2a83908777d1b0d9cc1517dfb871c /source/blender/blenkernel/intern/displist.c | |
parent | 61a09d96b1c10decb732f77a50421101e43cf401 (diff) |
Shapekeys for curves/surfeces
Fix #21498: Edit curve Shape key /252_r 27318
Added full support of shape keys for curves and nurbs surfaces including
topology changing in edit mode, undo stuff, updating relative keys when
working under basis and so on.
Diffstat (limited to 'source/blender/blenkernel/intern/displist.c')
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index bb020c936a6..ca659faa972 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -63,6 +63,7 @@ #include "BLO_sys_types.h" // for intptr_t support +#include "ED_curve.h" /* for BKE_curve_nurbs */ static void boundbox_displist(Object *ob); @@ -1221,7 +1222,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl ModifierData *md = modifiers_getVirtualModifierList(ob); ModifierData *preTesselatePoint; Curve *cu= ob->data; - ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb; + ListBase *nurb= BKE_curve_nurbs(cu); int numVerts = 0; int editmode = (!forRender && cu->editnurb); float (*originalVerts)[3] = NULL; @@ -1324,8 +1325,9 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba ModifierData *md = modifiers_getVirtualModifierList(ob); ModifierData *preTesselatePoint; Curve *cu= ob->data; - ListBase *nurb= cu->editnurb?cu->editnurb:&cu->nurb; - int required_mode, totvert = 0; + ListBase *nurb= BKE_curve_nurbs(cu); + DispList *dl; + int required_mode = 0, totvert = 0; int editmode = (!forRender && cu->editnurb); DerivedMesh *dm= NULL, *ndm; float (*vertCos)[3] = NULL; @@ -1590,9 +1592,9 @@ void makeDispListSurf(Scene *scene, Object *ob, ListBase *dispbase, int numVerts; float (*originalVerts)[3]; float (*deformedVerts)[3]; - + if(!forRender && cu->editnurb) - nubase= cu->editnurb; + nubase= ED_curve_editnurbs(cu); else nubase= &cu->nurb; @@ -1689,10 +1691,7 @@ static void do_makeDispListCurveTypes(Scene *scene, Object *ob, ListBase *dispba cu->taperobj = NULL; } - if(cu->editnurb) - nubase= cu->editnurb; - else - nubase= &cu->nurb; + nubase= BKE_curve_nurbs(cu); BLI_freelistN(&(cu->bev)); |