topical media & game development

talk show tell print

lib-game-darkgdk-samples-Matrix-Main.cpp / cpp



  
  // 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 );
  
          // load images
          dbLoadImage ( "media\\face.jpg", 1 );
          dbLoadImage ( "media\\water.jpg", 2 );
  
          // colour the backdrop
          dbColorBackdrop ( dbRGB ( 0, 0, 0 ) );
  
          // create two matrices
          for ( int m = 1; m < 3; m++ )
          {
                  int s = 0;
  
                  if ( m == 1 )
                          s = 200;
  
                  if ( m == 2 )
                          s = 100;
  
                  // make matrix
                  dbMakeMatrix ( m, ( float ) s, ( float ) s, 36, 36 );
  
                  // position matrix
                  if ( m == 1 )
                          dbPositionMatrix ( m, -50, 20, -50 );
  
                  if ( m == 2 )
                          dbPositionMatrix ( m, 0, 120, 0 );
  
                  // set texturing and ghosting
                  dbPrepareMatrixTexture ( m, m, 36, 36 );
                  dbGhostMatrixOn ( m );
  
                  int tc = 1;
  
                  // control matrix tile
                  for ( int z = 35; z > -1; z-- )
                  {
                          int x = 0;
  
                          while ( x < 36 )
                          {
                                  dbSetMatrixTile ( m, x, z, tc );
                                  tc++;
                                  x++;
                          }
                  }
          }
  
          // set up lights
          dbSetPointLight ( 0, 50, 500, 50 );
          dbColorLight ( 0, 1000, 1000, 200 );
  
          // position camera
          dbPositionCamera ( 50, 170, 50 );
          dbPointCamera ( 50,0,50 );
          
          float a = 0.0f;
  
          // main loop
          while ( LoopGDK ( ) )
          {
                  // quit on escape key
                  if ( dbEscapeKey ( ) )
                          return;
  
                  // adjust height and normals of matrices to create movement
                  for ( int m = 1; m < 3; m++ )
                  {
                          a = dbWrapValue ( a + 1 );
  
                          for ( int z = 0; z < 37; z++ )
                          {
                                  for ( int x = 0; x < 37; x++ )
                                  {
                                          float fX = dbCos ( a + ( x * 10 ) );
                                          float fY = dbSin ( a + ( z * 10 ) );
  
                                          float nx = 0.0f - ( dbCos ( a + ( x * 10 ) ) * 0.25f );
                                          float nz = 0.0f - ( dbSin ( a + ( z * 10 ) ) * 0.25f );
                                          float ny = 1.0f - nx - nz;
  
                                          dbSetMatrixHeight ( m, x, z, ( fX + fY ) * 15.0f );
                                          dbSetMatrixNormal ( m, x, z, nx, ny, nz );
                                  }
                          }
  
                          // update the matrix
                          dbUpdateMatrix ( m );
                  }
  
                  // show information
                  dbText ( 20, dbScreenHeight ( ) - 40, "Water Matrix" );
  
                  // display frames per second
                  char szFPS [ 256 ] = "";
                  strcpy ( szFPS, "fps = " );
                  strcat ( szFPS, dbStr ( dbScreenFPS ( ) ) );
                  dbText ( dbScreenWidth ( ) - 20 - dbTextWidth ( szFPS ), dbScreenHeight ( ) - 40, szFPS );
  
                  // update screen
                  dbSync ( );
          }
  }
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.