[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11281] branches/soc-2007-maike/source/ blender: Duplicate lights fix
Miguel Torres Lima
torreslima at gmail.com
Sun Jul 15 20:11:52 CEST 2007
Revision: 11281
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11281
Author: maike
Date: 2007-07-15 20:11:51 +0200 (Sun, 15 Jul 2007)
Log Message:
-----------
Duplicate lights fix
Modified Paths:
--------------
branches/soc-2007-maike/source/blender/blenkernel/intern/object.c
branches/soc-2007-maike/source/blender/src/editobject.c
branches/soc-2007-maike/source/blender/src/glsl_material.c
branches/soc-2007-maike/source/blender/src/headerbuttons.c
Modified: branches/soc-2007-maike/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/soc-2007-maike/source/blender/blenkernel/intern/object.c 2007-07-15 17:06:41 UTC (rev 11280)
+++ branches/soc-2007-maike/source/blender/blenkernel/intern/object.c 2007-07-15 18:11:51 UTC (rev 11281)
@@ -110,6 +110,9 @@
#include "BPY_extern.h"
+#include "BIF_glutil.h"
+#include "BIF_glsl_light.h"
+
/* Local function protos */
static void solve_parenting (Object *ob, Object *par, float obmat[][4], float slowmat[][4], int simul);
@@ -621,7 +624,7 @@
id_us_plus((ID *)lan->ipo);
BPY_copy_scriptlink(&la->scriptlink);
-
+
return lan;
}
@@ -670,6 +673,9 @@
ob->data= lan;
lan->id.us++;
la->id.us--;
+
+ if(glsl_active())
+ glsl_create_light(lan, ob);
}
}
ob= ob->id.next;
Modified: branches/soc-2007-maike/source/blender/src/editobject.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/editobject.c 2007-07-15 17:06:41 UTC (rev 11280)
+++ branches/soc-2007-maike/source/blender/src/editobject.c 2007-07-15 18:11:51 UTC (rev 11281)
@@ -4084,7 +4084,10 @@
switch(ob->type) {
case OB_LAMP:
if(id && id->us>1 && id->lib==NULL) {
- ob->data= la= copy_lamp(ob->data);
+ ob->data= la= copy_lamp(ob->data);
+ if(glsl_active())
+ glsl_create_light(la, ob);
+
for(a=0; a<MAX_MTEX; a++) {
if(la->mtex[a]) {
ID_NEW(la->mtex[a]->object);
@@ -4844,7 +4847,13 @@
case OB_LAMP:
if(dupflag & USER_DUP_LAMP) {
ID_NEW_US2(obn->data )
- else obn->data= copy_lamp(obn->data);
+ else{
+ obn->data= copy_lamp(obn->data);
+
+ if(glsl_active())
+ glsl_create_light(obn->data, obn);
+ }
+
id->us--;
}
break;
Modified: branches/soc-2007-maike/source/blender/src/glsl_material.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/glsl_material.c 2007-07-15 17:06:41 UTC (rev 11280)
+++ branches/soc-2007-maike/source/blender/src/glsl_material.c 2007-07-15 18:11:51 UTC (rev 11281)
@@ -233,6 +233,9 @@
glsl_update_tree_colorband_uniforms(tree);
glsl_update_tree_world_uniforms(tree);
glsl_update_all_light_uniforms(tree);
+
+ if(mat == &defmaterial)
+ glsl_defmaterial = tree;
}
@@ -322,6 +325,11 @@
{
GLSL_MaterialTree tree = (struct GLSL_MaterialTree_ *) BLI_ghash_lookup(treeHash, mat);
+ if(!tree || !mat){
+ if(mode == GLSL_SHADED) return glsl_defmaterial->shaded_program;
+ else return glsl_defmaterial->textured_program;
+ }
+
if(mode == GLSL_SHADED){
return((struct GLSL_Program_ *) tree->shaded_program);
}
Modified: branches/soc-2007-maike/source/blender/src/headerbuttons.c
===================================================================
--- branches/soc-2007-maike/source/blender/src/headerbuttons.c 2007-07-15 17:06:41 UTC (rev 11280)
+++ branches/soc-2007-maike/source/blender/src/headerbuttons.c 2007-07-15 18:11:51 UTC (rev 11281)
@@ -148,6 +148,7 @@
#include "BIF_previewrender.h"
#include "BIF_writeimage.h"
#include "BIF_butspace.h"
+#include "BIF_glsl_light.h"
#include "BPI_script.h"
@@ -1612,6 +1613,10 @@
if(la->id.us>1) {
if(okee("Single user")) {
ob->data= copy_lamp(la);
+
+ if(glsl_active())
+ glsl_create_light(la, ob);
+
la->id.us--;
}
}
More information about the Bf-blender-cvs
mailing list