83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include <osg/Geometry>
|
|||
|
#include <osg/Vec3d>
|
|||
|
|
|||
|
#include "effects/ElectricWave.h"
|
|||
|
|
|||
|
class DrawDecorate : public ElectricWave {
|
|||
|
public:
|
|||
|
explicit DrawDecorate(ElectricWave* pElectricWave);
|
|||
|
virtual ~DrawDecorate(void);
|
|||
|
|
|||
|
public:
|
|||
|
virtual void InitDrawable(void);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
virtual void GetDrawable(osg::Geode* pGeode);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|||
|
virtual void SetColorArray(const osg::Vec4Array* pColorArray);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|||
|
virtual const osg::Vec4Array* GetColorArray( void) const { return (colorArray_); }
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦģʽ
|
|||
|
virtual inline void SetWireframe(bool bWireframe) { wireframe_ = bWireframe;}
|
|||
|
inline bool GetWireframe(void) const { return (wireframe_); }
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
virtual osg::Drawable* GetDrawable(void);
|
|||
|
// <20><><EFBFBD><EFBFBD>
|
|||
|
virtual void UpdataDrawable(void);
|
|||
|
|
|||
|
// <20>Ƿ<EFBFBD>Ϊ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ⱦ
|
|||
|
void EnableIn(bool bIn) { in_ = bIn; }
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ⱦ
|
|||
|
bool IsEnableIn(void) const { return (in_); }
|
|||
|
|
|||
|
public:
|
|||
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
virtual void SetState(bool bOpened);
|
|||
|
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>״̬
|
|||
|
virtual bool GetState(void) const { return (state_); }
|
|||
|
|
|||
|
|
|||
|
protected:
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
virtual void AddDrawable(osg::Drawable* pDrawable);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
virtual osg::Drawable* CreateDrawable(void);
|
|||
|
|
|||
|
// <20><><EFBFBD>ö<EFBFBD><C3B6>㷨<EFBFBD><E3B7A8>
|
|||
|
virtual void SetNormal(osg::Geometry* pDrawable);
|
|||
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
virtual osg::Geometry::AttributeBinding GetColorBinding(void);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
virtual osg::Vec4Array* GetColorArrays(void) ;
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual void SetStateSet(osg::StateSet* pStateSet) ;
|
|||
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual osg::Vec3dArray* GetVertexArrays(void) = 0;
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|||
|
//virtual osg::PrimitiveSet* GetPrimitiveSet(int nStart, int nCount) = 0;
|
|||
|
virtual void CreatePrimitiveSet(osg::Geometry* pGeometry, int nStart, int nCount) = 0;
|
|||
|
|
|||
|
// ǿ<><C7BF><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
virtual void ForceDraw(void) { forceDraw_ = true; }
|
|||
|
// ǿ<><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
virtual void ForceColor(void) { forceColors_ = true; }
|
|||
|
// ǿ<><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>ʽ
|
|||
|
virtual void ForceDrawStyle(void) { forceDrawStyle_ = true; }
|
|||
|
|
|||
|
|
|||
|
|
|||
|
private:
|
|||
|
ElectricWave* electricWave_;
|
|||
|
osg::Drawable* drawable_;
|
|||
|
bool create_;
|
|||
|
osg::Vec4Array* colorArray_;
|
|||
|
bool wireframe_;
|
|||
|
bool forceDraw_;
|
|||
|
bool forceColors_;
|
|||
|
bool forceDrawStyle_;
|
|||
|
|
|||
|
bool state_;
|
|||
|
bool in_;
|
|||
|
};
|