[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