[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21989] branches/blender2.5/blender: 2.5: Materials and textures can now be assigned again
Brecht Van Lommel
brecht at blender.org
Tue Jul 28 20:54:03 CEST 2009
Revision: 21989
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21989
Author: blendix
Date: 2009-07-28 20:54:02 +0200 (Tue, 28 Jul 2009)
Log Message:
-----------
2.5: Materials and textures can now be assigned again
even if not slot for them is available.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/buttons_material.py
branches/blender2.5/blender/release/ui/buttons_texture.py
branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_world.c
Modified: branches/blender2.5/blender/release/ui/buttons_material.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_material.py 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/release/ui/buttons_material.py 2009-07-28 18:54:02 UTC (rev 21989)
@@ -52,10 +52,13 @@
split = layout.split(percentage=0.65)
- if ob and slot:
- split.template_ID(slot, "material", new="material.new")
+ if ob:
+ split.template_ID(ob, "active_material", new="material.new")
row = split.row()
- row.itemR(slot, "link", expand=True)
+ if slot:
+ row.itemR(slot, "link", expand=True)
+ else:
+ row.itemL()
elif mat:
split.template_ID(space, "pin_id")
split.itemS()
Modified: branches/blender2.5/blender/release/ui/buttons_texture.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_texture.py 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/release/ui/buttons_texture.py 2009-07-28 18:54:02 UTC (rev 21989)
@@ -48,26 +48,26 @@
wo = context.world
br = context.brush
space = context.space_data
- slot = context.texture_slot
- if ma or la or wo or br:
+ if ma:
+ id = ma
+ elif la:
+ id = la
+ elif wo:
+ id = wo
+ elif br:
+ id = br
+ else:
+ id = None
+
+ if id:
row = layout.row()
- if ma:
- row.template_list(ma, "textures", ma, "active_texture_index", type="ICONS")
- elif la:
- row.template_list(la, "textures", la, "active_texture_index", type="ICONS")
- elif wo:
- row.template_list(wo, "textures", wo, "active_texture_index", type="ICONS")
- elif br:
- row.template_list(br, "textures", br, "active_texture_index", type="ICONS")
+ row.template_list(id, "textures", id, "active_texture_index", type="ICONS")
split = layout.split(percentage=0.65)
- if ma or la or wo or br:
- if slot:
- split.template_ID(slot, "texture", new="texture.new")
- else:
- split.itemS()
+ if id:
+ split.template_ID(id, "active_texture", new="texture.new")
elif tex:
split.template_ID(space, "pin_id")
@@ -75,8 +75,6 @@
(context.sculpt_object or context.vertex_paint_object or \
context.weight_paint_object or context.texture_paint_object):
split.itemR(space, "brush_texture", text="Brush", toggle=True)
- else:
- split.itemS()
layout.itemS()
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c 2009-07-28 18:54:02 UTC (rev 21989)
@@ -46,29 +46,32 @@
static PointerRNA rna_Brush_active_texture_get(PointerRNA *ptr)
{
- Brush *brush= (Brush*)ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_TextureSlot, brush->mtex[(int)brush->texact]);
+ Brush *br= (Brush*)ptr->data;
+ Tex *tex;
+
+ tex= (br->mtex[(int)br->texact])? br->mtex[(int)br->texact]->tex: NULL;
+ return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
-static void rna_Brush_active_texture_index_set(PointerRNA *ptr, int value)
+static void rna_Brush_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
- Brush *brush= (Brush*)ptr->data;
- int act= brush->texact;
+ Brush *br= (Brush*)ptr->data;
+ int act= br->texact;
- if(value == act || value < 0 || value >= MAX_MTEX)
- return;
+ if(br->mtex[act] && br->mtex[act]->tex)
+ id_us_min(&br->mtex[act]->tex->id);
- /* auto create/free mtex on activate/deactive, so we can edit
- * the texture pointer in the buttons UI. */
- if(brush->mtex[act] && !brush->mtex[act]->tex) {
- MEM_freeN(brush->mtex[act]);
- brush->mtex[act]= NULL;
+ if(value.data) {
+ if(!br->mtex[act])
+ br->mtex[act]= add_mtex();
+
+ br->mtex[act]->tex= value.data;
+ id_us_plus(&br->mtex[act]->tex->id);
}
-
- brush->texact= value;
-
- if(!brush->mtex[value])
- brush->mtex[value]= add_mtex();
+ else if(br->mtex[act]) {
+ MEM_freeN(br->mtex[act]);
+ br->mtex[act]= NULL;
+ }
}
static float rna_Brush_rotation_get(PointerRNA *ptr)
@@ -224,7 +227,8 @@
RNA_def_property_ui_text(prop, "Curve", "Editable falloff curve.");
/* texture */
- rna_def_mtex_common(srna, "rna_Brush_mtex_begin", "rna_Brush_active_texture_get", "rna_Brush_active_texture_index_set", "TextureSlot");
+ rna_def_mtex_common(srna, "rna_Brush_mtex_begin", "rna_Brush_active_texture_get",
+ "rna_Brush_active_texture_set", "TextureSlot");
/* clone tool */
prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE);
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c 2009-07-28 18:54:02 UTC (rev 21989)
@@ -64,30 +64,33 @@
static PointerRNA rna_Lamp_active_texture_get(PointerRNA *ptr)
{
Lamp *la= (Lamp*)ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_TextureSlot, la->mtex[(int)la->texact]);
+ Tex *tex;
+
+ tex= (la->mtex[(int)la->texact])? la->mtex[(int)la->texact]->tex: NULL;
+ return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
-static void rna_Lamp_active_texture_index_set(PointerRNA *ptr, int value)
+static void rna_Lamp_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
Lamp *la= (Lamp*)ptr->data;
int act= la->texact;
- if(value == act || value < 0 || value >= MAX_MTEX)
- return;
+ if(la->mtex[act] && la->mtex[act]->tex)
+ id_us_min(&la->mtex[act]->tex->id);
- /* auto create/free mtex on activate/deactive, so we can edit
- * the texture pointer in the buttons UI. */
- if(la->mtex[act] && !la->mtex[act]->tex) {
+ if(value.data) {
+ if(!la->mtex[act]) {
+ la->mtex[act]= add_mtex();
+ la->mtex[act]->texco= TEXCO_GLOB;
+ }
+
+ la->mtex[act]->tex= value.data;
+ id_us_plus(&la->mtex[act]->tex->id);
+ }
+ else if(la->mtex[act]) {
MEM_freeN(la->mtex[act]);
la->mtex[act]= NULL;
}
-
- la->texact= value;
-
- if(!la->mtex[value]) {
- la->mtex[value]= add_mtex();
- la->mtex[value]->texco= TEXCO_GLOB;
- }
}
static StructRNA* rna_Lamp_refine(struct PointerRNA *ptr)
@@ -349,7 +352,8 @@
RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL);
/* textures */
- rna_def_mtex_common(srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get", "rna_Lamp_active_texture_index_set", "LampTextureSlot");
+ rna_def_mtex_common(srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get",
+ "rna_Lamp_active_texture_set", "LampTextureSlot");
}
static void rna_def_lamp_falloff(StructRNA *srna)
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c 2009-07-28 18:54:02 UTC (rev 21989)
@@ -85,28 +85,31 @@
static PointerRNA rna_Material_active_texture_get(PointerRNA *ptr)
{
Material *ma= (Material*)ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_TextureSlot, ma->mtex[(int)ma->texact]);
+ Tex *tex;
+
+ tex= (ma->mtex[(int)ma->texact])? ma->mtex[(int)ma->texact]->tex: NULL;
+ return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
-static void rna_Material_active_texture_index_set(PointerRNA *ptr, int value)
+static void rna_Material_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
Material *ma= (Material*)ptr->data;
int act= ma->texact;
- if(value == act || value < 0 || value >= MAX_MTEX)
- return;
+ if(ma->mtex[act] && ma->mtex[act]->tex)
+ id_us_min(&ma->mtex[act]->tex->id);
- /* auto create/free mtex on activate/deactive, so we can edit
- * the texture pointer in the buttons UI. */
- if(ma->mtex[act] && !ma->mtex[act]->tex) {
+ if(value.data) {
+ if(!ma->mtex[act])
+ ma->mtex[act]= add_mtex();
+
+ ma->mtex[act]->tex= value.data;
+ id_us_plus(&ma->mtex[act]->tex->id);
+ }
+ else if(ma->mtex[act]) {
MEM_freeN(ma->mtex[act]);
ma->mtex[act]= NULL;
}
-
- ma->texact= value;
-
- if(!ma->mtex[value])
- ma->mtex[value]= add_mtex();
}
static void rna_MaterialStrand_start_size_range(PointerRNA *ptr, float *min, float *max)
@@ -1276,7 +1279,8 @@
/* common */
rna_def_animdata_common(srna);
- rna_def_mtex_common(srna, "rna_Material_mtex_begin", "rna_Material_active_texture_get", "rna_Material_active_texture_index_set", "MaterialTextureSlot");
+ rna_def_mtex_common(srna, "rna_Material_mtex_begin", "rna_Material_active_texture_get",
+ "rna_Material_active_texture_set", "MaterialTextureSlot");
rna_def_material_colors(srna);
rna_def_material_diffuse(srna);
@@ -1302,14 +1306,13 @@
RNA_def_property_ui_text(prop, "Textures", "Texture slots defining the mapping and influence of textures.");
prop= RNA_def_property(srna, "active_texture", PROP_POINTER, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_struct_type(prop, structname);
- RNA_def_property_pointer_funcs(prop, activeget, NULL, NULL);
+ RNA_def_property_struct_type(prop, "Texture");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, activeget, activeset, NULL);
RNA_def_property_ui_text(prop, "Active Texture", "Active texture slot being displayed.");
prop= RNA_def_property(srna, "active_texture_index", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "texact");
- RNA_def_property_int_funcs(prop, NULL, activeset, NULL);
RNA_def_property_range(prop, 0, MAX_MTEX-1);
RNA_def_property_ui_text(prop, "Active Texture Index", "Index of active texture slot.");
}
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c 2009-07-28 18:51:06 UTC (rev 21988)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c 2009-07-28 18:54:02 UTC (rev 21989)
@@ -377,9 +377,19 @@
static PointerRNA rna_Object_active_material_get(PointerRNA *ptr)
{
Object *ob= (Object*)ptr->id.data;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list