[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11223] branches/soc-2007-mosani/source/ blender/render/render_api: Implemented existing light functions.

Aaron Moore two.a.ron at gmail.com
Wed Jul 11 03:55:30 CEST 2007


Revision: 11223
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11223
Author:   mosani
Date:     2007-07-11 03:55:25 +0200 (Wed, 11 Jul 2007)

Log Message:
-----------
Implemented existing light functions.

Modified Paths:
--------------
    branches/soc-2007-mosani/source/blender/render/render_api/include/RND_types.h
    branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_helpers.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/RND_light.c
    branches/soc-2007-mosani/source/blender/render/render_api/source/test.c

Modified: branches/soc-2007-mosani/source/blender/render/render_api/include/RND_types.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/include/RND_types.h	2007-07-11 01:03:39 UTC (rev 11222)
+++ branches/soc-2007-mosani/source/blender/render/render_api/include/RND_types.h	2007-07-11 01:55:25 UTC (rev 11223)
@@ -73,6 +73,10 @@
 	struct RenderAPIObject *next, *prev;
 	ListBase list;
 	struct RenderAPIObjectPointer *current;
+
+	/* RNDLight and RNDGeometry handlers that have been generated */
+	ListBase lights;
+	ListBase geometry;
 }RenderAPIObject;
 
 typedef struct RenderAPIObjectHolder{
@@ -93,11 +97,17 @@
 }RenderAPIObjectPointer;
 
 typedef struct RenderAPILight{
-	
+	struct RenderAPILight *next, *prev;
+	unsigned int type;
+	Lamp *source; /* lamp in blender's database */
 }RenderAPILight;
 
 typedef struct RenderAPIGeometry{
-	
+	struct RenderAPIGeometry *next, *prev;
+	unsigned int type;
+	DerivedMesh *meshSource;
+	Curve *curveSource;
+	MetaBall *metaballSource;
 }RenderAPIGeometry;
 
 typedef struct RenderAPIResult{

Modified: branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h	2007-07-11 01:03:39 UTC (rev 11222)
+++ branches/soc-2007-mosani/source/blender/render/render_api/include/RenderAPI.h	2007-07-11 01:55:25 UTC (rev 11223)
@@ -57,7 +57,8 @@
 #include "DNA_scene_types.h"
 #include "DNA_object_types.h"
 #include "DNA_lamp_types.h"
-#include "DNA_mesh_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meta_types.h"
 #include "DNA_meshdata_types.h"
 #include "BKE_DerivedMesh.h"
 #include "DNA_modifier_types.h"

Modified: branches/soc-2007-mosani/source/blender/render/render_api/source/RND_helpers.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/source/RND_helpers.c	2007-07-11 01:03:39 UTC (rev 11222)
+++ branches/soc-2007-mosani/source/blender/render/render_api/source/RND_helpers.c	2007-07-11 01:55:25 UTC (rev 11223)
@@ -73,7 +73,11 @@
 	/* free object holders */
 	object_free = scene->object_handlers.first;
 	for( ; object_free; object_free = object_free->next )
+	{
 		BLI_freelistN( &object_free->list );
+		BLI_freelistN( &object_free->lights );
+		BLI_freelistN( &object_free->geometry );
+	}
 	BLI_freelistN( &scene->object_handlers );
 	
 	MEM_freeN( scene );

Modified: branches/soc-2007-mosani/source/blender/render/render_api/source/RND_light.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/source/RND_light.c	2007-07-11 01:03:39 UTC (rev 11222)
+++ branches/soc-2007-mosani/source/blender/render/render_api/source/RND_light.c	2007-07-11 01:55:25 UTC (rev 11223)
@@ -32,15 +32,48 @@
  * Light Settings.
  */
 
-RNDLight RND_object_get_light( RNDObject object ){}
+RNDLight RND_object_get_light( RNDObject object )
+{
+	struct RenderAPILight *light = NULL;
+	
+	/* if object is not a light, return null */
+	if( !(object->current->holder->type & RND_LIGHT) ) return light;
+	
+	light = MEM_mallocN( sizeof(RenderAPILight), 
+		"renderAPI light" );
+	light->type = object->current->holder->type;
+	light->source = (Lamp*)object->current->holder->source->data;
+	BLI_addtail( &object->lights, light );
+	return light;
+}
 
-RND_DATATYPE RND_light_get_type( RNDLight light ){}
+RND_DATATYPE RND_light_get_type( RNDLight light )
+{
+	if( light == NULL ) return -1;
+	return light->type;
+}
 
-float RND_light_get_intensity( RNDLight light ){}
+float RND_light_get_intensity( RNDLight light )
+{
+	if( light == NULL ) return -1;
+	return light->source->energy;
+}
 
-float RND_light_get_falloff_distance( RNDLight light ){}
+float RND_light_get_falloff_distance( RNDLight light )
+{
+	if( light == NULL ) return -1;
+	return light->source->dist;
+}
 
-void RND_light_get_color( RNDLight light, float color[] ){}
+void RND_light_get_color( RNDLight light, float color[] )
+{
+	if( light != NULL )
+	{
+		color[0] = light->source->r;
+		color[1] = light->source->b;
+		color[2] = light->source->g;
+	}
+}
 
 TemporaryData *RND_light_get_temporary_data( RNDLight light ){}
 

Modified: branches/soc-2007-mosani/source/blender/render/render_api/source/test.c
===================================================================
--- branches/soc-2007-mosani/source/blender/render/render_api/source/test.c	2007-07-11 01:03:39 UTC (rev 11222)
+++ branches/soc-2007-mosani/source/blender/render/render_api/source/test.c	2007-07-11 01:55:25 UTC (rev 11223)
@@ -10,7 +10,9 @@
 /* currently it can be accessed by toggling on render api and hitting render */
 void RenderAPI_test(){
 	RNDObject object;
+	RNDLight light;
 	char name[30];
+	float color[3];
 	static int i = 0;
 	static Scene *new_scene = NULL;
 	RNDScene scene = RenderAPI_create_scene( G.scene );
@@ -36,26 +38,19 @@
 		scene_add_base( new_scene, new_object );
 	}
 	*/
-	object = RND_get_objects( scene, RND_GEOMETRY );
+	object = RND_get_objects( scene, RND_ALL );
 	for( ; RND_object_exists( object ); RND_object_next( object ) )
 	{
-		if( RND_object_get_type( object ) & RND_GEOMETRY_POLYGON_MESH )
-			fprintf( stderr, ">>> mesh: %s\n", RND_object_get_name( object ) );
-		else
-		if( RND_object_get_type( object ) & RND_GEOMETRY_NURB_SURFACE )
-			fprintf( stderr, ">>> nurb: %s\n", RND_object_get_name( object ) );
-		else
-		if( RND_object_get_type( object ) & RND_GEOMETRY_CURVE )
-			fprintf( stderr, ">>> curve: %s\n", RND_object_get_name( object ) );
-		else
-		if( RND_object_get_type( object ) & RND_GEOMETRY_METABALL )
-			fprintf( stderr, ">>> metaball: %s\n", RND_object_get_name( object ) );
-		else
-		if( RND_object_get_type( object ) & RND_GEOMETRY_SUBDIVISION_SURFACE )
-			fprintf( stderr, ">>> subsurface: %s\n", RND_object_get_name( object ) );
-		else
-		if( RND_object_get_type( object ) & RND_GEOMETRY_PARTICLE_SYSTEM )
-			fprintf( stderr, ">>> particles: %s\n", RND_object_get_name( object ) );
+		if( RND_object_get_type( object ) & RND_LIGHT ){
+			light = RND_object_get_light( object );
+			
+			RND_light_get_color( light, color );
+			fprintf( stderr, "%s - %s %f - %s %f,%f,%f - %s %f\n",
+				RND_object_get_name( object ),
+				"intensity", RND_light_get_intensity( light ),
+				"rgb", color[0], color[1], color[2],
+				"distance", RND_light_get_falloff_distance( light ) );
+		}
 	}
 	
 	RenderAPI_free_scene( scene );





More information about the Bf-blender-cvs mailing list