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