[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