Index: common.h
===================================================================
--- common.h	(revision 82)
+++ common.h	(revision 83)
@@ -298,13 +298,13 @@
 __global GLuint raydium_object_anim_start[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIMS];
 __global GLuint raydium_object_anim_end[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIMS];
 __global char   raydium_object_anim_names[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIMS][RAYDIUM_MAX_NAME_LEN]; // anims name array
-__global GLuint raydium_object_anim_instance_current[RAYDIUM_MAX_OBJECTS];
-// states (create instances ?)
-__global GLint raydium_object_anim_current[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES];
-__global GLfloat raydium_object_anim_frame_current[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES];
-__global GLint raydium_object_anim_previous[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES];
-__global GLfloat raydium_object_anim_frame_previous[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES];
-__global GLfloat raydium_object_anim_frame_previous_timeout[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES];
+__global GLuint raydium_object_anim_instance_current[RAYDIUM_MAX_OBJECTS]; // current "rendering" instance
+// states
+__global GLint   raydium_object_anim_current[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES]; // current anim
+__global GLfloat raydium_object_anim_frame_current[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES]; // current frame
+__global GLint   raydium_object_anim_previous[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES]; // anim switch blending (last anim)
+__global GLfloat raydium_object_anim_frame_previous[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES]; // anim switch blending (last frame)
+__global GLfloat raydium_object_anim_frame_previous_timeout[RAYDIUM_MAX_OBJECTS][RAYDIUM_MAX_OBJECT_ANIM_INSTANCES]; // "timer" for anim switch blending
 
 __global int	 raydium_render_fps;
 __global GLfloat raydium_render_rgb_force[4];
@@ -314,7 +314,7 @@
 
 __global signed char	 raydium_fog_enabled_tag;
 
-__global signed char	 raydium_light_enabled_tag;
+__global signed char	raydium_light_enabled_tag;
 __global signed char    raydium_light_internal_state[RAYDIUM_MAX_LIGHTS];
 __global GLfloat raydium_light_position[RAYDIUM_MAX_LIGHTS][4];
 __global GLfloat raydium_light_color[RAYDIUM_MAX_LIGHTS][4];
i<RAYDIUM_ODE_MAX_LENSFLARE;i++)
+    if(raydium_ode_element[elem].lensflare[i]<0)
+        {
+        id=raydium_lensflare_create(flare_name,filename);
+        if(id==-1)
+            return -1;
+        raydium_ode_element[elem].lensflare[i]=id;
+        memcpy(raydium_ode_element[elem].lensflare_offset[i],offset,sizeof(dReal)*3);
+        return id;
+        }
+
+raydium_log("ODE: Error: Cannot attach lensflare: no more free lensflare slot for this element (max: %i)",RAYDIUM_ODE_MAX_LENSFLARE);
+return -1;
+}
+
+int raydium_ode_element_lensflare_offset_name(char *elem, char *flare_name, char *filename, dReal *offset)
+{
+return raydium_ode_element_lensflare_offset(raydium_ode_element_find(elem),flare_name,filename,offset);
+}
+
+int raydium_ode_element_lensflare_offset_name_3f(char *elem, char *flare_name, char *filename, dReal offx, dReal offy, dReal offz)
+{
+dReal off[3];
+off[0]=offx;
+off[1]=offy;
+off[2]=offz;
+return raydium_ode_element_lensflare_offset_name(elem,flare_name,filename,off);
+}
+
 // smooth camera related functions
 
 void raydium_camera_smooth_path_to_element(char *path, int element, GLfloat path_step, GLfloat smooth_step)