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