// Dark GDK - The Game Creators - www.thegamecreators.com // include Dark GDK header file #include "DarkGDK.h" // main entry point for program void DarkGDK ( void ) { // switch to media directory dbSetDir ( "media\\" ); // set sync rate dbSyncOn ( ); dbSyncRate ( 0 ); // turn backdrop off dbBackdropOff ( ); // switch light normalization on dbSetNormalizationOn ( ); // load our character / statue model dbLoadObject ( "models\\statue.x", 1 ); dbLoadImage ( "models\\bumpmap.jpg", 1 ); // position it dbXRotateObject ( 1, 270.0f ); dbFixObjectPivot ( 1 ); dbSetLightMappingOn ( 1, 1 ); dbSetObjectSpecular ( 1, 0 ); dbRotateObject ( 1, 0, 0, 0 ); // load our world dbLoadObject ( "world\\room.x", 2 ); dbXRotateObject ( 2, 270 ); dbFixObjectPivot ( 2 ); dbSetObjectSpecular ( 2, 0 ); dbRotateObject ( 2, 0, 0, 0 ); // hide defaul light dbHideLight ( 0 ); // create lights and spheres for ( int i = 1; i < 8; i++ ) { dbMakeLight ( i ); dbSetPointLight ( i, 0, 0, 0 ); dbSetLightRange ( i, 2000 ); dbMakeObjectSphere ( 2 + i, 50 ); dbGhostObjectOn ( 2 + i ); if ( i > 1 ) { dbHideLight ( i ); dbHideObject ( 2 + i ); } } // declare some variables int keypress = 0; float a=0, b=0, c=0; // main loop while ( LoopGDK ( ) ) { // quit on escape key if ( dbEscapeKey ( ) ) return; // use variables to move the lights a = dbWrapValue ( a + 0.5f ); b = dbWrapValue ( b + 0.2f ); c = dbWrapValue ( c + 0.05f ); float x = dbCos ( c ) * 250.0f; float z = dbSin ( c ) * 300.0f; // position light, camera and point camera dbPositionLight ( 0, x, 150, z ); dbPositionCamera ( x, 100, z ); dbPointCamera ( 0, 150, 0 ); // move lights for ( int i = 1; i < 8; i++ ) { float x = dbCos ( a + ( i * 85 ) ) * 300.0f; float z = dbSin ( a + ( i * 85 ) ) * 150.0f; dbPositionLight ( i, x, 100 + ( dbSin ( b ) * 100 ), z ); dbPositionObject ( 2 + i, x, 100 + ( dbSin ( b ) * 100 ), z ); } float leva = 0.0f; leva = dbWrapValue ( leva + 0.01f ); float level = ( float ) cos ( leva ); int i; // colour lights for ( i = 1; i < 8; i++ ) { float col = 127.0f + ( 127.0f * level ); float rev = col *- 1; if ( i == 1 ) dbColorLight ( i, ( int ) col, ( int ) rev, ( int ) rev ); if ( i == 2 ) dbColorLight ( i, 128, ( int ) col, 128 ); if ( i == 3 ) dbColorLight ( i, 255, 255, ( int ) col * 2 ); if ( i == 4 ) dbColorLight ( i, ( int ) col, ( int ) rev, ( int ) col ); if ( i == 5 ) dbColorLight ( i, ( int ) col, ( int ) col, ( int ) col ); if ( i == 6 ) dbColorLight ( i, 500, 500, 500 ); if ( i == 7 ) dbColorLight ( i, ( int ) rev * 3,( int ) rev * 3, ( int ) rev * 3 ); } // when a key has been pressed show or hide a light char* szKey = dbInKey ( ); if ( strspn ( szKey, "1234567" ) ) { if ( keypress == 0 ) { keypress = 1; int i = 1 + ( dbAsc ( szKey ) - dbAsc ( "1" ) ); if ( dbLightVisible ( i ) ) { dbHideLight ( i ); dbHideObject ( i + 2 ); } else { dbShowLight ( i ); dbShowObject ( i + 2 ); } } } else keypress = 0; // display information dbText ( 20, dbScreenHeight ( ) - 40, "Press keys 1 - 7 to toggle lights" ); // show frame rate char szFPS [ 256 ] = ""; strcpy ( szFPS, "fps = " ); strcat ( szFPS, dbStr ( dbScreenFPS ( ) ) ); dbText ( dbScreenWidth ( ) - 20 - dbTextWidth ( szFPS ), dbScreenHeight ( ) - 40, szFPS ); // update screen dbSync ( ); } }