>int i;
:enable:lighting:GL_LIGHTING
:enable:colormaterial:GL_COLOR_MATERIAL
:shademodel:shademodel:ShadeModel
:colormaterial:colormaterialface,colormaterialmode:ColorMaterial
%flush
+>if (!target->lighting) {
+>b->dirty &= nbitID;
+>return;
+>}
:lightmodel:lightmodelambient|r,g,b,a:LightModelfv,GL_LIGHT_MODEL_AMBIENT
:lightmodel:lightmodellocalviewer:*__glhw_LightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, target->lightmodellocalviewer==GL_TRUE);
:lightmodel:lightmodeltwoside:*__glhw_LightModeli(GL_LIGHT_MODEL_TWO_SIDE, target->lightmodeltwoside==GL_TRUE);
:material:ambient[0]|r,g,b,a:Materialfv, GL_FRONT, GL_AMBIENT
:material:ambient[1]|r,g,b,a:Materialfv, GL_BACK, GL_AMBIENT
:material:diffuse[0]|r,g,b,a:Materialfv, GL_FRONT, GL_DIFFUSE
:material:diffuse[1]|r,g,b,a:Materialfv, GL_BACK, GL_DIFFUSE
:material:specular[0]|r,g,b,a:Materialfv, GL_FRONT, GL_SPECULAR
:material:specular[1]|r,g,b,a:Materialfv, GL_BACK, GL_SPECULAR
:material:emission[0]|r,g,b,a:Materialfv, GL_FRONT, GL_EMISSION
:material:emission[1]|r,g,b,a:Materialfv, GL_BACK, GL_EMISSION
:material:shininess[0]:Materialf, GL_FRONT, GL_SHININESS
:material:shininess[1]:Materialf, GL_BACK, GL_SHININESS
%flush
>for (i=0; i<current->maxlights; i++) {
>GLlightbits *lb = b->light+i;
>GLlight *tl = target->light+i;
>GLlight *cl = current->light+i;
>if (!(lb->dirty & bitID)) continue;
%target=tl
%current=cl
%bit=lb
:enable:enable:GL_LIGHT0+i
%flush
+>if (!tl->enable) {
+>lb->dirty &=nbitID;
+>continue;
+>}
:ambient:ambient|r,g,b,a:Lightfv, GL_LIGHT0+i, GL_AMBIENT
:diffuse:diffuse|r,g,b,a:Lightfv, GL_LIGHT0+i, GL_DIFFUSE
:specular:specular|r,g,b,a:Lightfv, GL_LIGHT0+i, GL_SPECULAR
:attenuation:constantattenuation:Lightf, GL_LIGHT0+i, GL_CONSTANT_ATTENUATION
:attenuation:linearattenuation:Lightf, GL_LIGHT0+i, GL_LINEAR_ATTENUATION
:attenuation:quadraticattenuation:Lightf, GL_LIGHT0+i, GL_QUADRATIC_ATTENUATION
:attenuation:constantattenuation:Lightf, GL_LIGHT0+i, GL_CONSTANT_ATTENUATION
:position:*__glhw_MatrixMode(GL_MODELVIEW);
:position:*__glhw_PushMatrix();
:position:*__glhw_LoadIdentity();
:position:position|x,y,z,w:Lightfv, GL_LIGHT0+i, GL_POSITION
:position:*__glhw_PopMatrix();
:spot:*__glhw_MatrixMode(GL_MODELVIEW);
:spot:*__glhw_PushMatrix();
:spot:*__glhw_LoadIdentity();
:spot:spotdirection|x,y,z:Lightfv, GL_LIGHT0+i, GL_SPOT_DIRECTION
:spot:spotexponent:Lightf, GL_LIGHT0+i, GL_SPOT_EXPONENT
:spot:spotcutoff:Lightf, GL_LIGHT0+i, GL_SPOT_CUTOFF
:spot:*__glhw_PopMatrix();
%flush
>lb->dirty &= nbitID;
>}
%target=target
%current=current
%bit=b
