[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23784] trunk/blender/source/blender: Bugfix: texture nodes header was still showing wrong texture
Brecht Van Lommel
brecht at blender.org
Mon Oct 12 15:12:45 CEST 2009
Revision: 23784
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23784
Author: blendix
Date: 2009-10-12 15:12:45 +0200 (Mon, 12 Oct 2009)
Log Message:
-----------
Bugfix: texture nodes header was still showing wrong texture
when using node materials.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_texture.h
trunk/blender/source/blender/blenkernel/intern/texture.c
trunk/blender/source/blender/makesrna/intern/rna_brush.c
trunk/blender/source/blender/makesrna/intern/rna_lamp.c
trunk/blender/source/blender/makesrna/intern/rna_material.c
trunk/blender/source/blender/makesrna/intern/rna_world.c
Modified: trunk/blender/source/blender/blenkernel/BKE_texture.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_texture.h 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/blenkernel/BKE_texture.h 2009-10-12 13:12:45 UTC (rev 23784)
@@ -75,6 +75,11 @@
struct Tex *give_current_world_texture(struct World *world);
struct Tex *give_current_brush_texture(struct Brush *br);
+void set_current_brush_texture(struct Brush *br, struct Tex *tex);
+void set_current_world_texture(struct World *wo, struct Tex *tex);
+void set_current_material_texture(struct Material *ma, struct Tex *tex);
+void set_current_lamp_texture(struct Lamp *la, struct Tex *tex);
+
struct TexMapping *add_mapping(void);
void init_mapping(struct TexMapping *texmap);
Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c 2009-10-12 13:12:45 UTC (rev 23784)
@@ -840,6 +840,28 @@
return tex;
}
+void set_current_lamp_texture(Lamp *la, Tex *newtex)
+{
+ int act= la->texact;
+
+ if(la->mtex[act] && la->mtex[act]->tex)
+ id_us_min(&la->mtex[act]->tex->id);
+
+ if(newtex) {
+ if(!la->mtex[act]) {
+ la->mtex[act]= add_mtex();
+ la->mtex[act]->texco= TEXCO_GLOB;
+ }
+
+ la->mtex[act]->tex= newtex;
+ id_us_plus(&newtex->id);
+ }
+ else if(la->mtex[act]) {
+ MEM_freeN(la->mtex[act]);
+ la->mtex[act]= NULL;
+ }
+}
+
Tex *give_current_material_texture(Material *ma)
{
MTex *mtex= NULL;
@@ -867,6 +889,47 @@
return tex;
}
+void set_current_material_texture(Material *ma, Tex *newtex)
+{
+ Tex *tex= NULL;
+ bNode *node;
+
+ if(ma && ma->use_nodes && ma->nodetree) {
+ node= nodeGetActiveID(ma->nodetree, ID_TE);
+
+ if(node) {
+ tex= (Tex *)node->id;
+ id_us_min(&tex->id);
+ node->id= &newtex->id;
+ id_us_plus(&newtex->id);
+ ma= NULL;
+ }
+ else {
+ node= nodeGetActiveID(ma->nodetree, ID_MA);
+ if(node)
+ ma= (Material*)node->id;
+ }
+ }
+ if(ma) {
+ int act= (int)ma->texact;
+
+ tex= (ma->mtex[act])? ma->mtex[act]->tex: NULL;
+ id_us_min(&tex->id);
+
+ if(newtex) {
+ if(!ma->mtex[act])
+ ma->mtex[act]= add_mtex();
+
+ ma->mtex[act]->tex= newtex;
+ id_us_plus(&newtex->id);
+ }
+ else if(ma->mtex[act]) {
+ MEM_freeN(ma->mtex[act]);
+ ma->mtex[act]= NULL;
+ }
+ }
+}
+
Tex *give_current_world_texture(World *world)
{
MTex *mtex= NULL;
@@ -880,6 +943,28 @@
return tex;
}
+void set_current_world_texture(World *wo, Tex *newtex)
+{
+ int act= wo->texact;
+
+ if(wo->mtex[act] && wo->mtex[act]->tex)
+ id_us_min(&wo->mtex[act]->tex->id);
+
+ if(newtex) {
+ if(!wo->mtex[act]) {
+ wo->mtex[act]= add_mtex();
+ wo->mtex[act]->texco= TEXCO_VIEW;
+ }
+
+ wo->mtex[act]->tex= newtex;
+ id_us_plus(&newtex->id);
+ }
+ else if(wo->mtex[act]) {
+ MEM_freeN(wo->mtex[act]);
+ wo->mtex[act]= NULL;
+ }
+}
+
Tex *give_current_brush_texture(Brush *br)
{
MTex *mtex= NULL;
@@ -893,6 +978,26 @@
return tex;
}
+void set_current_brush_texture(Brush *br, Tex *newtex)
+{
+ int act= br->texact;
+
+ if(br->mtex[act] && br->mtex[act]->tex)
+ id_us_min(&br->mtex[act]->tex->id);
+
+ if(newtex) {
+ if(!br->mtex[act])
+ br->mtex[act]= add_mtex();
+
+ br->mtex[act]->tex= newtex;
+ id_us_plus(&newtex->id);
+ }
+ else if(br->mtex[act]) {
+ MEM_freeN(br->mtex[act]);
+ br->mtex[act]= NULL;
+ }
+}
+
/* ------------------------------------------------------------------------- */
EnvMap *BKE_add_envmap(void)
Modified: trunk/blender/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_brush.c 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/makesrna/intern/rna_brush.c 2009-10-12 13:12:45 UTC (rev 23784)
@@ -65,29 +65,15 @@
Brush *br= (Brush*)ptr->data;
Tex *tex;
- tex= (br->mtex[(int)br->texact])? br->mtex[(int)br->texact]->tex: NULL;
+ tex= give_current_brush_texture(br);
return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
static void rna_Brush_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
Brush *br= (Brush*)ptr->data;
- int act= br->texact;
- if(br->mtex[act] && br->mtex[act]->tex)
- id_us_min(&br->mtex[act]->tex->id);
-
- 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);
- }
- else if(br->mtex[act]) {
- MEM_freeN(br->mtex[act]);
- br->mtex[act]= NULL;
- }
+ set_current_brush_texture(br, value.data);
}
static void rna_Brush_update(bContext *C, PointerRNA *ptr)
Modified: trunk/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lamp.c 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/makesrna/intern/rna_lamp.c 2009-10-12 13:12:45 UTC (rev 23784)
@@ -69,31 +69,15 @@
Lamp *la= (Lamp*)ptr->data;
Tex *tex;
- tex= (la->mtex[(int)la->texact])? la->mtex[(int)la->texact]->tex: NULL;
+ tex= give_current_lamp_texture(la);
return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
static void rna_Lamp_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
Lamp *la= (Lamp*)ptr->data;
- int act= la->texact;
- if(la->mtex[act] && la->mtex[act]->tex)
- id_us_min(&la->mtex[act]->tex->id);
-
- 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;
- }
+ set_current_lamp_texture(la, value.data);
}
static StructRNA* rna_Lamp_refine(struct PointerRNA *ptr)
Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c 2009-10-12 13:12:45 UTC (rev 23784)
@@ -130,29 +130,15 @@
Material *ma= (Material*)ptr->data;
Tex *tex;
- tex= (ma->mtex[(int)ma->texact])? ma->mtex[(int)ma->texact]->tex: NULL;
+ tex= give_current_material_texture(ma);
return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
static void rna_Material_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
Material *ma= (Material*)ptr->data;
- int act= ma->texact;
- if(ma->mtex[act] && ma->mtex[act]->tex)
- id_us_min(&ma->mtex[act]->tex->id);
-
- 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;
- }
+ set_current_material_texture(ma, value.data);
}
static PointerRNA rna_Material_active_node_material_get(PointerRNA *ptr)
Modified: trunk/blender/source/blender/makesrna/intern/rna_world.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_world.c 2009-10-12 12:54:08 UTC (rev 23783)
+++ trunk/blender/source/blender/makesrna/intern/rna_world.c 2009-10-12 13:12:45 UTC (rev 23784)
@@ -71,31 +71,15 @@
World *wo= (World*)ptr->data;
Tex *tex;
- tex= (wo->mtex[(int)wo->texact])? wo->mtex[(int)wo->texact]->tex: NULL;
+ tex= give_current_world_texture(wo);
return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex);
}
static void rna_World_active_texture_set(PointerRNA *ptr, PointerRNA value)
{
World *wo= (World*)ptr->data;
- int act= wo->texact;
- if(wo->mtex[act] && wo->mtex[act]->tex)
- id_us_min(&wo->mtex[act]->tex->id);
-
- if(value.data) {
- if(!wo->mtex[act]) {
- wo->mtex[act]= add_mtex();
- wo->mtex[act]->texco= TEXCO_VIEW;
- }
-
- wo->mtex[act]->tex= value.data;
- id_us_plus(&wo->mtex[act]->tex->id);
- }
- else if(wo->mtex[act]) {
- MEM_freeN(wo->mtex[act]);
- wo->mtex[act]= NULL;
- }
+ set_current_world_texture(wo, value.data);
}
static void rna_World_update(bContext *C, PointerRNA *ptr)
More information about the Bf-blender-cvs
mailing list