#ifndef MODEL_HPP
#define MODEL_HPP

#include <string>

#include "gl.hpp"

using namespace std;

//----------
class CScene
{
  public:
    enum EMoveType2 { MOVE2_CONST, MOVE2_WAVE };
    enum EMoveType3 { MOVE3_CONST, MOVE3_WAVE, MOVE3_LINEAR };

  private:
    GLfloat lFocus;
    EMoveType2 lRotXType;
    GLfloat lRotXAngle;
    GLfloat lRotXAmplitude;
    GLfloat lRotXSpeed;
    EMoveType3 lRotZType;
    GLfloat lRotZAngle;
    GLfloat lRotZAmplitude;
    GLfloat lRotZSpeed;
    GLfloat lDistance;
    GLfloat lOrigin[3];
    bool lLamp;
    EMoveType2 lLightType;
    GLfloat lLightPos[3];
    GLfloat lLightSpeed[3];
    GLfloat lLightAmplitude[3];

    GLuint lVertices;
    GLuint lNormals;
    GLuint lFaces;
    GLuint lObjBoxes;
    GLuint lObjRanges;
    int lObjCount;
    GLuint lMaterials;

  public:
    CScene(string);
    ~CScene();

    GLfloat Focus() const;
    EMoveType2 RotXType() const;
    GLfloat RotXAngle() const;
    GLfloat RotXAmplitude() const;
    GLfloat RotXSpeed() const;
    EMoveType3 RotZType() const;
    GLfloat RotZAngle() const;
    GLfloat RotZAmplitude() const;
    GLfloat RotZSpeed() const;
    GLfloat Distance() const;
    const GLfloat *Origin() const;
    bool Lamp() const;
    EMoveType2 LightType() const;
    const GLfloat *LightPos() const;
    const GLfloat *LightSpeed() const;
    const GLfloat *LightAmplitude() const;

    GLuint Vertices() const;
    GLuint Normals() const;
    GLuint Faces() const;
    GLuint ObjBoxes() const;
    GLuint ObjRanges() const;
    GLuint Materials() const;
    int ObjCount() const;
};

#endif // MODEL_HPP
