/* frees all */ void cloth_free_modifier(ClothModifierData *clmd ) { Cloth *cloth = NULL; if ( !clmd ) return; cloth = clmd->clothObject; if ( cloth ) { BPH_cloth_solver_free(clmd); // Free the verts. if ( cloth->verts != NULL ) MEM_freeN ( cloth->verts ); cloth->verts = NULL; cloth->mvert_num = 0; // Free the springs. if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); search = search->next; } BLI_linklist_free(cloth->springs, NULL); cloth->springs = NULL; } cloth->springs = NULL; cloth->numsprings = 0; // free BVH collision tree if ( cloth->bvhtree ) BLI_bvhtree_free ( cloth->bvhtree ); if ( cloth->bvhselftree ) BLI_bvhtree_free ( cloth->bvhselftree ); // we save our faces for collision objects if (cloth->tri) MEM_freeN(cloth->tri); if (cloth->edgeset) BLI_edgeset_free(cloth->edgeset); /* if (clmd->clothObject->facemarks) MEM_freeN(clmd->clothObject->facemarks); */ MEM_freeN ( cloth ); clmd->clothObject = NULL; } }
static void cloth_free_errorsprings(Cloth *cloth, LinkNode **edgelist) { if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); search = search->next; } BLI_linklist_free(cloth->springs, NULL); cloth->springs = NULL; } cloth_free_edgelist(edgelist, cloth->numverts); if (cloth->edgeset) { BLI_edgeset_free(cloth->edgeset); cloth->edgeset = NULL; } }
/* frees all */ void cloth_free_modifier_extern(ClothModifierData *clmd ) { Cloth *cloth = NULL; if (G.debug_value > 0) printf("cloth_free_modifier_extern\n"); if ( !clmd ) return; cloth = clmd->clothObject; if ( cloth ) { if (G.debug_value > 0) printf("cloth_free_modifier_extern in\n"); // If our solver provides a free function, call it if ( solvers [clmd->sim_parms->solver_type].free ) { solvers [clmd->sim_parms->solver_type].free ( clmd ); } // Free the verts. if ( cloth->verts != NULL ) MEM_freeN ( cloth->verts ); cloth->verts = NULL; cloth->numverts = 0; // Free the springs. if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); search = search->next; } BLI_linklist_free(cloth->springs, NULL); cloth->springs = NULL; } cloth->springs = NULL; cloth->numsprings = 0; // free BVH collision tree if ( cloth->bvhtree ) BLI_bvhtree_free ( cloth->bvhtree ); if ( cloth->bvhselftree ) BLI_bvhtree_free ( cloth->bvhselftree ); // we save our faces for collision objects if ( cloth->mfaces ) MEM_freeN ( cloth->mfaces ); if (cloth->edgeset) BLI_edgeset_free(cloth->edgeset); /* if (clmd->clothObject->facemarks) MEM_freeN(clmd->clothObject->facemarks); */ MEM_freeN ( cloth ); clmd->clothObject = NULL; } }