static void smokeModifier_freeDomain(SmokeModifierData *smd) { if(smd->domain) { if(smd->domain->shadow) MEM_freeN(smd->domain->shadow); smd->domain->shadow = NULL; if(smd->domain->fluid) smoke_free(smd->domain->fluid); if(smd->domain->wt) smoke_turbulence_free(smd->domain->wt); if(smd->domain->effector_weights) MEM_freeN(smd->domain->effector_weights); smd->domain->effector_weights = NULL; BKE_ptcache_free_list(&(smd->domain->ptcaches[0])); smd->domain->point_cache[0] = NULL; BKE_ptcache_free_list(&(smd->domain->ptcaches[1])); smd->domain->point_cache[1] = NULL; MEM_freeN(smd->domain); smd->domain = NULL; } }
static void freeData(ModifierData *md) { ClothModifierData *clmd = (ClothModifierData *) md; if (clmd) { if (G.debug_value > 0) printf("clothModifier_freeData\n"); cloth_free_modifier_extern(clmd); if (clmd->sim_parms) { if (clmd->sim_parms->effector_weights) MEM_freeN(clmd->sim_parms->effector_weights); MEM_freeN(clmd->sim_parms); } if (clmd->coll_parms) MEM_freeN(clmd->coll_parms); BKE_ptcache_free_list(&clmd->ptcaches); clmd->point_cache = NULL; if (clmd->hairdata) MEM_freeN(clmd->hairdata); if (clmd->solver_result) MEM_freeN(clmd->solver_result); } }
static void copyData(ModifierData *md, ModifierData *target) { ClothModifierData *clmd = (ClothModifierData *) md; ClothModifierData *tclmd = (ClothModifierData *) target; if (tclmd->sim_parms) { if (tclmd->sim_parms->effector_weights) MEM_freeN(tclmd->sim_parms->effector_weights); MEM_freeN(tclmd->sim_parms); } if (tclmd->coll_parms) MEM_freeN(tclmd->coll_parms); BKE_ptcache_free_list(&tclmd->ptcaches); tclmd->point_cache = NULL; tclmd->sim_parms = MEM_dupallocN(clmd->sim_parms); if (clmd->sim_parms->effector_weights) tclmd->sim_parms->effector_weights = MEM_dupallocN(clmd->sim_parms->effector_weights); tclmd->coll_parms = MEM_dupallocN(clmd->coll_parms); tclmd->point_cache = BKE_ptcache_add(&tclmd->ptcaches); tclmd->point_cache->step = 1; tclmd->clothObject = NULL; tclmd->hairdata = NULL; tclmd->solver_result = NULL; }
/* Free rigidbody world */ void BKE_rigidbody_free_world(RigidBodyWorld *rbw) { /* sanity check */ if (!rbw) return; if (rbw->physics_world) { /* free physics references, we assume that all physics objects in will have been added to the world */ GroupObject *go; if (rbw->constraints) { for (go = rbw->constraints->gobject.first; go; go = go->next) { if (go->ob && go->ob->rigidbody_constraint) { RigidBodyCon *rbc = go->ob->rigidbody_constraint; if (rbc->physics_constraint) RB_dworld_remove_constraint(rbw->physics_world, rbc->physics_constraint); } } } if (rbw->group) { for (go = rbw->group->gobject.first; go; go = go->next) { if (go->ob && go->ob->rigidbody_object) { RigidBodyOb *rbo = go->ob->rigidbody_object; if (rbo->physics_object) RB_dworld_remove_body(rbw->physics_world, rbo->physics_object); } } } /* free dynamics world */ RB_dworld_delete(rbw->physics_world); } if (rbw->objects) free(rbw->objects); /* free cache */ BKE_ptcache_free_list(&(rbw->ptcaches)); rbw->pointcache = NULL; /* free effector weights */ if (rbw->effector_weights) MEM_freeN(rbw->effector_weights); /* free rigidbody world itself */ MEM_freeN(rbw); }
static void copyData(ModifierData *md, ModifierData *target) { ClothModifierData *clmd = (ClothModifierData *) md; ClothModifierData *tclmd = (ClothModifierData *) target; if (tclmd->sim_parms) { if (tclmd->sim_parms->effector_weights) MEM_freeN(tclmd->sim_parms->effector_weights); MEM_freeN(tclmd->sim_parms); } if (tclmd->coll_parms) MEM_freeN(tclmd->coll_parms); BKE_ptcache_free_list(&tclmd->ptcaches); tclmd->point_cache = NULL; tclmd->sim_parms = MEM_dupallocN(clmd->sim_parms); if (clmd->sim_parms->effector_weights) tclmd->sim_parms->effector_weights = MEM_dupallocN(clmd->sim_parms->effector_weights); tclmd->coll_parms = MEM_dupallocN(clmd->coll_parms); tclmd->point_cache = BKE_ptcache_copy_list(&tclmd->ptcaches, &clmd->ptcaches, FALSE); tclmd->clothObject = NULL; }