#ifndef JSGCAMERA_H
#define JSGCAMERA_H

#include "JSystem/JStage/JSGObject.h"

namespace JStage {
    enum TECameraProjection {};

    struct TECameraView {};

    struct TCamera : public TObject {
        virtual ~TCamera() = 0;
        virtual s32 JSGFGetType() const;
        virtual bool JSGGetProjectionType() const;
        virtual void JSGSetProjectionType(JStage::TECameraProjection);
        virtual f32 JSGGetProjectionNear() const;
        virtual void JSGSetProjectionNear(f32);
        virtual f32 JSGGetProjectionFar() const;
        virtual void JSGSetProjectionFar(f32);
        virtual f32 JSGGetProjectionFovy() const;
        virtual void JSGSetProjectionFovy(f32);
        virtual f32 JSGGetProjectionAspect() const;
        virtual void JSGSetProjectionAspect(f32);
        virtual void JSGGetProjectionField(f32*) const;
        virtual void JSGSetProjectionField(f32 const*);
        virtual bool JSGGetViewType() const;
        virtual void JSGSetViewType(JStage::TECameraView);
        virtual void JSGGetViewPosition(Vec*) const;
        virtual void JSGSetViewPosition(Vec const&);
        virtual void JSGGetViewUpVector(Vec*) const;
        virtual void JSGSetViewUpVector(Vec const&);
        virtual void JSGGetViewTargetPosition(Vec*) const;
        virtual void JSGSetViewTargetPosition(Vec const&);
        virtual f32 JSGGetViewRoll() const;
        virtual void JSGSetViewRoll(f32);
    };
};

#endif /* JSGCAMERA_H */
