[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20838] branches/soc-2009-yukishiro: started adding light env rna

Jingyuan Huang jingyuan.huang at gmail.com
Fri Jun 12 21:07:57 CEST 2009


Revision: 20838
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20838
Author:   yukishiro
Date:     2009-06-12 21:07:57 +0200 (Fri, 12 Jun 2009)

Log Message:
-----------
started adding light env rna

Modified Paths:
--------------
    branches/soc-2009-yukishiro/release/datafiles/blenderbuttons
    branches/soc-2009-yukishiro/release/ui/buttons_light.py
    branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h
    branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
    branches/soc-2009-yukishiro/source/blender/editors/include/UI_resources.h
    branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
    branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_context.c
    branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_header.c
    branches/soc-2009-yukishiro/source/blender/editors/space_buttons/space_buttons.c
    branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c
    branches/soc-2009-yukishiro/source/blender/makesdna/DNA_space_types.h
    branches/soc-2009-yukishiro/source/blender/makesrna/RNA_access.h
    branches/soc-2009-yukishiro/source/blender/makesrna/intern/makesrna.c
    branches/soc-2009-yukishiro/source/blender/makesrna/intern/rna_internal.h
    branches/soc-2009-yukishiro/source/blender/windowmanager/WM_types.h

Added Paths:
-----------
    branches/soc-2009-yukishiro/source/blender/makesrna/intern/rna_lightenv.c

Modified: branches/soc-2009-yukishiro/release/datafiles/blenderbuttons
===================================================================
(Binary files differ)

Modified: branches/soc-2009-yukishiro/release/ui/buttons_light.py
===================================================================
--- branches/soc-2009-yukishiro/release/ui/buttons_light.py	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/release/ui/buttons_light.py	2009-06-12 19:07:57 UTC (rev 20838)
@@ -4,8 +4,23 @@
 class LightButtonsPanel(bpy.types.Panel):
 	__space_type__ = "BUTTONS_WINDOW"
 	__region_type__ = "WINDOW"
-	__context__ = "light"
+	__context__ = "lightenv"
 
+
+class LIGHT_PT_preview(LightButtonsPanel):
+	__idname__= "LIGHT_PT_preview"
+	__label__ = "Preview"
+
+	def poll(self, context):
+		return context.lightenv
+
+	def draw(self, context):
+		layout = self.layout
+
+                lightenv = context.lightenv
+		layout.template_preview(lightenv)
+
+
 class LIGHT_PT_type(LightButtonsPanel):
 	__idname__= "LIGHT_PT_type"
 	__label__ = "Light Environment Type"
@@ -13,4 +28,5 @@
 	def draw(self, context):
 		layout = self.layout
 
+bpy.types.register(LIGHT_PT_preview)
 bpy.types.register(LIGHT_PT_type)

Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h	2009-06-12 19:07:57 UTC (rev 20838)
@@ -40,12 +40,10 @@
 
 void init_def_lightenv(void);
 void free_lightenv(struct LightEnv *env); 
-LightEnv* add_lightenv(char *name);
+void add_lightenv(struct Scene *scene, char *name);
 
 void load_probe_image(struct LightEnv *env, char *image_name);
 
-LightEnv* get_scene_lightenv(struct Scene *scene);
-
 #ifdef __cplusplus
 }
 #endif

Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c	2009-06-12 19:07:57 UTC (rev 20838)
@@ -94,7 +94,7 @@
 }
 
 
-LightEnv* add_lightenv(char *name)
+void add_lightenv(Scene *scene, char *name)
 {
         LightEnv *env;
 
@@ -103,16 +103,6 @@
         env->light_func = def_synthetic;
         SH_ComputeLightCoefficients(env);
 
-        return env;
+        scene->lightenv = env;
 }
 
-
-LightEnv* get_scene_lightenv(Scene *scene)
-{
-        if (scene->lightenv == NULL)
-                scene->lightenv = add_lightenv("LightEnv");
-
-        return scene->lightenv;
-}
-
-

