[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25799] trunk/blender/source/blender: option to instance groups when linking or appending.
Campbell Barton
ideasman42 at gmail.com
Thu Jan 7 15:28:00 CET 2010
Revision: 25799
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25799
Author: campbellbarton
Date: 2010-01-07 15:28:00 +0100 (Thu, 07 Jan 2010)
Log Message:
-----------
option to instance groups when linking or appending.
Modified Paths:
--------------
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesdna/DNA_space_types.h
trunk/blender/source/blender/windowmanager/intern/wm_operators.c
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-01-07 12:41:07 UTC (rev 25798)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-01-07 14:28:00 UTC (rev 25799)
@@ -11618,7 +11618,24 @@
}
}
+/* when *lib set, it also does objects that were in the appended group */
+static void give_base_to_groups(Main *mainvar, Scene *sce)
+{
+ Group *group;
+ Object *ob;
+ /* give all objects which are LIB_INDIRECT a base, or for a group when *lib has been set */
+ for(group= mainvar->group.first; group; group= group->id.next) {
+ if((group->id.flag & LIB_APPEND_TAG)==0) {
+ ob= add_object(sce, OB_EMPTY);
+ ob->dup_group= group;
+ ob->transflag |= OB_DUPLIGROUP;
+ rename_id(&ob->id, group->id.name);
+ VECCOPY(ob->loc, sce->cursor);
+ }
+ }
+}
+
static void append_named_part(const bContext *C, Main *mainl, FileData *fd, char *name, int idcode, short flag)
{
Scene *scene= CTX_data_scene(C);
@@ -11819,7 +11836,11 @@
give_base_to_objects(mainvar, scene, NULL, 0);
} else {
give_base_to_objects(mainvar, scene, mainl->curlib, 1);
- }
+ }
+
+ if (flag & FILE_GROUP_INSTANCE) {
+ give_base_to_groups(mainvar, scene);
+ }
} else {
give_base_to_objects(mainvar, scene, NULL, 0);
}
Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h 2010-01-07 12:41:07 UTC (rev 25798)
+++ trunk/blender/source/blender/makesdna/DNA_space_types.h 2010-01-07 14:28:00 UTC (rev 25799)
@@ -657,6 +657,7 @@
#define FILE_SYNCPOSE 128
#define FILE_FILTER 256
#define FILE_BOOKMARKS 512
+#define FILE_GROUP_INSTANCE 1024
/* files in filesel list: 2=ACTIVE */
#define EDITING 1
Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2010-01-07 12:41:07 UTC (rev 25798)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2010-01-07 14:28:00 UTC (rev 25799)
@@ -1224,7 +1224,7 @@
if(RNA_boolean_get(op->ptr, "active_layer")) flag |= FILE_ACTIVELAY;
if(RNA_boolean_get(op->ptr, "relative_paths")) flag |= FILE_STRINGCODE;
if(RNA_boolean_get(op->ptr, "link")) flag |= FILE_LINK;
-
+ if(RNA_boolean_get(op->ptr, "instance_groups")) flag |= FILE_GROUP_INSTANCE;
return flag;
}
@@ -1356,6 +1356,7 @@
RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending.");
RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects.");
RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer.");
+ RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup.");
RNA_def_boolean(ot->srna, "relative_paths", 1, "Relative Paths", "Store the library path as a relative path to current .blend file.");
RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
More information about the Bf-blender-cvs
mailing list