[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58893] branches/ soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c: UV transfer Operator: Adding support for bidirectional transfer ( from or to active object)
Walid Shouman
eng.walidshouman at gmail.com
Sun Aug 4 05:51:24 CEST 2013
Revision: 58893
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58893
Author: walid
Date: 2013-08-04 03:51:24 +0000 (Sun, 04 Aug 2013)
Log Message:
-----------
UV transfer Operator: Adding support for bidirectional transfer (from or to active object)
Modified Paths:
--------------
branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c 2013-08-04 03:47:43 UTC (rev 58892)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c 2013-08-04 03:51:24 UTC (rev 58893)
@@ -491,6 +491,19 @@
{0, NULL, 0, NULL, NULL}
};
+typedef enum FromToActive {
+ FROM_ACTIVE = 1,
+ TO_ACTIVE = 2
+} FromToActive;
+
+static EnumPropertyItem from_to_active[] = {
+ {FROM_ACTIVE,
+ "FROM_ACTIVE", 0, "From active", "Transfer to different objects"},
+ {TO_ACTIVE,
+ "TO_ACTIVE", 0, "To active", "Better to faster tweek the output"},
+ {0, NULL, 0, NULL, NULL}
+};
+
static bool ED_mesh_uv_transfer(Object *ob_dst, Object *ob_src, bContext *UNUSED(C), Scene *UNUSED(scene), wmOperator * op)
{
Mesh *me_dst, *me_src;
@@ -896,17 +909,36 @@
Object *ob_act = CTX_data_active_object(C);
int fail = 0;
+ bool transfer_first_to_act = true;
+
+ FromToActive from_active = RNA_enum_get(op->ptr, "from_to_active");
+
/* Macro to loop through selected objects.*/
CTX_DATA_BEGIN (C, Object *, ob_slc, selected_editable_objects)
{
//if the selected isn't the active object
if (ob_act != ob_slc) {
- if (!ED_mesh_uv_transfer(ob_act, ob_slc, C, scene, op)) {
- fail++;
+ if (from_active == TO_ACTIVE) {
+
+ //if many objects were selected within this mode ... we should copy only from the first
+ //notice that ob_slc priority isn't set by order of selection!
+ if (transfer_first_to_act == true) {
+ transfer_first_to_act = false;
+
+ if (!ED_mesh_uv_transfer(ob_act, ob_slc, C, scene, op)) {
+ fail++;
+ }
+ }
}
+
+ else { //copy from the active to all the other selected
+ if (!ED_mesh_uv_transfer(ob_slc, ob_act, C, scene, op)) {
+ fail++;
+ }
+ }
}
- }
+}
////ported from transfer weights
/* Event notifiers for correct display of data.*/
@@ -953,6 +985,8 @@
"Replace/Append", "define which groups to move");
RNA_def_enum(ot->srna, "transfer_mode", transfer_mode_item, 2,
"Transfer Mode", "Choose between different algorithms");
+ RNA_def_enum(ot->srna, "from_to_active", from_to_active, 2, "From/To active object",
+ "Choose the transfer direction");
}
/*********************** vertex color operators ************************/
More information about the Bf-blender-cvs
mailing list