static void rna_RigidBodyWorld_split_impulse_set(PointerRNA *ptr, int value) { RigidBodyWorld *rbw = (RigidBodyWorld *)ptr->data; RB_FLAG_SET(rbw->flag, value, RBW_FLAG_USE_SPLIT_IMPULSE); #ifdef WITH_BULLET if (rbw->physics_world) { RB_dworld_set_split_impulse(rbw->physics_world, value); } #endif }
// NOTE: this does NOT update object references that the scene uses, in case those aren't ready yet! void BKE_rigidbody_validate_sim_world(Scene *scene, RigidBodyWorld *rbw, bool rebuild) { /* sanity checks */ if (rbw == NULL) return; /* create new sim world */ if (rebuild || rbw->physics_world == NULL) { if (rbw->physics_world) RB_dworld_delete(rbw->physics_world); rbw->physics_world = RB_dworld_new(scene->physics_settings.gravity); } RB_dworld_set_solver_iterations(rbw->physics_world, rbw->num_solver_iterations); RB_dworld_set_split_impulse(rbw->physics_world, rbw->flag & RBW_FLAG_USE_SPLIT_IMPULSE); }