Пример #1
0
static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
{
	Lattice *lt= ptr->id.data;
	Object *ob;
	int newu, newv, neww;

	/* we don't modify the actual pnts, but go through opnts instead */
	newu= (lt->opntsu > 0)? lt->opntsu: lt->pntsu;
	newv= (lt->opntsv > 0)? lt->opntsv: lt->pntsv;
	neww= (lt->opntsw > 0)? lt->opntsw: lt->pntsw;

	/* resizelattice needs an object, any object will have the same result */
	for(ob=bmain->object.first; ob; ob= ob->id.next) {
		if(ob->data == lt) {
			resizelattice(lt, newu, newv, neww, ob);
			if(lt->editlatt)
				resizelattice(lt->editlatt->latt, newu, newv, neww, ob);
			break;
		}
	}

	/* otherwise without, means old points are not repositioned */
	if(!ob) {
		resizelattice(lt, newu, newv, neww, NULL);
		if(lt->editlatt)
			resizelattice(lt->editlatt->latt, newu, newv, neww, NULL);
	}

	rna_Lattice_update_data(bmain, scene, ptr);
}
Пример #2
0
static int make_regular_exec(bContext *C, wmOperator *UNUSED(op))
{
	Object *ob= CTX_data_edit_object(C);
	Lattice *lt;
	
	if(ob) {
		lt= ob->data;
		resizelattice(lt->editlatt->latt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
	}
	else {
		ob= CTX_data_active_object(C);
		lt= ob->data;
		resizelattice(lt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
	}
	
	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
	WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data);

	return OPERATOR_FINISHED;
}
Пример #3
0
Lattice *add_lattice(const char *name)
{
	Lattice *lt;
	
	lt= alloc_libblock(&G.main->latt, ID_LT, name);
	
	lt->flag= LT_GRID;
	
	lt->typeu= lt->typev= lt->typew= KEY_BSPLINE;
	
	lt->def= MEM_callocN(sizeof(BPoint), "lattvert"); /* temporary */
	resizelattice(lt, 2, 2, 2, NULL);	/* creates a uniform lattice */
		
	return lt;
}