You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.4 KiB
C

1 month ago
#pragma once
#include "XJOSGObject.h"
#include "XJObjectManager/OMPeriodicLattice.h"
#include <osg/Geometry>
#include <osgFX/Effect>
class COSGPeriodicLattice : public CXJOSGObject
{
public:
enum {
MeshNode = 0,
IsopletheNode,
FaultNode,
WellNode,
BoundaryNode,
VertexNode
};
COSGPeriodicLattice();
virtual ~COSGPeriodicLattice();
COSGPeriodicLattice(CXJObject * pobj);
virtual int SetValue(CXJObject *obj);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
osg::Geode* CreateObject();
protected:
virtual void UpdatePosition();
virtual void UpdateColor();
void UpdateColor2();
virtual void UpdateWireframe();
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɼ<EFBFBD>
virtual void UpdateVisible();
//<2F><><EFBFBD>µ<EFBFBD>ֵ<EFBFBD><D6B5>
virtual void UpdateIsopleth();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void UpdateMeshPoint();
//<2F><><EFBFBD>¾<EFBFBD><C2BE><EFBFBD>
virtual void UpdateWell();
//<2F><><EFBFBD>ϲ<C2B6>
virtual void UpdateFault();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
osg::Group* CreateMesh();
osg::Group* CreateMesh2();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
osg::Group* CreateIsoplethes();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>
osg::Group* CreateFaults();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
osg::Group* CreateControlPoints();
//<2F><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>
osg::Group* CreateBoundarys();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
osg::Group* CreateOtherLines();
private:
osg::Drawable* InsertText(const osg::Vec3& pos, const osg::Vec3& dir, float value);
void InsertPlines(osg::Geode* geode, float zval, bool isMark, std::vector<Polyline2d>& plineData);
//<2F><><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><EFBFBD><EFBFBD>ֵ
void UpdateControlPoints();
private:
OMPeriodicLattice *m_obj;
osg::ref_ptr<osg::Switch> m_pLaySwith;
};