static void rna_Lattice_use_outside_set(PointerRNA *ptr, int value) { Lattice *lt= ptr->data; if(value) lt->flag |= LT_OUTSIDE; else lt->flag &= ~LT_OUTSIDE; outside_lattice(lt); if(lt->editlatt) { if(value) lt->editlatt->latt->flag |= LT_OUTSIDE; else lt->editlatt->latt->flag &= ~LT_OUTSIDE; outside_lattice(lt->editlatt->latt); } }
/* copied from editobject.c, now uses (almost) proper depgraph */ static void special_transvert_update(Scene *scene, Object *obedit) { if(obedit) { DAG_id_flush_update(obedit->data, OB_RECALC_DATA); if(obedit->type==OB_MESH) { Mesh *me= obedit->data; recalc_editnormals(me->edit_mesh); // does face centers too } else if (ELEM(obedit->type, OB_CURVE, OB_SURF)) { Curve *cu= obedit->data; Nurb *nu= cu->editnurb->first; while(nu) { test2DNurb(nu); testhandlesNurb(nu); /* test for bezier too */ nu= nu->next; } } else if(obedit->type==OB_ARMATURE){ bArmature *arm= obedit->data; EditBone *ebo; TransVert *tv= transvmain; int a=0; /* Ensure all bone tails are correctly adjusted */ for (ebo= arm->edbo->first; ebo; ebo=ebo->next) { /* adjust tip if both ends selected */ if ((ebo->flag & BONE_ROOTSEL) && (ebo->flag & BONE_TIPSEL)) { if (tv) { float diffvec[3]; VecSubf(diffvec, tv->loc, tv->oldloc); VecAddf(ebo->tail, ebo->tail, diffvec); a++; if (a<tottrans) tv++; } } } /* Ensure all bones are correctly adjusted */ for (ebo= arm->edbo->first; ebo; ebo=ebo->next) { if ((ebo->flag & BONE_CONNECTED) && ebo->parent){ /* If this bone has a parent tip that has been moved */ if (ebo->parent->flag & BONE_TIPSEL){ VECCOPY (ebo->head, ebo->parent->tail); } /* If this bone has a parent tip that has NOT been moved */ else{ VECCOPY (ebo->parent->tail, ebo->head); } } } if(arm->flag & ARM_MIRROR_EDIT) transform_armature_mirror_update(obedit); } else if(obedit->type==OB_LATTICE) { Lattice *lt= obedit->data; if(lt->editlatt->flag & LT_OUTSIDE) outside_lattice(lt->editlatt); } } }