00001
00002 #ifndef __camera_context_hpp__
00003 #define __camera_context_hpp__
00004
00005 #include <crbn/basic/paramlist.hpp>
00006 #include <crbn/camera/camera.hpp>
00007 #include <crbn/camera/cmod.h>
00008
00009 class CameraContext
00010 {
00011 public:
00012 CameraContext();
00013
00014 ~CameraContext();
00015
00016 void set_view( vec3& position, vec3& target, vec3& vertical ) {
00017 _position = position;
00018 _target = target;
00019 _vertical = vertical;
00020 }
00021
00022 void set_aspect_ratio( float ar ) { _ar = ar; }
00023
00024 bool create( const char* camera_type, paramlist& pl );
00025
00026 Camera* get();
00027
00028 private:
00029 void unload();
00030
00031 void* _camera_module;
00032 Camera* _camera;
00033
00034 vec3 _position, _target, _vertical;
00035 float _ar;
00036 };
00037
00038 #endif // __camera_context_hpp__