Modified: branches/soc-2009-yukishiro/source/blender/editors/include/UI_resources.h
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/include/UI_resources.h	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/editors/include/UI_resources.h	2009-06-12 19:07:57 UTC (rev 20838)
@@ -136,7 +136,7 @@
 	ICON_PARTICLES,
 	ICON_PHYSICS,
 	ICON_SPEAKER,
-	ICON_LIGHT,
+	ICON_LIGHTENV,
 	ICON_BLANK042,
 	ICON_BLANK043,
 	ICON_BLANK044,
@@ -228,7 +228,7 @@
 	ICON_BONE_DATA,
 	ICON_CONSTRAINT,
 	ICON_SHAPEKEY_DATA,
-	ICON_BLANK079a,
+	ICON_LIGHT_DATA,
 	ICON_BLANK079,
 	ICON_PACKAGE,
 	ICON_UGLYPACKAGE,

Modified: branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c	2009-06-12 19:07:57 UTC (rev 20838)
@@ -102,6 +102,7 @@
 	sj->stop= stop;
 	sj->do_update= do_update;
 	
+        add_lightenv(sj->scene, "LightEnv");
         SH_ComputeSceneCoefficients(sj->scene, sj->v3d);
         sj->scene->flag |= SCE_SH_COMPUTED;
 }
