RigidBodyWorld *BKE_rigidbody_world_copy(RigidBodyWorld *rbw) { RigidBodyWorld *rbwn = MEM_dupallocN(rbw); if (rbw->effector_weights) rbwn->effector_weights = MEM_dupallocN(rbw->effector_weights); if (rbwn->group) id_us_plus(&rbwn->group->id); if (rbwn->constraints) id_us_plus(&rbwn->constraints->id); rbwn->pointcache = BKE_ptcache_copy_list(&rbwn->ptcaches, &rbw->ptcaches, FALSE); rbwn->objects = NULL; rbwn->physics_world = NULL; rbwn->numbodies = 0; return rbwn; }
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); tclmd->clothObject = NULL; }