void BKE_mesh_boundbox_calc(Mesh *me, float r_loc[3], float r_size[3]) { BoundBox *bb; float min[3], max[3]; float mloc[3], msize[3]; if (me->bb == NULL) me->bb = MEM_callocN(sizeof(BoundBox), "boundbox"); bb = me->bb; if (!r_loc) r_loc = mloc; if (!r_size) r_size = msize; INIT_MINMAX(min, max); if (!BKE_mesh_minmax(me, min, max)) { min[0] = min[1] = min[2] = -1.0f; max[0] = max[1] = max[2] = 1.0f; } mid_v3_v3v3(r_loc, min, max); r_size[0] = (max[0] - min[0]) / 2.0f; r_size[1] = (max[1] - min[1]) / 2.0f; r_size[2] = (max[2] - min[2]) / 2.0f; BKE_boundbox_init_from_minmax(bb, min, max); bb->flag &= ~BOUNDBOX_DIRTY; }
static void init_dualcon_mesh(DualConInput *input, Mesh *mesh) { memset(input, 0, sizeof(DualConInput)); input->co = (void *)mesh->mvert; input->co_stride = sizeof(MVert); input->totco = mesh->totvert; input->mloop = (void *)mesh->mloop; input->loop_stride = sizeof(MLoop); BKE_mesh_runtime_looptri_ensure(mesh); input->looptri = (void *)mesh->runtime.looptris.array; input->tri_stride = sizeof(MLoopTri); input->tottri = mesh->runtime.looptris.len; INIT_MINMAX(input->min, input->max); BKE_mesh_minmax(mesh, input->min, input->max); }