[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