00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfBillboard_h_
00026 #define _CIvfBillboard_h_
00027
00028 #include <ivf/IvfComposite.h>
00029 #include <ivf/IvfCamera.h>
00030
00031 IvfSmartPointer(CIvfBillboard);
00032
00033 #define IVF_BILLBOARD_Y 0
00034 #define IVF_BILLBOARD_X 1
00035 #define IVF_BILLBOARD_XY 2
00036
00037 #define IVF_ALIGN_CAMERA 0
00038 #define IVF_ALIGN_VECTOR 1
00039
00048 class IVF_API CIvfBillboard : public CIvfComposite {
00049 private:
00050 CIvfCamera* m_camera;
00051 double m_angle1;
00052 double m_angle2;
00053 int m_billboardType;
00054 void updateRotation();
00055 double m_forward[3];
00056 int m_alignObject;
00057 public:
00059 CIvfBillboard();
00060
00062 virtual ~CIvfBillboard();
00063
00064 IvfClassInfo("CIvfBillboard",CIvfComposite);
00065
00067 void setCamera(CIvfCamera* camera);
00068
00076 void setBillboardType(int type);
00077
00079 int getBillboardType();
00080
00087 void setAlignObject(int objectType);
00088
00090 void setVector(double *v);
00091
00093 void setVector(double vx, double vy, double vz);
00094
00095 protected:
00096 virtual void createGeometry();
00097 };
00098
00099 #endif