[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