Fix #109928: issues adding rigid bodies via just the world collection #109961

Merged
Philipp Oeser merged 1 commits from lichtwerk/blender:109928 into main 2023-07-11 12:22:51 +02:00
4 changed files with 9 additions and 5 deletions

View File

@ -93,7 +93,9 @@ struct RigidBodyCon *BKE_rigidbody_create_constraint(struct Scene *scene,
/**
* Ensure newly set collections' objects all have required data.
*/
void BKE_rigidbody_objects_collection_validate(struct Scene *scene, struct RigidBodyWorld *rbw);
void BKE_rigidbody_objects_collection_validate(struct Main *bmain,
struct Scene *scene,
struct RigidBodyWorld *rbw);
void BKE_rigidbody_constraints_collection_validate(struct Scene *scene,
struct RigidBodyWorld *rbw);

View File

@ -1339,7 +1339,7 @@ RigidBodyCon *BKE_rigidbody_create_constraint(Scene *scene, Object *ob, short ty
return rbc;
}
void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw)
void BKE_rigidbody_objects_collection_validate(Main *bmain, Scene *scene, RigidBodyWorld *rbw)
{
if (rbw->group != NULL) {
FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN (rbw->group, object) {
@ -1347,8 +1347,10 @@ void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw
continue;
}
object->rigidbody_object = BKE_rigidbody_create_object(scene, object, RBO_TYPE_ACTIVE);
DEG_id_tag_update(&object->id, ID_RECALC_TRANSFORM);
}
FOREACH_COLLECTION_OBJECT_RECURSIVE_END;
DEG_relations_tag_update(bmain);
}
}
@ -2344,7 +2346,7 @@ void BKE_rigidbody_cache_reset(RigidBodyWorld *rbw) {}
void BKE_rigidbody_rebuild_world(Depsgraph *depsgraph, Scene *scene, float ctime) {}
void BKE_rigidbody_do_simulation(Depsgraph *depsgraph, Scene *scene, float ctime) {}
void BKE_rigidbody_objects_collection_validate(Scene *scene, RigidBodyWorld *rbw) {}
void BKE_rigidbody_constraints_collection_validate(Scene *scene, RigidBodyWorld *rbw) {}
void BKE_rigidbody_constraints_collection_validate(Main *bmain, Scene *scene, RigidBodyWorld *rbw) {}
void BKE_rigidbody_main_collection_object_add(Main *bmain, Collection *collection, Object *object)
{
}

View File

@ -2742,7 +2742,7 @@ void do_versions_after_linking_280(FileData *fd, Main *bmain)
continue;
}
BKE_rigidbody_objects_collection_validate(scene, rbw);
BKE_rigidbody_objects_collection_validate(bmain, scene, rbw);
BKE_rigidbody_constraints_collection_validate(scene, rbw);
}
}

View File

@ -186,7 +186,7 @@ static void rna_RigidBodyWorld_objects_collection_update(Main *bmain,
PointerRNA *ptr)
{
RigidBodyWorld *rbw = (RigidBodyWorld *)ptr->data;
BKE_rigidbody_objects_collection_validate(scene, rbw);
BKE_rigidbody_objects_collection_validate(bmain, scene, rbw);
rna_RigidBodyWorld_reset(bmain, scene, ptr);
}