/*****************************************************************************
 * $LastChangedDate: 2011-04-22 12:24:45 -0400 (Fri, 22 Apr 2011) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Module configuration.
 *//*
 * LEGAL:   COPYRIGHT (C) 2007 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#ifndef WORLD_CONF_HH
#define WORLD_CONF_HH 1

#define WORLD_CONF world::GET_CONF()

#include "base/conf_txt.hh"
#include "object/rotation_list.hh"
using namespace object;

namespace world {

////////////////////////////////////////////////////////////////////////////////
/// @brief Module configuration.
///
class Conf
{
#include "base/conf_template_txt.hh"
public:
    bool            mFlatWorld;             ///< use World::IfFlat() if possible
    bool            mEnableOsgOptimizer;    ///< disabled by -no-osg-opt

    // World:
    fp              mObjectScale;
    Vector3         mObjectScale3;              ///< thrice
    Meter           mWorldAltitudeMin;          ///< min alt
    Meter           mWorldAltitudeMax;          ///< max alt

    // Terrain model of flat world:
    string          mFlatModelFile;             ///< terrain patch
    RotationList    mFlatModelRotationList;     ///< to set orientation
    fp              mFlatModelScale;            ///< graphical scale
    WorldVertex     mFlatModelOffset;           ///< to adjust origin/height of particular terrain model
    SphereVertex    mFlatModelNW;               ///< NW extent of terrain patch
    SphereVertex    mFlatModelSE;               ///< SE extent of terrain patch
    GeoVertex       mFlatModelMeterOffset;      ///< to adjust center of world
    fp              mFlatModelMeterSimRatio;    ///< multiplying this by a meter converts to graphical coordinates
    Meter           mFlatModelMeterLowAlt;      ///< approx low altitude, for World::IfLowAltitude()
    Meter           mFlatModelMeterAltMin;      ///< for computing volume
    Meter           mFlatModelMeterAltMax;      ///< for computing volume
};
#include "base/conf_template_end.hh"

} // namespace world

#endif // WORLD_CONF_HH
