Revision: 29120 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29120 Author: moguri Date: 2010-06-01 09:41:00 +0200 (Tue, 01 Jun 2010)
Log Message: ----------- A couple of small changes: * Adding the ability to change the uniform type (not all types are in the list yet). * Adding the ability to remove uniforms Modified Paths: -------------- branches/soc-2010-moguri/release/scripts/ui/properties_material.py branches/soc-2010-moguri/source/blender/editors/render/render_ops.c branches/soc-2010-moguri/source/blender/editors/render/render_shading.c branches/soc-2010-moguri/source/blender/makesdna/DNA_material_types.h branches/soc-2010-moguri/source/blender/makesrna/intern/rna_material.c Modified: branches/soc-2010-moguri/release/scripts/ui/properties_material.py =================================================================== --- branches/soc-2010-moguri/release/scripts/ui/properties_material.py 2010-06-01 06:18:17 UTC (rev 29119) +++ branches/soc-2010-moguri/release/scripts/ui/properties_material.py 2010-06-01 07:41:00 UTC (rev 29120) @@ -804,12 +804,19 @@ col.prop(mat, "geometry_input") col.prop(mat, "geometry_output") - col.template_list(mat, "uniforms", mat, "active_uniform_index") + row = layout.row() + col = row.column() + col.template_list(mat, "uniforms", mat, "active_uniform_index") + col = row.column(align=True) col.operator("material.uniform_add", icon='ZOOMIN', text="") + col.operator("material.uniform_remove", icon='ZOOMOUT', text="").index = mat.active_uniform_index lay = mat.active_uniform if lay: - layout.prop(lay, "name") + row = layout.row() + #layout.label(text="") + row.prop(lay, "name") + row.prop(lay, "type", text="") class VolumeButtonsPanel(bpy.types.Panel): bl_space_type = 'PROPERTIES' Modified: branches/soc-2010-moguri/source/blender/editors/render/render_ops.c =================================================================== --- branches/soc-2010-moguri/source/blender/editors/render/render_ops.c 2010-06-01 06:18:17 UTC (rev 29119) +++ branches/soc-2010-moguri/source/blender/editors/render/render_ops.c 2010-06-01 07:41:00 UTC (rev 29120) @@ -54,6 +54,7 @@ WM_operatortype_append(MATERIAL_OT_copy); WM_operatortype_append(MATERIAL_OT_paste); WM_operatortype_append(MATERIAL_OT_uniform_add); + WM_operatortype_append(MATERIAL_OT_uniform_remove); WM_operatortype_append(SCENE_OT_render_layer_add); WM_operatortype_append(SCENE_OT_render_layer_remove); Modified: branches/soc-2010-moguri/source/blender/editors/render/render_shading.c =================================================================== --- branches/soc-2010-moguri/source/blender/editors/render/render_shading.c 2010-06-01 06:18:17 UTC (rev 29119) +++ branches/soc-2010-moguri/source/blender/editors/render/render_shading.c 2010-06-01 07:41:00 UTC (rev 29120) @@ -1072,6 +1072,38 @@ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +static int uniform_remove_exec(bContext *C, wmOperator *op) +{ + Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data; + CustomUniform *cu; + int index= RNA_int_get(op->ptr, "index"); + + cu= BLI_findlink(&ma->csi.uniforms, index); + + if(cu) { + BLI_remlink(&ma->csi.uniforms, cu); + return OPERATOR_FINISHED; + } + else { + return OPERATOR_CANCELLED; + } +} + +void MATERIAL_OT_uniform_remove(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Remove Uniform"; + ot->idname= "MATERIAL_OT_uniform_remove"; + + /* api callbacks */ + ot->exec= uniform_remove_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Uniform index to remove ", 0, INT_MAX); +} + static short mtexcopied=0; /* must be reset on file load */ static MTex mtexcopybuf; Modified: branches/soc-2010-moguri/source/blender/makesdna/DNA_material_types.h =================================================================== --- branches/soc-2010-moguri/source/blender/makesdna/DNA_material_types.h 2010-06-01 06:18:17 UTC (rev 29119) +++ branches/soc-2010-moguri/source/blender/makesdna/DNA_material_types.h 2010-06-01 07:41:00 UTC (rev 29120) @@ -76,7 +76,7 @@ struct CustomUniform *next, *prev; char name[64]; short type, pad[3]; - //void *data; + void *data; } CustomUniform; typedef struct CustomShaderInfo { @@ -228,6 +228,16 @@ #define MA_CS_GEOM_OUT_LINE_STRIP 2 #define MA_CS_GEOM_OUT_TRIANGLE_STRIP 4 +/* Uniform type */ +#define MA_UNF_FLOAT 1 +#define MA_UNF_VEC2 2 +#define MA_UNF_VEC3 3 +#define MA_UNF_VEC4 4 +#define MA_UNF_INT 5 +#define MA_UNF_IVEC2 6 +#define MA_UNF_IVEC3 7 +#define MA_UNF_IVEC4 8 + /* mode (is int) */ #define MA_TRACEBLE 1 #define MA_SHADOW 2 Modified: branches/soc-2010-moguri/source/blender/makesrna/intern/rna_material.c =================================================================== --- branches/soc-2010-moguri/source/blender/makesrna/intern/rna_material.c 2010-06-01 06:18:17 UTC (rev 29119) +++ branches/soc-2010-moguri/source/blender/makesrna/intern/rna_material.c 2010-06-01 07:41:00 UTC (rev 29120) @@ -915,7 +915,6 @@ prop= RNA_def_property(srna, "active_uniform", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "CustomUniform"); RNA_def_property_pointer_funcs(prop, "rna_Material_active_uniform_get", "rna_Material_active_uniform_set", NULL); - //RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active Uniform", ""); RNA_def_property_update(prop, 0, "rna_Material_update"); @@ -931,6 +930,17 @@ StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem prop_type_items[] = { + {MA_UNF_FLOAT, "FLOAT", 0, "float", "float"}, + {MA_UNF_VEC2, "VEC2", 0, "vec2", "vec2"}, + {MA_UNF_VEC3, "VEC3", 0, "vec3", "vec3"}, + {MA_UNF_VEC4, "VEC4", 0, "vec4", "vec4"}, + {MA_UNF_INT, "INT", 0, "int", "int"}, + {MA_UNF_IVEC2, "IVEC2", 0, "ivec2", "ivec2"}, + {MA_UNF_IVEC3, "IVEC3", 0, "ivec3", "ivec3"}, + {MA_UNF_IVEC4, "IVEC4", 0, "ivec4", "ivec4"}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "CustomUniform", NULL); RNA_def_struct_sdna(srna, "CustomUniform"); RNA_def_struct_nested(brna, srna, "Material"); @@ -941,6 +951,12 @@ RNA_def_property_string_sdna(prop, NULL, "name"); RNA_def_property_ui_text(prop, "Name", "The name of the uniform"); RNA_def_property_update(prop, 0, "rna_Material_update"); + + prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "type"); + RNA_def_property_enum_items(prop, prop_type_items); + RNA_def_property_ui_text(prop, "Uniform type", "The data type of the uniform"); + RNA_def_property_update(prop, 0, "rna_Material_update"); } static void rna_def_material_raymirror(BlenderRNA *brna) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs