00001 #ifndef GRCAMERA_H 00002 #define GRCAMERA_H 00003 #include <SceneGraph/SGFrame.h> 00004 00005 namespace Spr{; 00006 00007 /// カメラのデータ 00008 class GRCameraData{ 00009 public: 00010 void InitData(); 00011 /// 視点行列 00012 Affinef view; 00013 /// @name 射影行列の要素 00014 //@{ 00015 /// スクリーンのサイズ 00016 Vec2f size; 00017 /// カメラからのスクリーンのずれ 00018 Vec2f center; 00019 /// カメラとクリッピング平面との距離 00020 float front, back; 00021 /// 00022 GRCameraData(); 00023 //@} 00024 }; 00025 /// カメラの実装 00026 class GRCamera:public SGObject{ 00027 public: 00028 GRCameraData data; 00029 SGOBJECTDEF(GRCamera); 00030 /// カメラ位置を示すフレーム 00031 UTRef<SGFrame> frPosture; 00032 /// 参照フレームの追加 00033 bool AddChildObject(SGObject* obj, SGScene* s); 00034 virtual size_t NReferenceObjects(){ return frPosture ? 1 : 0;} 00035 virtual SGObject* ReferenceObject(size_t i){ return i==0 ? (SGObject*)frPosture : (SGObject*)NULL; } 00036 void UpdatePosture(); 00037 }; 00038 class GRCameras:public std::vector< UTRef<GRCamera> >{ 00039 }; 00040 00041 00042 } 00043 #endif