DYTSrouce/src/effects/TrackWave.h

87 lines
2.2 KiB
C
Raw Normal View History

2025-01-04 04:12:51 +00:00
#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;
};