[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