Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-01-19 19:59:59 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-01-19 20:25:18 +0300
commitadcb6a1b90ab7256d6a661cc984473036a4074e7 (patch)
treed6a2554e764ac4654072f67fc94731425747551e /source/blender/blenkernel/intern/collection.c
parent971aa5f8380a44c2cf0e9a80f374a048146b237c (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.c28
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
}
/**