initial commit
This commit is contained in:
70
glcamera.h
Normal file
70
glcamera.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
QGL Camera
|
||||
Ivan Pelipenko peri4ko@yandex.ru
|
||||
|
||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef GLCAMERA_H
|
||||
#define GLCAMERA_H
|
||||
|
||||
#include "globject.h"
|
||||
|
||||
//extern QMatrix4x4 globCameraMatrix;
|
||||
//extern Camera * currentCamera;
|
||||
|
||||
class Camera: public AimedObject
|
||||
{
|
||||
friend class QGLView;
|
||||
friend class GLParticlesSystem;
|
||||
friend QDataStream & operator <<(QDataStream & s, const ObjectBase * p);
|
||||
friend QDataStream & operator >>(QDataStream & s, ObjectBase *& p);
|
||||
public:
|
||||
Camera();
|
||||
|
||||
void setFOV(const float & f) {fov_ = f;}
|
||||
void setAngles(const QVector3D & a) {setRotation(a);}
|
||||
void setAngleZ(const float & a) {setRotationZ(a);}
|
||||
void setAngleXY(const float & a) {setRotationX(a);}
|
||||
void setAngleRoll(const float & a) {roll_ = a;}
|
||||
void setDepthStart(const float & d) {depth_start = d;}
|
||||
void setMirrorX(bool yes) {mirror_x = yes;}
|
||||
void setMirrorY(bool yes) {mirror_y = yes;}
|
||||
|
||||
float FOV() const {return fov_;}
|
||||
float angleZ() const {return rotationZ();}
|
||||
float angleXY() const {return rotationX();}
|
||||
float angleRoll() const {return roll_;}
|
||||
float depthStart() const {return depth_start;}
|
||||
bool isMirrorX() const {return mirror_x;}
|
||||
bool isMirrorY() const {return mirror_y;}
|
||||
void assign(const Camera & c);
|
||||
|
||||
virtual ObjectBase * clone(bool withChildren = true);
|
||||
QMatrix4x4 viewMatrix() const;
|
||||
QMatrix4x4 projectionMatrix(double aspect) const;
|
||||
QMatrix4x4 offsetMatrix() const;
|
||||
|
||||
QMatrix4x4 fullViewMatrix() const {return viewMatrix() * offsetMatrix();}
|
||||
|
||||
private:
|
||||
mutable QVector3D offset_;
|
||||
GLfloat fov_, roll_;
|
||||
GLfloat depth_start;
|
||||
bool mirror_x;
|
||||
bool mirror_y;
|
||||
|
||||
};
|
||||
|
||||
#endif // GLCAMERA_H
|
||||
Reference in New Issue
Block a user