This interface describes basic camera in 3D space.
You can find more information in comments below. Overrided methods can be found in corresponding base class or interface.
class ICamera : public virtual IReleasable
{
protected:
    bool m_bPositionChanged;
    bool m_bMatrixChanged;
    nitisa::ProjectionMode m_eProjectionMode;
    nitisa::RotateOrder m_eRotateOrder;
    Vec3f m_sPosition;
    Vec3f m_sRotation;
    RectF m_sViewport;
    float m_fFOV;
    float m_fAspect;
    Vec2f m_sPlanes;
    Quaternion m_sTargetDirection;
    Quaternion m_sUpDirection;
    Quaternion m_sRightDirection;
    Vec2f m_sPitchLimits;
    Vec2f m_sYawLimits;
    Vec2f m_sRollLimits;
public:
    bool const &PositionChanged;
    bool const &MatrixChanged;
    nitisa::ProjectionMode const &ProjectionMode;
    nitisa::RotateOrder const &RotateOrder;
    Vec3f const &Position;
    float const &X;
    float const &Y;
    float const &Z;
    Vec3f const &Rotation;
    float const &Pitch;
    float const &Yaw;
    float const &Roll;
    RectF const &Viewport;
    float const &FOV;
    float const &Aspect;
    Vec2f const &Planes;
    float const &NearPlane;
    float const &FarPlane;
    Vec3f const &TargetDirection;
    Vec3f const &UpDirection;
    Vec3f const &RightDirection;
    Vec2f const &PitchLimits;
    Vec2f const &YawLimits;
    Vec2f const &RollLimits;
    virtual const Mat4f &getProjectionMatrix() = 0;
    virtual const Mat4f &getViewMatrix() = 0;
    virtual const Mat4f &getMatrix() = 0;
    virtual bool hasPitchLimits() const = 0;
    virtual bool hasYawLimits() const = 0;
    virtual bool hasRollLimits() const = 0;
    virtual bool setProjectionMode(const nitisa::ProjectionMode value) = 0;
    virtual bool setRotateOrder(const nitisa::RotateOrder value) = 0;
    virtual bool setPosition(const Vec3f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setX(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setY(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setZ(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setRotation(const Vec3f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setPitch(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setYaw(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setRoll(const float value, const bool add = false, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setViewport(const RectF &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setFOV(const float value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setAspect(const float value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setPlanes(const Vec2f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setNearPlane(const float value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setFarPlane(const float value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setPitchLimits(const Vec2f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0; // X >= Y(usually 1, -1) means no limit
    virtual bool setYawLimits(const Vec2f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual bool setRollLimits(const Vec2f &value, const float relative_tolerance = ntl::RelativeTolerance<float>) = 0;
    virtual void MoveForward(const float delta) = 0;
    virtual void MoveBackward(const float delta) = 0;
    virtual void MoveLeft(const float delta) = 0;
    virtual void MoveRight(const float delta) = 0;
    virtual void MoveUp(const float delta) = 0;
    virtual void MoveDown(const float delta) = 0;
    virtual void TurnUp(const float delta) = 0;
    virtual void TurnDown(const float delta) = 0;
    virtual void TurnLeft(const float delta) = 0;
    virtual void TurnRight(const float delta) = 0;
    virtual void TiltLeft(const float delta) = 0;
    virtual void TiltRight(const float delta) = 0;
};| Namespace: | nitisa | 
| Include: | Nitisa/Interfaces/ICamera.h |