@@ -153,7 +154,7 @@
 static void undo_lightpaint_push(Scene *scene)
 {
         int i, j;
-        LightEnv *env = get_scene_lightenv(scene);
+        LightEnv *env = scene->lightenv;
         UndoCoeffs *uc = MEM_callocN(sizeof(UndoCoeffs), "UndoCoeffs");
 
         for (i = 0; i < 25; i++) {
@@ -172,7 +173,7 @@
         LightEnv *env;
 
         if (undo_coeffs.first == NULL) {
-                env = get_scene_lightenv(scene);
+                env = scene->lightenv;
                 for (i = 0; i < 25; i++) {
                         for (j = 0; j < 3; j++) {
                                 init_coeffs[i][j] = env->shcoeffs[i][j];
@@ -186,7 +187,7 @@
         VPaint *lp = CTX_data_tool_settings(C)->lpaint;
         RegionView3D *rv3d = CTX_wm_region_view3d(C);
         Scene *scene = CTX_data_scene(C);
-        LightEnv *env = get_scene_lightenv(scene);
+        LightEnv *env = scene->lightenv;
         PaintStroke *ps;
         UndoCoeffs *uc;
         int i, j;
@@ -511,7 +512,7 @@
         SH_solve(P, I, totvert, num_sh, C);
 
         // get light coeffs
-        env = get_scene_lightenv(scene);
+        env = scene->lightenv;
         for (i = 0; i < num_sh; i++) {
                 env->shcoeffs[i][0] = C[0][i];
                 env->shcoeffs[i][1] = C[1][i];

Modified: branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_context.c	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_context.c	2009-06-12 19:07:57 UTC (rev 20838)
@@ -41,6 +41,7 @@
 #include "DNA_particle_types.h"
 #include "DNA_texture_types.h"
 #include "DNA_world_types.h"
+#include "DNA_lightenv_types.h"
 
 #include "BLI_listbase.h"
 
@@ -132,7 +133,26 @@
 	return 0;
 }
 
+static int buttons_context_path_light(ButsContextPath *path)
+{
+	Scene *scene;
+        PointerRNA *ptr = &path->ptr[path->len-1];
 
+        if (RNA_struct_is_a(ptr->type, &RNA_LightEnv)) {
+                return 1;
+        }
+        else if (buttons_context_path_scene(path)) {
+                scene = path->ptr[path->len-1].data;
+
+                RNA_id_pointer_create(&scene->lightenv->id, &path->ptr[path->len]);
+                path->len++;
+
+                return 1;
+        }
+        return 0;
+}
+
+
 static int buttons_context_path_object(ButsContextPath *path)
 {
 	Scene *scene;
@@ -379,6 +399,9 @@
 		case BCONTEXT_WORLD:
 			found= buttons_context_path_world(path);
 			break;
+                case BCONTEXT_LIGHTENV:
+                        found= buttons_context_path_light(path);
+                        break;
 		case BCONTEXT_OBJECT:
 		case BCONTEXT_PHYSICS:
 		case BCONTEXT_CONSTRAINT:
@@ -487,6 +510,10 @@
 		set_pointer_type(path, result, &RNA_Object);
 		return 1;
 	}
+        else if(CTX_data_equals(member, "lightenv")) {
+                set_pointer_type(path, result, &RNA_LightEnv);
+                return 1;
+        }
 	else if(CTX_data_equals(member, "mesh")) {
 		set_pointer_type(path, result, &RNA_Mesh);
 		return 1;

Modified: branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_header.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_header.c	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_buttons/buttons_header.c	2009-06-12 19:07:57 UTC (rev 20838)
@@ -170,8 +170,8 @@
 		uiDefIconButS(block, ROW, B_CONTEXT_SWITCH,	ICON_SCENE,			xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_SCENE, 0, 0, "Scene");
 	if(sbuts->pathflag & (1<<BCONTEXT_WORLD))
 		uiDefIconButS(block, ROW, B_CONTEXT_SWITCH,	ICON_WORLD,		xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_WORLD, 0, 0, "World");
-	if(sbuts->pathflag & (1<<BCONTEXT_LIGHT))
-                uiDefIconButS(block, ROW, B_CONTEXT_SWITCH,     ICON_LIGHT,             xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_LIGHT, 0, 0, "Light");
+	if(sbuts->pathflag & (1<<BCONTEXT_LIGHTENV))
+                uiDefIconButS(block, ROW, B_CONTEXT_SWITCH,     ICON_LIGHTENV,             xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_LIGHTENV, 0, 0, "LightEnv");
 	if(sbuts->pathflag & (1<<BCONTEXT_OBJECT))
 		uiDefIconButS(block, ROW, B_CONTEXT_SWITCH,	ICON_OBJECT_DATA,	xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_OBJECT, 0, 0, "Object");
 	if(sbuts->pathflag & (1<<BCONTEXT_CONSTRAINT))

Modified: branches/soc-2009-yukishiro/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_buttons/space_buttons.c	2009-06-12 17:18:59 UTC (rev 20837)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_buttons/space_buttons.c	2009-06-12 19:07:57 UTC (rev 20838)
@@ -185,6 +185,8 @@
 		ED_region_panels(C, ar, vertical, "scene");
 	else if(sbuts->mainb == BCONTEXT_WORLD)
 		ED_region_panels(C, ar, vertical, "world");
+        else if(sbuts->mainb == BCONTEXT_LIGHTENV)
+		ED_region_panels(C, ar, vertical, "lightenv");
 	else if(sbuts->mainb == BCONTEXT_OBJECT)
 		ED_region_panels(C, ar, vertical, "object");
 	else if(sbuts->mainb == BCONTEXT_DATA)
@@ -203,8 +205,6 @@
 		ED_region_panels(C, ar, vertical, "modifier");
 	else if (sbuts->mainb == BCONTEXT_CONSTRAINT)
 		ED_region_panels(C, ar, vertical, "constraint");
-        else if(sbuts->mainb == BCONTEXT_LIGHT)
-		ED_region_panels(C, ar, vertical, "light");
 
     sbuts->re_align= 0;
 	sbuts->mainbo= sbuts->mainb;
@@ -346,12 +346,19 @@
 		case NC_WORLD:
 			ED_area_tag_redraw(sa);
 			sbuts->preview= 1;
+                        break;
 		case NC_LAMP:
 			ED_area_tag_redraw(sa);
 			sbuts->preview= 1;
+                        break;
 		case NC_TEXTURE:
 			ED_area_tag_redraw(sa);
 			sbuts->preview= 1;
+                        break;
+                case NC_LIGHTENV:
+			ED_area_tag_redraw(sa);
+			sbuts->preview= 1;
+                        break;
 	}
 }
 

Modified: branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list