[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41846] trunk/blender: Fix #29249: mapping node not keyable anymore, restore RNA to what it was before

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Nov 14 21:39:53 CET 2011


Revision: 41846
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41846
Author:   blendix
Date:     2011-11-14 20:39:53 +0000 (Mon, 14 Nov 2011)
Log Message:
-----------
Fix #29249: mapping node not keyable anymore, restore RNA to what it was before
Cycles change, generating RNA paths for this is a bit complicated.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_shader.cpp
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_shader.cpp	2011-11-14 20:26:23 UTC (rev 41845)
+++ trunk/blender/intern/cycles/blender/blender_shader.cpp	2011-11-14 20:39:53 UTC (rev 41846)
@@ -100,7 +100,7 @@
 static void get_tex_mapping(TextureMapping *mapping, BL::TexMapping b_mapping)
 {
 	mapping->translation = get_float3(b_mapping.location());
-	mapping->rotation = get_float3(b_mapping.rotation())*(M_PI/180.0f); /* in degrees! */
+	mapping->rotation = get_float3(b_mapping.rotation());
 	mapping->scale = get_float3(b_mapping.scale());
 
 	mapping->x_mapping = (TextureMapping::Mapping)b_mapping.mapping_x();
@@ -108,6 +108,13 @@
 	mapping->z_mapping = (TextureMapping::Mapping)b_mapping.mapping_z();
 }
 
+static void get_tex_mapping(TextureMapping *mapping, BL::ShaderNodeMapping b_mapping)
+{
+	mapping->translation = get_float3(b_mapping.location());
+	mapping->rotation = get_float3(b_mapping.rotation());
+	mapping->scale = get_float3(b_mapping.scale());
+}
+
 static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node *b_group_node, BL::ShaderNode b_node)
 {
 	ShaderNode *node = NULL;
@@ -174,7 +181,7 @@
 			BL::ShaderNodeMapping b_mapping_node(b_node);
 			MappingNode *mapping = new MappingNode();
 
-			get_tex_mapping(&mapping->tex_mapping, b_mapping_node.mapping());
+			get_tex_mapping(&mapping->tex_mapping, b_mapping_node);
 
 			node = mapping;
 			break;

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2011-11-14 20:26:23 UTC (rev 41845)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2011-11-14 20:39:53 UTC (rev 41846)
@@ -947,28 +947,27 @@
 
 static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 {
-	PointerRNA mappingptr = RNA_pointer_get(ptr, "mapping");
 	uiLayout *row;
 	
 	uiItemL(layout, "Location:", ICON_NONE);
 	row= uiLayoutRow(layout, 1);
-	uiItemR(row, &mappingptr, "location", 0, "", ICON_NONE);
+	uiItemR(row, ptr, "location", 0, "", ICON_NONE);
 	
 	uiItemL(layout, "Rotation:", ICON_NONE);
 	row= uiLayoutRow(layout, 1);
-	uiItemR(row, &mappingptr, "rotation", 0, "", ICON_NONE);
+	uiItemR(row, ptr, "rotation", 0, "", ICON_NONE);
 	
 	uiItemL(layout, "Scale:", ICON_NONE);
 	row= uiLayoutRow(layout, 1);
-	uiItemR(row, &mappingptr, "scale", 0, "", ICON_NONE);
+	uiItemR(row, ptr, "scale", 0, "", ICON_NONE);
 	
 	row= uiLayoutRow(layout, 1);
-	uiItemR(row, &mappingptr, "use_min", 0, "Min", ICON_NONE);
-	uiItemR(row, &mappingptr, "min", 0, "", ICON_NONE);
+	uiItemR(row, ptr, "use_min", 0, "Min", ICON_NONE);
+	uiItemR(row, ptr, "min", 0, "", ICON_NONE);
 	
 	row= uiLayoutRow(layout, 1);
-	uiItemR(row, &mappingptr, "use_max", 0, "Max", ICON_NONE);
-	uiItemR(row, &mappingptr, "max", 0, "", ICON_NONE);
+	uiItemR(row, ptr, "use_max", 0, "Max", ICON_NONE);
+	uiItemR(row, ptr, "max", 0, "", ICON_NONE);
 }
 
 static void node_shader_buts_vect_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2011-11-14 20:26:23 UTC (rev 41845)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2011-11-14 20:39:53 UTC (rev 41846)
@@ -757,6 +757,13 @@
 	return NULL;
 }
 
+static void rna_Mapping_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	bNode *node = ptr->data;
+	init_tex_mapping(node->storage);
+	rna_Node_update(bmain, scene, ptr);
+}
+
 #else
 
 static EnumPropertyItem prop_image_layer_items[] = {
@@ -1097,12 +1104,43 @@
 static void def_sh_mapping(StructRNA *srna)
 {
 	PropertyRNA *prop;
+	
+	RNA_def_struct_sdna_from(srna, "TexMapping", "storage");
 
-	prop= RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE);
-	RNA_def_property_pointer_sdna(prop, NULL, "storage");
-	RNA_def_property_struct_type(prop, "TexMapping");
-	RNA_def_property_flag(prop, PROP_NEVER_NULL);
-	RNA_def_property_ui_text(prop, "Mapping", "Texture coordinate mapping settings");
+	prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
+	RNA_def_property_float_sdna(prop, NULL, "loc");
+	RNA_def_property_ui_text(prop, "Location", "");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER); /* Not PROP_XYZ, this is now in radians, no more degrees */
+	RNA_def_property_float_sdna(prop, NULL, "rot");
+	RNA_def_property_ui_text(prop, "Rotation", "");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
+	RNA_def_property_float_sdna(prop, NULL, "size");
+	RNA_def_property_ui_text(prop, "Scale", "");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_XYZ);
+	RNA_def_property_float_sdna(prop, NULL, "min");
+	RNA_def_property_ui_text(prop, "Minimum", "Minimum value for clipping");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_XYZ);
+	RNA_def_property_float_sdna(prop, NULL, "max");
+	RNA_def_property_ui_text(prop, "Maximum", "Maximum value for clipping");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
+	RNA_def_property_ui_text(prop, "Has Minimum", "Whether to use minimum clipping value");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
+	
+	prop= RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
+	RNA_def_property_ui_text(prop, "Has Maximum", "Whether to use maximum clipping value");
+	RNA_def_property_update(prop, 0, "rna_Mapping_Node_update");
 }
 
 static void def_sh_geometry(StructRNA *srna)




More information about the Bf-blender-cvs mailing list