/////////////////////////////////////////////////////////////////////////
//                                                                     //
// This file contains the declaration of the CRay class.               //
//                                                                     //
/////////////////////////////////////////////////////////////////////////
#ifndef __CRAY_H__
#define __CRAY_H__


#include "real.hpp"
#include "template_defs.hpp"
#include "CColor.hpp"
#include "CVector.hpp"

class CScene;


/////////////////////////////////////////////////////////////////////////
//                                                                     //
// This class is actually just a structure holding information about a //
// casted ray.                                                         //
//                                                                     //
/////////////////////////////////////////////////////////////////////////
class CRay
{
public:
  CVector m_Origin;
  CVector m_Direction;
  int     m_Level;
  real_t  m_Energy;
  real_t  m_RefrIndex;

  // This function returns the color corresponding to this ray
  CColor colorize(const CScene& scene, real_t *pT = 0) const;
};


#endif // __CRAY_H__
