##### Ninja Library - Model Function

# njCnkPreLightObject

Pre-calculate of the chunk object light source

### FORMAT

`

  void njCnkPreLightObject( *object )
  NJS_CNK_OBJECT *object

`

### PARAMETER

  `*object` | Pointer to chunk model object

### RETURN

  None

### DESCRIPTION

  Calculates the light source for the chunk object in advance. The light source calculation result is embedded in the apex chunk. Therefore, the apex chunk format is restricted to NJD_CV_VN_D8. The light source calculation is performed in the same manner as for `njCnkDrawObject()` function, with the exception that material is calculated as white. Specular is not reflected.

### EXAMPLE

      sbInitSystem( NJD_RESOLUTION_640x240_NTSCNI, NJD_FRAMEBUFFER_MODE_RGB565, 1 );
      njInitVertexBuffer( 500000, 0, 10000, 0, 0 );
      njInitMatrix( matrix, 128, 0);
      njInit3D( vbuf, 4096 );
      njInitView( &view );
      njSetView( &view );
      njCreateLight(&lt[0], NJD_SPEC_DIR);
      njCreateLight(&lt[1], NJD_SPEC_POINT);
      njCreateLight(&lt[2], NJD_SPEC_POINT);
      njCreateLight(&lt[3], NJD_SPEC_POINT);
      njSetLightDirection(&lt[0], 0.f, 0.f, -1.f);
      njSetLightLocation(&lt[1], 0.f, 0.f, -12.f);
      njSetLightLocation(&lt[2], 0.f, 0.f, -12.f);
      njSetLightLocation(&lt[3], 0.f, 0.f, -12.f);
      njSetLightRange(&lt[1], 4.f, 16.f);
      njSetLightRange(&lt[2], 4.f, 16.f);
      njSetLightRange(&lt[3], 4.f, 16.f);

      njCnkSetAmbient(0.3f, 0.3f, 0.3f);

      njSetLightColor(&lt[0], 0.3f, 0.2f, 0.1f);
      njSetLightColor(&lt[1], 1.f, 0.0f, 0.0f);
      njSetLightColor(&lt[2], 0.0f, 1.f, 0.0f);
      njSetLightColor(&lt[3], 0.0f, 0.0f, 1.f);
      njSetLightIntensity(&lt[0], 0.f, 1.f, 0.f);
      njSetLightIntensity(&lt[1], 0.f, 1.f, 0.f);
      njSetLightIntensity(&lt[2], 0.f, 1.f, 0.f);
      njSetLightIntensity(&lt[3], 0.f, 1.f, 0.f);

      if( _stop ) {
      	njUnitMatrix(&m);
      	njTranslate( &m, 0.f, 0.f, zzz );
      	njRotateXYZ( &m, xx1,yy1,zz1 );
      	njCalcPoint( &m, &p, &p1 );

      	njUnitMatrix(&m);
      	njTranslate( &m, 0.f, 0.f, zzz );
      	njRotateXYZ( &m, xx2,yy2,zz2 );
      	njCalcPoint( &m, &p, &p2 );

      	njUnitMatrix(&m);
      	njTranslate( &m, 0.f, 0.f, zzz );
      	njRotateXYZ( &m, xx3,yy3,zz3 );
      	njCalcPoint( &m, &p, &p3 );
      	xx1 += 357;
      	yy1 += 269;
      	zz1 += 211;
      	xx2 += 169;
      	yy2 += 351;
      	zz2 += 223;
      	xx3 += 109;
      	yy3 += 217;
      	zz3 += 273;

      	njSetLightLocation(&lt[1], p1.x, p1.y, p1.z);
      	njSetLightLocation(&lt[2], p2.x, p2.y, p2.z);
      	njSetLightLocation(&lt[3], p3.x, p3.y, p3.z);
      }
      njClearMatrix();
      njTranslate( NULL, 0.f, 0.f, -10.f );
      njRotateXYZ( NULL, xx,yy,zz );
      if( _stop ) njCnkPreLightObject( MODEL );
      njCnkEasyDrawObject( MODEL );

### REFERENCE

  `njCnkDrawObject()
  njCnkPreLightModel()
  `

njCnkPreLightObject

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998,1999