#ifndef XJ_COMPOSITE_OSG_VIEW_H #define XJ_COMPOSITE_OSG_VIEW_H #include "dllExport.h" #include "Common.h" #include "XJObjectManager/XJObject.h" #include class XJOSGVIEWEXPORT CXJCompositeOSGView { public: CXJCompositeOSGView(); virtual ~CXJCompositeOSGView(); void AddOSGView(int index,void* hwnd); static void Render(void* ptr); //static void Render(); //根据传入的对象指针,来创建并更新视图对象,默认为更新对象的所有属性 int UpdateObjectView(int index,CXJObject* obj, EOSGUpdateType updateType = UPDATE_ALL); //将网格截骨,并显示出截骨后的封闭面 void ClipPlaneList(int index, CXJObject *pobj, std::vector Planes, bool IsClosed = true); void StopClipPlane(int index, CXJObject *pobj); //用平面将网格显示成两部分,两部分用不同颜色显示 void SplitObjectByClipPlane(int index, CXJObject *obj, vector Planes, int clipIndex); void StopSplitObject(int index, CXJObject *obj); //读取可执行文件路径 void SetModeulePath(std::string a_exePath) {m_exePath = a_exePath;} //设置投影视图(左、右视图等三视图) void SetProjView(int index,XJViewType viewType); //自适应视图显示 void ZoomView(int index); //对象的旋转操作 void RotateObject(int index, CXJObject* obj, Point3D basePt, Point3D rotateDir, float angle); //对象变换,不连续变换,只变换一次,绕着基点,从一个轴变换到另一个轴 void TransformObjectOnce(int index, CXJObject* obj, Point3D originPt, Point3D oriVec, Point3D destVec); void GetObjectMatrix(int index, CXJObject* obj, Matrix4& matrix) const; //删除所有的osg对象 void DeleteAllOSGObjects(int index); //设置视图三个角上的Text, displayPos为显示文字位置 //0---左上角显示, 1--右上角显示, 2--左下角显示 void setHUDText(int index, wchar_t* str, HUDTextWinPos displayPos = WINDOW_LEFT_TOP_POS, AlignmentType alighment = BASE_LINE_ALIGNMENT); //设置text的属性值,包括大小,颜色,字体等 void setHUDTextProperties(int index, float textSize, COLORREF textColor, std::string& font); private: void* m_CompositeViewer; void* m_graphicContext; std::vector m_osgInternals; std::string m_exePath; }; #endif