void update_light (gint xpos, gint ypos) { gint startx, starty, pw, ph; GimpVector3 vp; gint k = mapvals.light_selected; compute_preview_rectangle (&startx, &starty, &pw, &ph); vp = mapvals.viewpoint; vp.z = -vp.z; switch (mapvals.lightsource[k].type) { case NO_LIGHT: break; case POINT_LIGHT: case SPOT_LIGHT: gimp_vector_2d_to_3d (startx, starty, pw, ph, xpos, ypos, &vp, &mapvals.lightsource[k].position); break; case DIRECTIONAL_LIGHT: gimp_vector_2d_to_3d (startx, starty, pw, ph, xpos, ypos, &vp, &mapvals.lightsource[k].direction); break; } }
void update_light (gint xpos, gint ypos) { gint startx, starty, pw, ph; pw = PREVIEW_WIDTH * mapvals.zoom; ph = PREVIEW_HEIGHT * mapvals.zoom; startx = (PREVIEW_WIDTH - pw) / 2; starty = (PREVIEW_HEIGHT - ph) / 2; gimp_vector_2d_to_3d (startx, starty, pw, ph, xpos, ypos, &mapvals.viewpoint, &mapvals.lightsource.position); draw_lights (startx, starty,pw, ph); }