DYTSrouce/src/effects/DrawDecorate.h

83 lines
2.1 KiB
C
Raw Normal View History

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