text: ////////////////////////////////////////////////////////////////////////////////
  // EDApp.h
  ////////////////////////////////////////////////////////////////////////////////
  #ifndef _EDAPP_H_
  #define _EDAPP_H_
  
  #include "Glee.h"
  #include <gl/glu.h>
  
  #include "AppConfig.h"
  #include "EDCamera.h"
  #include "Animation.h"
  #include "Interpolator.h"
  
  template < typename T >
  struct vec3;
  typedef vec3<float> vec3f;
  
  class EDApp
  {
      EDCamera m_Camera;
      EDFrame m_CameraFrame;
  
  	Animation< vec3f > m_Animation;
  	Interpolator< vec3f > m_Interpolator;
  	Interpolator< vec3f > m_Reverse;
  
      EDApp( ){ }
      ~EDApp( ){ }
  
  public:
  
      //////////////////////////////////////////////////////////////////////////
      // This function gets the instance of the singleton.
      // 
      // Returns
  	// EDApp& the instance of the singleton.
      //////////////////////////////////////////////////////////////////////////
      static EDApp& GetInstance( )
      {
          static EDApp instance;
          return instance;
      }
  
      //////////////////////////////////////////////////////////////////////////
      // This function initalizes opengl and the demo app
      //////////////////////////////////////////////////////////////////////////
      void Initialize( );
  
  	//////////////////////////////////////////////////////////////////////////
  	// Shuts the App down
  	//////////////////////////////////////////////////////////////////////////
  	void Shutdown( );
  
      //////////////////////////////////////////////////////////////////////////
      // This is to be called when a 
      // repaint is needed.
      //////////////////////////////////////////////////////////////////////////
      void Update( );
  
      EDCamera& GetCamera( ) { return m_Camera; }
  };
  
  #endif // _EDAPP_H_