[Bf-committers] derivedmesh iterators

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Jun 2 12:45:14 CEST 2008


Hi,

I've been working a bit on an iterator interface for derivedmesh, and a derivedmesh wrapper for displists. I didn't intend to write anything about it yet because the design is a work in progress with incomplete code and bugs in it, but apparently it came up as at topic at the meeting so I'm posting a patch against the apricot branch here for people who want to look at it.

http://users.pandora.be/blendix/derivedmesh_iterator_patch.txt

And some example code from the patch:

DMVertIterator v;
DMIteratorData origlayer;
int orig, count = 0;

dm->getVertIterator(dm, &v);
dm->getVertIteratorData(dm, &origlayer, CD_ORIGINDEX, NULL);

/* get the average of all verts with (original index == nr) */
for(v.begin(&v); v.valid; v.next(&v)) {
	orig= *((int*)v.data(&v, &origlayer));

	if(orig == nr) {
		VecAddf(vec, vec, v.co);
		count++;
	}
}

if (count==0) /* keep as 0,0,0 */
	memset(vec, 0, sizeof(float)*3);
else
	VecMulf(vec, 1.0f/count);

dm->freeVertIterator(dm, &v);


Brecht.





More information about the Bf-committers mailing list