#ifndef __CAMERA_MODIFIER__
#define __CAMERA_MODIFIER__

class RKCamera;

/// \brief The camera modifier base class. This should be derived from 
///        for systems that need to adjust the game camera.
class CameraModifier
{
public:
  
  /// \brief Protected virtual destructor - call Destroy()
  virtual ~CameraModifier() {}

  /// \brief Destroys this object. By default will delete this object, 
  ///        but implementations may decide to override this to re-use the object.
  virtual void Destroy();
  
  /// \brief Update the passed camera with the given delta time
  /// \param a_dt The time delta
  /// \param a_camera The camera to update
  /// \return Returns true if future updates should occur
  virtual bool Update(float a_dt, RKCamera * a_camera) = 0;  
};

#endif //__CAMERA_MODIFIER__


