|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include <osg/Geode>
|
|
|
|
|
|
#include <osg/Group>
|
|
|
|
|
|
#include <osg/Switch>
|
|
|
|
|
|
#include <osgGA/GUIEventAdapter>
|
|
|
|
|
|
#include <osgGA/GUIActionAdapter>
|
|
|
|
|
|
#include "../Assist/XJOSGCommon.h"
|
|
|
|
|
|
#include "XJObjectManager/XJObject.h"
|
|
|
|
|
|
#include "ViewCommon.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ģ<>͵<EFBFBD>ά<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>ά
|
|
|
|
|
|
enum ModelDimension {MODEL_2D, MODEL_3D};
|
|
|
|
|
|
|
|
|
|
|
|
class CXJOSGObject : public /*osg::Group*/osg::Geode
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
enum {OSG_BASE_KEY = 10000};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|
|
|
|
|
CXJOSGObject();
|
|
|
|
|
|
CXJOSGObject(CXJObject * pobj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>鹹<EFBFBD><E9B9B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual ~CXJOSGObject();
|
|
|
|
|
|
|
|
|
|
|
|
/***************<2A>麯<EFBFBD><E9BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>д********************/
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual osg::Geode* CreateObject() = 0;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual int Update(EOSGUpdateType updateType = UPDATE_ALL);
|
|
|
|
|
|
virtual int SetValue(CXJObject *obj);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
void SetColor(const osg::Vec4& color){m_color = color;}
|
|
|
|
|
|
osg::Vec4& GetColor(){return m_color;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
void SetPreColor(const osg::Vec4& color){m_preColor = color;}
|
|
|
|
|
|
osg::Vec4& GetPreColor(){return m_preColor;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
void SetHilightColor(const osg::Vec4& color) {m_hilightColor = color;}
|
|
|
|
|
|
osg::Vec4 GetHilightColor() {return m_hilightColor;}
|
|
|
|
|
|
|
|
|
|
|
|
int GetKey(){return m_3dKey;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetType(EXJObjectType type){m_type = type;}
|
|
|
|
|
|
EXJObjectType GetType(){return m_type;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ״̬
|
|
|
|
|
|
void SetVisible(bool visible)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_pObject)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pObject->SetVisibility(visible);
|
|
|
|
|
|
m_visible = visible;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GetVisible(){return m_visible;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
|
|
|
|
|
void SetTransparencyLevel(float translevel);
|
|
|
|
|
|
float GetTransparencyLevel() {return m_color[3];}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTransparency(bool transparent)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_pObject)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pObject->SetTransparent(transparent);
|
|
|
|
|
|
m_transparent = transparent;
|
|
|
|
|
|
m_nTransparent = m_pObject->GetTransparentDegree();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (transparent)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_color[3] = m_nTransparent;
|
|
|
|
|
|
m_hilightColor[3] = m_nTransparent;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
m_color[3] = 1.0;
|
|
|
|
|
|
m_hilightColor[3] = 1.0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>״̬
|
|
|
|
|
|
bool GetTransparencyStatus();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>ʾ״̬
|
|
|
|
|
|
void SetWireframe(bool wireframe)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(m_pObject)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pObject->SetWireframe(wireframe);
|
|
|
|
|
|
m_wireframe = wireframe;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool GetWireframe(){return m_wireframe;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>״̬<D7B4><CCAC>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false
|
|
|
|
|
|
bool GetHilightStatus() const {return m_bHiLightStatus;}
|
|
|
|
|
|
void SetHilightStatus(bool _status) {m_bHiLightStatus = _status;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SetSwitchParent(osg::Switch *parent){m_switch = parent;}
|
|
|
|
|
|
osg::Switch* GetSwitchParent() {return m_switch;}
|
|
|
|
|
|
|
|
|
|
|
|
void SetMatrixTransformParent(osg::MatrixTransform *parent){m_mt = parent;}
|
|
|
|
|
|
osg::MatrixTransform* GetMatrixTransformParent() {return m_mt;}
|
|
|
|
|
|
|
|
|
|
|
|
void SetRoot(osg::Group *root){m_root = root;}
|
|
|
|
|
|
osg::Group* GetRoot() {return m_root;}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD>ά<EFBFBD><CEAC>
|
|
|
|
|
|
ModelDimension GetModelDimesion() {return m_2Dor3D;}
|
|
|
|
|
|
|
|
|
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void DeleteTempOSGObject() {}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CXJObject* GetOmObject() const {return m_pObject;}
|
|
|
|
|
|
void SetOmObject(CXJObject* pObj) {m_pObject = pObj;}
|
|
|
|
|
|
/*******************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>************************/
|
|
|
|
|
|
virtual bool selectedAndMove(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa ) {return true;}
|
|
|
|
|
|
|
|
|
|
|
|
//Hilight selected obj with color
|
|
|
|
|
|
void HilightWithColor(osg::Vec4& color = osg::Vec4(0.7, 0.0, 0.0, 1.0));
|
|
|
|
|
|
|
|
|
|
|
|
//unlight selected color;
|
|
|
|
|
|
void UnHilight();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void HilightWithShowSize() {}
|
|
|
|
|
|
virtual void UnHlightWithShowSize() {}
|
|
|
|
|
|
|
|
|
|
|
|
void SetHilightIdx(unsigned idx) { m_hilightIdx = idx; }
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void UpdatePosition();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void UpdateColor();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>
|
|
|
|
|
|
virtual void UpdateWireframe();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>µ<EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
virtual void UpdateIsopleth();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void UpdateVisible();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void UpdateMeshPoint();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void UpdateWell();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void UpdateFault();
|
|
|
|
|
|
private:
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3dKey
|
|
|
|
|
|
int Generate3DKey();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
//ÿ<><C3BF>CXJOSGObj<62><6A><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>CXJObject*
|
|
|
|
|
|
CXJObject* m_pObject;
|
|
|
|
|
|
|
|
|
|
|
|
osg::Group* m_root;
|
|
|
|
|
|
osg::Switch* m_switch;
|
|
|
|
|
|
osg::MatrixTransform* m_mt;
|
|
|
|
|
|
|
|
|
|
|
|
int m_3dKey;
|
|
|
|
|
|
|
|
|
|
|
|
//ģ<>͵<EFBFBD>ά<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>2ά<32><CEAC><EFBFBD><EFBFBD>3ά<33><CEAC>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>3ά
|
|
|
|
|
|
ModelDimension m_2Dor3D;
|
|
|
|
|
|
|
|
|
|
|
|
EXJObjectType m_type;
|
|
|
|
|
|
|
|
|
|
|
|
//m_colorΪ<72><CEAA>ǰ<EFBFBD><C7B0>ɫ<EFBFBD><C9AB>m_preColorΪ<72><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
osg::Vec4 m_color;
|
|
|
|
|
|
osg::Vec4 m_preColor;
|
|
|
|
|
|
|
|
|
|
|
|
osg::Vec4 m_hilightColor;
|
|
|
|
|
|
bool m_bHiLightStatus; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>Ĭ<EFBFBD><C4AC>Ϊfalse
|
|
|
|
|
|
|
|
|
|
|
|
//bool m_bSelected;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_visible;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_wireframe;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_transparent;
|
|
|
|
|
|
|
|
|
|
|
|
float m_nTransparent;
|
|
|
|
|
|
|
|
|
|
|
|
EDisplayModel m_displayModel;
|
|
|
|
|
|
|
|
|
|
|
|
unsigned int m_hilightIdx;
|
|
|
|
|
|
};
|