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) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs