[Bf-blender-cvs] [96dbb6c] wiggly-widgets: Support reading Face Map assignments from .blend, corrections to previous commit

Julian Eisel noreply at git.blender.org
Sun Nov 8 22:27:54 CET 2015


Commit: 96dbb6c796aade1431faeead71cf5e35a9b7e896
Author: Julian Eisel
Date:   Sun Nov 8 22:25:01 2015 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB96dbb6c796aade1431faeead71cf5e35a9b7e896

Support reading Face Map assignments from .blend, corrections to previous commit

===================================================================

M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesrna/intern/rna_pose.c

===================================================================

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 9bfd21b..a0b9bae 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3215,7 +3215,9 @@ static void lib_link_pose(FileData *fd, Main *bmain, Object *ob, bPose *pose)
 		
 		/* hurms... loop in a loop, but yah... later... (ton) */
 		pchan->bone = BKE_armature_find_bone_name(arm, pchan->name);
-		
+
+		pchan->fmap_object = newlibadr_us(fd, arm->id.lib, pchan->fmap_object);
+
 		pchan->custom = newlibadr_us(fd, arm->id.lib, pchan->custom);
 		if (pchan->bone == NULL)
 			rebuild= 1;
@@ -4904,6 +4906,7 @@ static void direct_link_pose(FileData *fd, bPose *pose)
 		pchan->bone = NULL;
 		pchan->parent = newdataadr(fd, pchan->parent);
 		pchan->child = newdataadr(fd, pchan->child);
+		pchan->fmap = newdataadr(fd, pchan->fmap);
 		pchan->custom_tx = newdataadr(fd, pchan->custom_tx);
 		
 		direct_link_constraints(fd, &pchan->constraints);
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index bdf246c..f2fa1dd 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -913,8 +913,7 @@ static int WIDGETGROUP_armature_facemap_poll(const struct bContext *C, struct wm
 	if (ob && BKE_object_pose_context_check(ob)) {
 		bPoseChannel *pchan;
 		for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
-			if (pchan->fmap) {
-				BLI_assert(pchan->fmap_object);
+			if (pchan->fmap_object && pchan->fmap) {
 				return true;
 			}
 		}
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 22dbb2e..d903c10 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -286,6 +286,16 @@ static void rna_PoseChannel_name_set(PointerRNA *ptr, const char *value)
 	ED_armature_bone_rename(ob->data, oldname, newname);
 }
 
+static void rna_PoseChannel_bone_fmap_object_set(PointerRNA *ptr, PointerRNA value)
+{
+	bPoseChannel *pchan = (bPoseChannel *)ptr->data;
+
+	pchan->fmap_object = value.data;
+	if (!pchan->fmap_object) {
+		pchan->fmap = NULL;
+	}
+}
+
 static int rna_PoseChannel_has_ik_get(PointerRNA *ptr)
 {
 	Object *ob = (Object *)ptr->id.data;
@@ -826,7 +836,8 @@ static void rna_def_pose_channel(BlenderRNA *brna)
 	RNA_def_property_pointer_sdna(prop, NULL, "fmap_object");
 	RNA_def_property_struct_type(prop, "Object");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
-	RNA_def_property_ui_text(prop, "Face Map Object", "Object from which a face map can be chosen to"
+	RNA_def_property_pointer_funcs(prop, NULL, "rna_PoseChannel_bone_fmap_object_set", NULL, NULL);
+	RNA_def_property_ui_text(prop, "Face Map Object", "Object from which a face map can be chosen to "
 	                         "manipulate this bone");
 	RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
 	RNA_def_property_update(prop, NC_OBJECT | ND_POSE, "rna_Pose_update");




More information about the Bf-blender-cvs mailing list