/*
--------------------------------------------------------------------------------
This source file is part of SkyX.

Copyright (C) 2011 I-maginer <contact@i-maginer.com>

Adapted from Xavier Verguín González initial work:
Copyright (C) 2009 Xavier Verguín González <xavierverguin@hotmail.com>
                                           <xavyiy@gmail.com>

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA, or go to
http://www.gnu.org/copyleft/lesser.txt.
--------------------------------------------------------------------------------
*/

#ifndef _SkyX_AstronomicalModelBasic_H_
#define _SkyX_AstronomicalModelBasic_H_

#include "SkyxAstronomicalModel.h"

namespace SkyX
{

  /*!
  SkyX original sun & moon position calculator.
  */
  class SkyXDllExport AstronomicalModelBasic : public AstronomicalModel
  {
  public:
    Ogre::Vector3 Time;				  //!< Time information: x = time in [0, 24]h range, y = sunrise hour in [0, 24]h range, z = sunset hour in [0, 24] range
    Ogre::Vector2 EastPosition;	//!< East position
  protected:
  private:

  public:
    /*!
    ctor
    */
    AstronomicalModelBasic();

    /*!
    dtor
    */
    ~AstronomicalModelBasic();

    /*!
    @copydoc SkyX::AstronomicalModel::getSunDirection
    */
    virtual const Ogre::Vector3 getSunDirection();

    /*!
    @copydoc SkyX::AstronomicalModel::getMoonDirection
    */
    virtual const Ogre::Vector3 getMoonDirection();

    /*!
    @copydoc SkyX::AstronomicalModel::getMoonPhase
    */
    virtual const Ogre::Real getMoonPhase();

    /*!
    @copydoc SkyX::AstronomicalModel::update
    */
    virtual void update(const Ogre::Real& advanceTime);
  protected:
  private:
  };

}

#endif
