00001 #ifndef CAMERA_H_INCLUDED
00002 #define CAMERA_H_INCLUDED
00003
00004 #include "Component.h"
00005
00006
00007
00008 enum CameraProjectionTypeEnum{
00009 ORTHOGRAPHIC,
00010 PERSPECTIVE
00011 };
00012
00013 struct Ray;
00014
00019 class Camera: public Component{
00020 public :
00021 static const RTTI TYPE;
00022 virtual const RTTI& getType() const{ return TYPE; }
00023
00024 protected:
00028 static Camera* mainCamera;
00029
00030 CameraProjectionTypeEnum projectionType;
00031 float aspectRatio;
00032 float fovy;
00033 float _near;
00034 float _far;
00035
00036 public:
00037 Camera();
00038 Camera(float AspectRatio, float Near, float Far, float Fovy);
00039 ~Camera();
00040
00044 void drawFrustum()const;
00045
00049 static Camera* getMainCamera(){
00050 if(!mainCamera)
00051 std::cerr<<"Main Camera Not Set"<<std::endl;
00052 return mainCamera;
00053 }
00054 static void setMainCamera(Camera* cam){
00055 mainCamera = cam;
00056 }
00057
00061 Ray getWorldRayFromScreenPos(int xScreen, int yScreen)const;
00062
00067 void setProjectionMatrix()const;
00068 };
00069
00070 #endif
00071