void merge_group(struct group *group, struct group *child) { struct groupdata *groupdata = group->data; struct groupdata *childdata = child->data; for (size_t i = 0; i < ptrarray_count(childdata->blocks); ++i) { struct block *copy = copy_block(get_ptrarray(childdata->blocks, i)); translate_block(copy, &child->position); push_ptrarray(groupdata->blocks, copy); } for (size_t i = 0; i < ptrarray_count(childdata->groups); ++i) { struct group *copy = copy_group(get_ptrarray(childdata->groups, i)); vec3_add(©->position, ©->position, &child->position); insert_group(group, copy); } destroy_group(child); update_group_vertexarray(group); }
// insert group. Take ownership int TAO::PG_Group_Factory::insert_group ( ::TAO::PG_Object_Group * group) { return insert_group (group->get_object_group_id(), group); }