diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-01-19 19:59:59 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-01-19 20:25:18 +0300 |
commit | adcb6a1b90ab7256d6a661cc984473036a4074e7 (patch) | |
tree | d6a2554e764ac4654072f67fc94731425747551e /source/blender/blenkernel/intern/collection.c | |
parent | 971aa5f8380a44c2cf0e9a80f374a048146b237c (diff) |
Handle main object dupli functions
Missing: mesh separation, material split, mesh conversion (curve to mesh)
Diffstat (limited to 'source/blender/blenkernel/intern/collection.c')
-rw-r--r-- | source/blender/blenkernel/intern/collection.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index 5357589d0e8..c7ff70e4047 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -180,19 +180,39 @@ void BKE_collection_master_free(Scene *scene){ collection_free(BKE_collection_master(scene)); } +static void collection_object_add(Scene *scene, SceneCollection *sc, Object *ob) +{ + BLI_addtail(&sc->objects, BLI_genericNodeN(ob)); + id_us_plus((ID *)ob); + BKE_layer_sync_object_link(scene, sc, ob); +} + /** * Add object to collection */ -void BKE_collection_object_add(struct Scene *scene, struct SceneCollection *sc, struct Object *ob) +void BKE_collection_object_add(Scene *scene, SceneCollection *sc, Object *ob) { if (BLI_findptr(&sc->objects, ob, offsetof(LinkData, data))) { /* don't add the same object twice */ return; } + collection_object_add(scene, sc, ob); +} - BLI_addtail(&sc->objects, BLI_genericNodeN(ob)); - id_us_plus((ID *)ob); - BKE_layer_sync_object_link(scene, sc, ob); +/** + * Add object to all collections that reference objects is in + * (used to copy objects) + */ +void BKE_collection_object_add_from(Scene *scene, Object *ob_src, Object *ob_dst) +{ + SceneCollection *sc; + FOREACH_SCENE_COLLECTION(scene, sc) + { + if (BLI_findptr(&sc->objects, ob_src, offsetof(LinkData, data))) { + collection_object_add(scene, sc, ob_dst); + } + } + FOREACH_SCENE_COLLECTION_END } /** |