[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25707] trunk/blender/source/blender: copy modifiers, as "Link Modifiers" - in Ctrl+L menu.

Campbell Barton ideasman42 at gmail.com
Mon Jan 4 17:26:07 CET 2010


Revision: 25707
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25707
Author:   campbellbarton
Date:     2010-01-04 17:26:07 +0100 (Mon, 04 Jan 2010)

Log Message:
-----------
copy modifiers, as "Link Modifiers" - in Ctrl+L menu. difference between copy and link is vague especially since particle systems are ID data.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/editors/object/object_relations.c

Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h	2010-01-04 16:26:03 UTC (rev 25706)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2010-01-04 16:26:07 UTC (rev 25707)
@@ -62,6 +62,8 @@
 
 void free_object(struct Object *ob);
 void object_free_display(struct Object *ob);
+
+void object_link_modifiers(struct Object *ob, struct Object *from);
 void object_free_modifiers(struct Object *ob);
 
 void object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob);

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-01-04 16:26:03 UTC (rev 25706)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-01-04 16:26:07 UTC (rev 25707)
@@ -207,6 +207,27 @@
 	object_free_softbody(ob);
 }
 
+void object_link_modifiers(struct Object *ob, struct Object *from)
+{
+	ModifierData *md;
+	object_free_modifiers(ob);
+
+	for (md=from->modifiers.first; md; md=md->next) {
+		ModifierData *nmd = NULL;
+
+		if(ELEM4(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_ParticleInstance, eModifierType_Collision)) continue;
+
+		nmd = modifier_new(md->type);
+		modifier_copyData(md, nmd);
+		BLI_addtail(&ob->modifiers, nmd);
+	}
+
+	copy_object_particlesystems(from, ob);
+	copy_object_softbody(from, ob);
+
+	// TODO: smoke?, cloth?
+}
+
 /* here we will collect all local displist stuff */
 /* also (ab)used in depsgraph */
 void object_free_display(Object *ob)

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2010-01-04 16:26:03 UTC (rev 25706)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2010-01-04 16:26:07 UTC (rev 25707)
@@ -1183,6 +1183,7 @@
 	MAKE_LINKS_MATERIALS,
 	MAKE_LINKS_ANIMDATA,
 	MAKE_LINKS_DUPLIGROUP,
+	MAKE_LINKS_MODIFIERS
 };
 
 static int make_links_data_exec(bContext *C, wmOperator *op)
@@ -1235,6 +1236,10 @@
 					obt->transflag |= OB_DUPLIGROUP;
 				}
 				break;
+			case MAKE_LINKS_MODIFIERS:
+				object_link_modifiers(obt, ob);
+				obt->recalc |= OB_RECALC;
+				break;
 			}
 		}
 	}
@@ -1274,6 +1279,7 @@
 		{MAKE_LINKS_MATERIALS,	"MATERIAL", 0, "Materials", ""},
 		{MAKE_LINKS_ANIMDATA,	"ANIMATION", 0, "Animation Data", ""},
 		{MAKE_LINKS_DUPLIGROUP,	"DUPLIGROUP", 0, "DupliGroup", ""},
+		{MAKE_LINKS_MODIFIERS,	"MODIFIERS", 0, "Modifiers", ""},
 		{0, NULL, 0, NULL, NULL}};
 
 	PropertyRNA *prop;





More information about the Bf-blender-cvs mailing list