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);
|
|
// 获得渲染体
|
|
virtual void GetDrawable(osg::Geode* pGeode);
|
|
// 设置颜色数组
|
|
virtual void SetColorArray(const osg::Vec4Array* pColorArray);
|
|
// 获得颜色数组
|
|
virtual const osg::Vec4Array* GetColorArray( void) const { return (colorArray_); }
|
|
// 设置渲染模式
|
|
virtual inline void SetWireframe(bool bWireframe) { wireframe_ = bWireframe;}
|
|
inline bool GetWireframe(void) const { return (wireframe_); }
|
|
// 获得渲染体
|
|
virtual osg::Drawable* GetDrawable(void);
|
|
// 更新
|
|
virtual void UpdataDrawable(void);
|
|
|
|
// 是否为内部渲染
|
|
void EnableIn(bool bIn) { in_ = bIn; }
|
|
// 获得是否为内部渲染
|
|
bool IsEnableIn(void) const { return (in_); }
|
|
|
|
public:
|
|
// 显示开关
|
|
virtual void SetState(bool bOpened);
|
|
// 获得开关状态
|
|
virtual bool GetState(void) const { return (state_); }
|
|
|
|
|
|
protected:
|
|
// 设置渲染体
|
|
virtual void AddDrawable(osg::Drawable* pDrawable);
|
|
// 创建渲染体
|
|
virtual osg::Drawable* CreateDrawable(void);
|
|
|
|
// 获得顶点法线
|
|
virtual void SetNormal(osg::Geometry* pDrawable);
|
|
// 颜色绑定形式
|
|
virtual osg::Geometry::AttributeBinding GetColorBinding(void);
|
|
// 获得颜色
|
|
virtual osg::Vec4Array* GetColorArrays(void) ;
|
|
// 设置属性
|
|
virtual void SetStateSet(osg::StateSet* pStateSet) ;
|
|
// 获得顶点数组
|
|
virtual osg::Vec3dArray* GetVertexArrays(void) = 0;
|
|
// 获得渲染体
|
|
//virtual osg::PrimitiveSet* GetPrimitiveSet(int nStart, int nCount) = 0;
|
|
virtual void CreatePrimitiveSet(osg::Geometry* pGeometry, int nStart, int nCount) = 0;
|
|
|
|
// 强制重绘数据
|
|
virtual void ForceDraw(void) { forceDraw_ = true; }
|
|
// 强制重新设置颜色
|
|
virtual void ForceColor(void) { forceColors_ = true; }
|
|
// 强制重新设置渲染方式
|
|
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_;
|
|
};
|