DLLFUNC VECTOR* mdl_center (Mdl* m, BOOL centerx, BOOL centery, BOOL centerz)
{
if (m)
{
int n = 0;
VECTOR sum;
vec_fill(&sum, 0);
for (int i = 0; i < mdl_groups(m); i++)
{
MdlGroup* g = mdl_group(m, i);
for (int j = 0; j < mdl_groupvertices(g); j++)
{
MdlVertex* v = mdl_groupvertex(g, j);
vec_add(&sum, mdl_vertexpos(v));
n++;
}
}
if (n > 0)
{
sum.x = _VAR(_FLOAT(sum.x) / (float)n);
sum.y = _VAR(_FLOAT(sum.y) / (float)n);
sum.z = _VAR(_FLOAT(sum.z) / (float)n);
mdl_move(m, centerx ? -_FLOAT(sum.x) : 0,
centery ? -_FLOAT(sum.y) : 0,
centerz ? -_FLOAT(sum.z) : 0);
return(vector(sum.x, sum.y, sum.z));
}
else
return(NULL);
}
else
return(NULL);
}