DYTSrouce/src/viewer/OsgViewer.h

58 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;
2025-03-13 00:42:41 +00:00
void SetViewer(osgViewer::CompositeViewer* viewer) {
compositeViewer_ = viewer;
}
2025-01-04 04:12:51 +00:00
void OnDestory();
void OnFrame(void);
2025-03-13 00:42:41 +00:00
2025-01-04 04:12:51 +00:00
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:
2025-03-13 00:42:41 +00:00
osgViewer::CompositeViewer* compositeViewer_;
2025-01-04 04:12:51 +00:00
bool initalized_{ false };
using OsgViewSet = std::set<OsgView*>;
OsgViewSet osgViews_;
using UpdateRenderList = std::vector<IUpdateRender*>;
UpdateRenderList updateRenderList_;
};