diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_lamp.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_lamp.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index b8150ee3c7d..299bd37496b 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -64,30 +64,33 @@ static void rna_Lamp_mtex_begin(CollectionPropertyIterator *iter, PointerRNA *pt 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 @@ static void rna_def_lamp(BlenderRNA *brna) 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) |