00001 #ifndef CAMERAINSTRUCTIONS_H 00002 #define CAMERAINSTRUCTIONS_H 00003 00004 #include <cassert> 00005 00006 #include "Vec3f.h" 00007 #include "Matrix.h" 00008 00009 class CameraAnimator; 00010 00014 class CameraInstructions 00015 { 00016 public: 00019 CameraInstructions(CameraAnimator* anim) 00020 :animator(anim) 00021 {} 00022 00025 virtual ~CameraInstructions() 00026 {} 00027 00030 virtual void execute() = 0; 00031 00032 protected: 00033 CameraAnimator* animator; 00034 }; 00035 00038 class CameraInstructionMove : public CameraInstructions 00039 { 00040 public: 00052 CameraInstructionMove(CameraAnimator* anim, Vec3f end, Vec3f dir, Vec3f up, float aperture, float distance, unsigned int depthsamples, unsigned int framesleft, unsigned int camnum); 00053 00054 virtual ~CameraInstructionMove() 00055 {} 00056 00059 virtual void execute(); 00060 00061 private: 00062 Vec3f mEndPos; 00063 Vec3f mEndDir; 00064 Vec3f mEndUp; 00065 float mEndAperture; 00066 float mEndFocusDistance; 00067 unsigned int mEndDepthSamples; 00068 unsigned int mFramesLeft; 00069 unsigned int mCameraNumber; 00070 Matrix mDirMatrix; 00071 Matrix mUpMatrix; 00072 bool mRuned; 00073 00074 }; 00075 00076 00079 class CameraInstructionSet : public CameraInstructions 00080 { 00081 public: 00086 CameraInstructionSet(CameraAnimator* anim, unsigned int camnum) 00087 :CameraInstructions(anim), 00088 mCameraNumber(camnum) 00089 {} 00090 00091 virtual ~CameraInstructionSet() 00092 {} 00093 00096 virtual void execute(); 00097 00098 private: 00099 unsigned int mCameraNumber; 00100 00101 }; 00102 00103 00106 class CameraInstructionNormal : public CameraInstructions 00107 { 00108 public: 00113 CameraInstructionNormal(CameraAnimator* anim, unsigned int camnum) 00114 :CameraInstructions(anim), 00115 mCameraNumber(camnum) 00116 {} 00117 00118 virtual ~CameraInstructionNormal() 00119 {} 00120 00123 virtual void execute(); 00124 00125 private: 00126 unsigned int mCameraNumber; 00127 }; 00128 00129 00132 class CameraInstructionStay : public CameraInstructions 00133 { 00134 public: 00140 CameraInstructionStay(CameraAnimator* anim, unsigned int frames, unsigned int camnum) 00141 :CameraInstructions(anim), 00142 mFrames(frames), 00143 mCameraNumber(camnum) 00144 { 00145 } 00146 00147 virtual ~CameraInstructionStay() 00148 {} 00149 00152 virtual void execute(); 00153 00154 private: 00155 unsigned int mFrames; 00156 unsigned int mCameraNumber; 00157 }; 00158 00159 #endif