DYTSrouce/src/viewer/OsgViewer.h

55 lines
1.2 KiB
C
Raw Normal View History

2025-01-04 04:12:51 +00:00
#pragma once
#include <set>
#include <QObject>
#include <osgViewer/CompositeViewer>
#include <osgViewer/GraphicsWindow>
#include "app/Singleton.h"
class OsgView;
class IUpdateRender;
class OsgViewer : public QObject, public Singleton<OsgViewer> {
Q_OBJECT
public:
explicit OsgViewer(QObject* parent = nullptr) noexcept;
~OsgViewer() override;
void OnDestory();
void OnFrame(void);
class OsgView* CreateView(int x, int y, int width, int height, void* winHandle);
void DestroyView(OsgView* view);
bool IsDone(void) const;
OsgView* GetView() const;
bool Initialize(void);
void Uninitialize(void);
void RegistRender(IUpdateRender* render);
void UnRegistRender(IUpdateRender* render);
protected:
void customEvent(QEvent* event) override;
void OnStartPlay();
void OnAddView(OsgView* view, int x, int y, int width, int height);
void OnRemoveView(OsgView* view);
void RenderUpdate();
private:
osg::ref_ptr<osgViewer::CompositeViewer> compositeViewer_;
bool initalized_{ false };
using OsgViewSet = std::set<OsgView*>;
OsgViewSet osgViews_;
using UpdateRenderList = std::vector<IUpdateRender*>;
UpdateRenderList updateRenderList_;
};