- FillRectRequest* fillrectrequest = (FillRectRequest*) request.request_data;
-
- float x = request.pos.x;
- float y = request.pos.y;
- float w = fillrectrequest->size.x;
- float h = fillrectrequest->size.y;
-
- glDisable(GL_TEXTURE_2D);
- glColor4f(fillrectrequest->color.red, fillrectrequest->color.green,
- fillrectrequest->color.blue, fillrectrequest->color.alpha);
-
- glBegin(GL_QUADS);
- glVertex2f(x, y);
- glVertex2f(x+w, y);
- glVertex2f(x+w, y+h);
- glVertex2f(x, y+h);
- glEnd();
- glEnable(GL_TEXTURE_2D);
-
- delete fillrectrequest;
+ if( ambient_color.red == 1.0f && ambient_color.green == 1.0f
+ && ambient_color.blue == 1.0f ) {
+ *color = Color( 1.0f, 1.0f, 1.0f);
+ return;
+ }
+
+ DrawingRequest* request = new(obst) DrawingRequest();
+ request->target = target;
+ request->type = GETLIGHT;
+ request->pos = transform.apply(position);
+
+ //There is no light offscreen.
+ if(request->pos.x >= SCREEN_WIDTH || request->pos.y >= SCREEN_HEIGHT
+ || request->pos.x < 0 || request->pos.y < 0){
+ *color = Color( 0, 0, 0);
+ return;
+ }
+
+ request->layer = LAYER_GUI; //make sure all get_light requests are handled last.
+ GetLightRequest* getlightrequest = new(obst) GetLightRequest();
+ getlightrequest->color_ptr = color;
+ request->request_data = getlightrequest;
+ lightmap_requests.push_back(request);