87 lines
2.2 KiB
C
87 lines
2.2 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include <osg/Matrix>
|
|||
|
#include <osg/Array>
|
|||
|
#include <osg/Geometry>
|
|||
|
|
|||
|
#include "effects/DrawDecorate.h"
|
|||
|
|
|||
|
class TrackWave : public DrawDecorate {
|
|||
|
public:
|
|||
|
explicit TrackWave(ElectricWave* pElectricWave);
|
|||
|
virtual ~TrackWave(void);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>
|
|||
|
virtual void SetStartAndEnd(const osg::Vec3d& vStart, const osg::Vec3d& vEnd);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>
|
|||
|
void GetStartAndEnd(osg::Vec3d& vStart, osg::Vec3d& vEnd);
|
|||
|
// <20><><EFBFBD>ð뾶
|
|||
|
void SetRadius(const double fTopRadius, const double fBottonRadius);
|
|||
|
// <20><><EFBFBD>ð뾶
|
|||
|
void GetRadius(double& fTopRadius, double& fBottonRadius);
|
|||
|
// <20><><EFBFBD>û<EFBFBD><C3BB>߶<EFBFBD>
|
|||
|
void SetLoopHeight(const double fLoopHeight);
|
|||
|
// <20><><EFBFBD>û<EFBFBD><C3BB>߶<EFBFBD>
|
|||
|
double GetLoopHeight(void) const { return (m_fLoopHeight); }
|
|||
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>߶<EFBFBD>
|
|||
|
void SetSpaceHeight(const double fSpaceHeight);
|
|||
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>߶<EFBFBD>
|
|||
|
double GetSpaceHeight(void) { return (m_fSpaceHeight); }
|
|||
|
// <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
void SetUpdateSpeed(const double fSpeed);
|
|||
|
// <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
double GetUpdateSpeed(void) const {return (m_fUpdateValue);}
|
|||
|
// <20>Ƿ<EFBFBD><C7B7>ǷŴ<C7B7><C5B4><EFBFBD>
|
|||
|
void SetWaveStyle(bool bZ);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ŵ<EFBFBD><C5B4><EFBFBD>
|
|||
|
bool GetWaveSytle(void) const;
|
|||
|
|
|||
|
protected:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
virtual osg::Drawable* CreateDrawable(void);
|
|||
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual osg::Vec3dArray* GetVertexArrays(void);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
// virtual osg::PrimitiveSet* GetPrimitiveSet(int nStart, int nCount);
|
|||
|
virtual void CreatePrimitiveSet(osg::Geometry* pGeometry, int nStart, int nCount);
|
|||
|
|
|||
|
public:
|
|||
|
// <20><><EFBFBD><EFBFBD>
|
|||
|
virtual void UpdataDrawable(void);
|
|||
|
|
|||
|
protected:
|
|||
|
// <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>
|
|||
|
virtual void CreateSingleVertex(double index, osg::Vec3dArray* pVertexArray);
|
|||
|
// <20><><EFBFBD>㶥<EFBFBD><E3B6A5><EFBFBD>뾶
|
|||
|
double CreateTopRadius(double fHeight);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2>뾶
|
|||
|
double CreateBottonRadius(double fHeight);
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
|||
|
double GetDis(void);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>뾶б<EBBEB6><D0B1>
|
|||
|
double ComputeDRadius(void);
|
|||
|
// <20><><EFBFBD>û<EFBFBD><C3BB>ĸ<EFBFBD><C4B8><EFBFBD>
|
|||
|
int GetCount(void);
|
|||
|
|
|||
|
protected:
|
|||
|
double m_fHeight; // <20>߶<EFBFBD>
|
|||
|
double m_fBottomRadius; // <20>ײ<EFBFBD><D7B2>뾶
|
|||
|
double m_fTopRadius; // <20><><EFBFBD><EFBFBD><EFBFBD>뾶
|
|||
|
double m_fSpaceHeight; // <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|||
|
double m_fLoopHeight; // <20><><EFBFBD>߶<EFBFBD>
|
|||
|
double m_fdRadius; // <20>뾶<EFBFBD>仯<EFBFBD><E4BBAF>
|
|||
|
double m_fdHeight; // <20>߶ȱ仯<C8B1><E4BBAF>
|
|||
|
double m_fUpdateValue; // <20><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
|
|||
|
osg::Vec3d m_vStart; // <20><>ʼ<EFBFBD><CABC>
|
|||
|
osg::Vec3d m_vEnd; // <20><>ֹ<EFBFBD><D6B9>
|
|||
|
|
|||
|
int m_nCount; // <20><><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
|||
|
|
|||
|
osg::Matrix m_matrix; // <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
bool m_bZ;
|
|||
|
|
|||
|
friend class CUpdataTrackWave;
|
|||
|
};
|
|||
|
|