mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 11:58:10 +02:00
Merge pull request #6799 from ZappoMan/menuGroups
add support for advanced/developer plugins and change diplay modes to…
This commit is contained in:
commit
e07753b66f
23 changed files with 74 additions and 50 deletions
|
@ -5062,8 +5062,23 @@ const DisplayPlugin* Application::getActiveDisplayPlugin() const {
|
||||||
static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool active = false) {
|
static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool active = false) {
|
||||||
auto menu = Menu::getInstance();
|
auto menu = Menu::getInstance();
|
||||||
QString name = displayPlugin->getName();
|
QString name = displayPlugin->getName();
|
||||||
|
auto grouping = displayPlugin->getGrouping();
|
||||||
|
QString groupingMenu { "" };
|
||||||
Q_ASSERT(!menu->menuItemExists(MenuOption::OutputMenu, name));
|
Q_ASSERT(!menu->menuItemExists(MenuOption::OutputMenu, name));
|
||||||
|
|
||||||
|
// assign the meny grouping based on plugin grouping
|
||||||
|
switch (grouping) {
|
||||||
|
case Plugin::ADVANCED:
|
||||||
|
groupingMenu = "Advanced";
|
||||||
|
break;
|
||||||
|
case Plugin::DEVELOPER:
|
||||||
|
groupingMenu = "Developer";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
groupingMenu = "Standard";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
static QActionGroup* displayPluginGroup = nullptr;
|
static QActionGroup* displayPluginGroup = nullptr;
|
||||||
if (!displayPluginGroup) {
|
if (!displayPluginGroup) {
|
||||||
displayPluginGroup = new QActionGroup(menu);
|
displayPluginGroup = new QActionGroup(menu);
|
||||||
|
@ -5072,7 +5087,9 @@ static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool acti
|
||||||
auto parent = menu->getMenu(MenuOption::OutputMenu);
|
auto parent = menu->getMenu(MenuOption::OutputMenu);
|
||||||
auto action = menu->addActionToQMenuAndActionHash(parent,
|
auto action = menu->addActionToQMenuAndActionHash(parent,
|
||||||
name, 0, qApp,
|
name, 0, qApp,
|
||||||
SLOT(updateDisplayMode()));
|
SLOT(updateDisplayMode()),
|
||||||
|
QAction::NoRole, UNSPECIFIED_POSITION, groupingMenu);
|
||||||
|
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
action->setChecked(active);
|
action->setChecked(active);
|
||||||
displayPluginGroup->addAction(action);
|
displayPluginGroup->addAction(action);
|
||||||
|
@ -5086,7 +5103,31 @@ void Application::updateDisplayMode() {
|
||||||
static std::once_flag once;
|
static std::once_flag once;
|
||||||
std::call_once(once, [&] {
|
std::call_once(once, [&] {
|
||||||
bool first = true;
|
bool first = true;
|
||||||
|
|
||||||
|
// first sort the plugins into groupings: standard, advanced, developer
|
||||||
|
DisplayPluginList standard;
|
||||||
|
DisplayPluginList advanced;
|
||||||
|
DisplayPluginList developer;
|
||||||
foreach(auto displayPlugin, displayPlugins) {
|
foreach(auto displayPlugin, displayPlugins) {
|
||||||
|
auto grouping = displayPlugin->getGrouping();
|
||||||
|
switch (grouping) {
|
||||||
|
case Plugin::ADVANCED:
|
||||||
|
advanced.push_back(displayPlugin);
|
||||||
|
break;
|
||||||
|
case Plugin::DEVELOPER:
|
||||||
|
developer.push_back(displayPlugin);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
standard.push_back(displayPlugin);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// concactonate the groupings into a single list in the order: standard, advanced, developer
|
||||||
|
standard.insert(std::end(standard), std::begin(advanced), std::end(advanced));
|
||||||
|
standard.insert(std::end(standard), std::begin(developer), std::end(developer));
|
||||||
|
|
||||||
|
foreach(auto displayPlugin, standard) {
|
||||||
addDisplayPluginToMenu(displayPlugin, first);
|
addDisplayPluginToMenu(displayPlugin, first);
|
||||||
// This must be a queued connection to avoid a deadlock
|
// This must be a queued connection to avoid a deadlock
|
||||||
QObject::connect(displayPlugin.get(), &DisplayPlugin::requestRender,
|
QObject::connect(displayPlugin.get(), &DisplayPlugin::requestRender,
|
||||||
|
@ -5098,6 +5139,11 @@ void Application::updateDisplayMode() {
|
||||||
|
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// after all plugins have been added to the menu, add a seperator to the menu
|
||||||
|
auto menu = Menu::getInstance();
|
||||||
|
auto parent = menu->getMenu(MenuOption::OutputMenu);
|
||||||
|
parent->addSeparator();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -243,7 +243,7 @@ namespace MenuOption {
|
||||||
const QString OctreeStats = "Entity Statistics";
|
const QString OctreeStats = "Entity Statistics";
|
||||||
const QString OnePointCalibration = "1 Point Calibration";
|
const QString OnePointCalibration = "1 Point Calibration";
|
||||||
const QString OnlyDisplayTopTen = "Only Display Top Ten";
|
const QString OnlyDisplayTopTen = "Only Display Top Ten";
|
||||||
const QString OutputMenu = "Display>Mode";
|
const QString OutputMenu = "Display";
|
||||||
const QString PackageModel = "Package Model...";
|
const QString PackageModel = "Package Model...";
|
||||||
const QString Pair = "Pair";
|
const QString Pair = "Pair";
|
||||||
const QString PhysicsShowOwned = "Highlight Simulation Ownership";
|
const QString PhysicsShowOwned = "Highlight Simulation Ownership";
|
||||||
|
|
|
@ -15,14 +15,10 @@
|
||||||
|
|
||||||
#include <plugins/PluginContainer.h>
|
#include <plugins/PluginContainer.h>
|
||||||
|
|
||||||
const QString Basic2DWindowOpenGLDisplayPlugin::NAME("2D Display");
|
const QString Basic2DWindowOpenGLDisplayPlugin::NAME("Desktop");
|
||||||
|
|
||||||
static const QString FULLSCREEN = "Fullscreen";
|
static const QString FULLSCREEN = "Fullscreen";
|
||||||
|
|
||||||
const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Basic2DWindowOpenGLDisplayPlugin::activate() {
|
void Basic2DWindowOpenGLDisplayPlugin::activate() {
|
||||||
WindowOpenGLDisplayPlugin::activate();
|
WindowOpenGLDisplayPlugin::activate();
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Basic2DWindowOpenGLDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
|
||||||
virtual float getTargetFrameRate() override { return _framerateTarget ? (float) _framerateTarget : TARGET_FRAMERATE_Basic2DWindowOpenGL; }
|
virtual float getTargetFrameRate() override { return _framerateTarget ? (float) _framerateTarget : TARGET_FRAMERATE_Basic2DWindowOpenGL; }
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,6 @@
|
||||||
|
|
||||||
const QString NullDisplayPlugin::NAME("NullDisplayPlugin");
|
const QString NullDisplayPlugin::NAME("NullDisplayPlugin");
|
||||||
|
|
||||||
const QString & NullDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
glm::uvec2 NullDisplayPlugin::getRecommendedRenderSize() const {
|
glm::uvec2 NullDisplayPlugin::getRecommendedRenderSize() const {
|
||||||
return glm::uvec2(100, 100);
|
return glm::uvec2(100, 100);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@ class NullDisplayPlugin : public DisplayPlugin {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual ~NullDisplayPlugin() final {}
|
virtual ~NullDisplayPlugin() final {}
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
virtual grouping getGrouping() const override { return DEVELOPER; }
|
||||||
|
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,7 @@ void main() {
|
||||||
|
|
||||||
)FS";
|
)FS";
|
||||||
|
|
||||||
const QString InterleavedStereoDisplayPlugin::NAME("Interleaved Stereo Display");
|
const QString InterleavedStereoDisplayPlugin::NAME("3D TV - Interleaved");
|
||||||
|
|
||||||
const QString & InterleavedStereoDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
InterleavedStereoDisplayPlugin::InterleavedStereoDisplayPlugin() {
|
InterleavedStereoDisplayPlugin::InterleavedStereoDisplayPlugin() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,9 @@ class InterleavedStereoDisplayPlugin : public StereoDisplayPlugin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
InterleavedStereoDisplayPlugin();
|
InterleavedStereoDisplayPlugin();
|
||||||
virtual const QString & getName() const override;
|
|
||||||
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
virtual grouping getGrouping() const override { return ADVANCED; }
|
||||||
|
|
||||||
// initialize OpenGL context settings needed by the plugin
|
// initialize OpenGL context settings needed by the plugin
|
||||||
virtual void customizeContext() override;
|
virtual void customizeContext() override;
|
||||||
|
|
|
@ -11,10 +11,6 @@
|
||||||
|
|
||||||
const QString SideBySideStereoDisplayPlugin::NAME("3D TV - Side by Side Stereo");
|
const QString SideBySideStereoDisplayPlugin::NAME("3D TV - Side by Side Stereo");
|
||||||
|
|
||||||
const QString & SideBySideStereoDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
SideBySideStereoDisplayPlugin::SideBySideStereoDisplayPlugin() {
|
SideBySideStereoDisplayPlugin::SideBySideStereoDisplayPlugin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,8 @@ class SideBySideStereoDisplayPlugin : public StereoDisplayPlugin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SideBySideStereoDisplayPlugin();
|
SideBySideStereoDisplayPlugin();
|
||||||
virtual const QString& getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
virtual grouping getGrouping() const override { return ADVANCED; }
|
||||||
virtual glm::uvec2 getRecommendedRenderSize() const override;
|
virtual glm::uvec2 getRecommendedRenderSize() const override;
|
||||||
private:
|
private:
|
||||||
static const QString NAME;
|
static const QString NAME;
|
||||||
|
|
|
@ -67,7 +67,7 @@ public:
|
||||||
// Plugin functions
|
// Plugin functions
|
||||||
virtual bool isSupported() const override { return true; }
|
virtual bool isSupported() const override { return true; }
|
||||||
virtual bool isJointController() const override { return false; }
|
virtual bool isJointController() const override { return false; }
|
||||||
const QString& getName() const override { return NAME; }
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
|
||||||
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }
|
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }
|
||||||
virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override;
|
virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override;
|
||||||
|
|
|
@ -19,6 +19,11 @@ public:
|
||||||
/// \return human-readable name
|
/// \return human-readable name
|
||||||
virtual const QString& getName() const = 0;
|
virtual const QString& getName() const = 0;
|
||||||
|
|
||||||
|
typedef enum { STANDARD, ADVANCED, DEVELOPER } grouping;
|
||||||
|
|
||||||
|
/// \return human-readable grouping for the plugin, STANDARD, ADVANCED, or DEVELOPER
|
||||||
|
virtual grouping getGrouping() const { return STANDARD; }
|
||||||
|
|
||||||
/// \return string ID (not necessarily human-readable)
|
/// \return string ID (not necessarily human-readable)
|
||||||
virtual const QString& getID() const { assert(false); return UNKNOWN_PLUGIN_ID; }
|
virtual const QString& getID() const { assert(false); return UNKNOWN_PLUGIN_ID; }
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public:
|
||||||
// Plugin functions
|
// Plugin functions
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
virtual bool isJointController() const override { return true; }
|
virtual bool isJointController() const override { return true; }
|
||||||
const QString& getName() const override { return NAME; }
|
virtual const QString& getName() const override { return NAME; }
|
||||||
const QString& getID() const override { return NEURON_ID_STRING; }
|
const QString& getID() const override { return NEURON_ID_STRING; }
|
||||||
|
|
||||||
virtual void activate() override;
|
virtual void activate() override;
|
||||||
|
|
|
@ -29,7 +29,7 @@ public:
|
||||||
// Plugin functions
|
// Plugin functions
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
virtual bool isJointController() const override { return false; }
|
virtual bool isJointController() const override { return false; }
|
||||||
const QString& getName() const override { return NAME; }
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
|
||||||
virtual void init() override;
|
virtual void init() override;
|
||||||
virtual void deinit() override;
|
virtual void deinit() override;
|
||||||
|
|
|
@ -29,8 +29,8 @@ public:
|
||||||
// Plugin functions
|
// Plugin functions
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
virtual bool isJointController() const override { return true; }
|
virtual bool isJointController() const override { return true; }
|
||||||
const QString& getName() const override { return NAME; }
|
virtual const QString& getName() const override { return NAME; }
|
||||||
const QString& getID() const override { return HYDRA_ID_STRING; }
|
virtual const QString& getID() const override { return HYDRA_ID_STRING; }
|
||||||
|
|
||||||
virtual void activate() override;
|
virtual void activate() override;
|
||||||
virtual void deactivate() override;
|
virtual void deactivate() override;
|
||||||
|
|
|
@ -10,10 +10,6 @@
|
||||||
|
|
||||||
const QString OculusDebugDisplayPlugin::NAME("Oculus Rift (Simulator)");
|
const QString OculusDebugDisplayPlugin::NAME("Oculus Rift (Simulator)");
|
||||||
|
|
||||||
const QString & OculusDebugDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const QString DEBUG_FLAG("HIFI_DEBUG_OCULUS");
|
static const QString DEBUG_FLAG("HIFI_DEBUG_OCULUS");
|
||||||
static bool enableDebugOculus = QProcessEnvironment::systemEnvironment().contains("HIFI_DEBUG_OCULUS");
|
static bool enableDebugOculus = QProcessEnvironment::systemEnvironment().contains("HIFI_DEBUG_OCULUS");
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
|
|
||||||
class OculusDebugDisplayPlugin : public OculusBaseDisplayPlugin {
|
class OculusDebugDisplayPlugin : public OculusBaseDisplayPlugin {
|
||||||
public:
|
public:
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
virtual grouping getGrouping() const override { return DEVELOPER; }
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -138,10 +138,6 @@ private:
|
||||||
|
|
||||||
const QString OculusDisplayPlugin::NAME("Oculus Rift");
|
const QString OculusDisplayPlugin::NAME("Oculus Rift");
|
||||||
|
|
||||||
const QString & OculusDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const QString MONO_PREVIEW = "Mono Preview";
|
static const QString MONO_PREVIEW = "Mono Preview";
|
||||||
static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate";
|
static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate";
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ const float TARGET_RATE_Oculus = 75.0f;
|
||||||
class OculusDisplayPlugin : public OculusBaseDisplayPlugin {
|
class OculusDisplayPlugin : public OculusBaseDisplayPlugin {
|
||||||
public:
|
public:
|
||||||
virtual void activate() override;
|
virtual void activate() override;
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
virtual void setEyeRenderPose(uint32_t frameIndex, Eye eye, const glm::mat4& pose) override final;
|
virtual void setEyeRenderPose(uint32_t frameIndex, Eye eye, const glm::mat4& pose) override final;
|
||||||
|
|
||||||
virtual float getTargetFrameRate() override { return TARGET_RATE_Oculus; }
|
virtual float getTargetFrameRate() override { return TARGET_RATE_Oculus; }
|
||||||
|
|
|
@ -26,11 +26,7 @@
|
||||||
|
|
||||||
using namespace oglplus;
|
using namespace oglplus;
|
||||||
|
|
||||||
const QString OculusLegacyDisplayPlugin::NAME("Oculus Rift (0.5) (Simulated)");
|
const QString OculusLegacyDisplayPlugin::NAME("Oculus Rift (0.5) (Legacy)");
|
||||||
|
|
||||||
const QString & OculusLegacyDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
OculusLegacyDisplayPlugin::OculusLegacyDisplayPlugin() {
|
OculusLegacyDisplayPlugin::OculusLegacyDisplayPlugin() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ class OculusLegacyDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
||||||
public:
|
public:
|
||||||
OculusLegacyDisplayPlugin();
|
OculusLegacyDisplayPlugin();
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
|
|
||||||
virtual void activate() override;
|
virtual void activate() override;
|
||||||
virtual void deactivate() override;
|
virtual void deactivate() override;
|
||||||
|
|
|
@ -31,10 +31,6 @@ const QString OpenVrDisplayPlugin::NAME("OpenVR (Vive)");
|
||||||
|
|
||||||
const QString StandingHMDSensorMode = "Standing HMD Sensor Mode"; // this probably shouldn't be hardcoded here
|
const QString StandingHMDSensorMode = "Standing HMD Sensor Mode"; // this probably shouldn't be hardcoded here
|
||||||
|
|
||||||
const QString & OpenVrDisplayPlugin::getName() const {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
static vr::IVRCompositor* _compositor{ nullptr };
|
static vr::IVRCompositor* _compositor{ nullptr };
|
||||||
vr::TrackedDevicePose_t _trackedDevicePose[vr::k_unMaxTrackedDeviceCount];
|
vr::TrackedDevicePose_t _trackedDevicePose[vr::k_unMaxTrackedDeviceCount];
|
||||||
mat4 _trackedDevicePoseMat4[vr::k_unMaxTrackedDeviceCount];
|
mat4 _trackedDevicePoseMat4[vr::k_unMaxTrackedDeviceCount];
|
||||||
|
|
|
@ -18,7 +18,7 @@ const float TARGET_RATE_OpenVr = 90.0f; // FIXME: get from sdk tracked device p
|
||||||
class OpenVrDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
class OpenVrDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
||||||
public:
|
public:
|
||||||
virtual bool isSupported() const override;
|
virtual bool isSupported() const override;
|
||||||
virtual const QString & getName() const override;
|
virtual const QString& getName() const override { return NAME; }
|
||||||
virtual bool isHmd() const override { return true; }
|
virtual bool isHmd() const override { return true; }
|
||||||
|
|
||||||
virtual float getTargetFrameRate() override { return TARGET_RATE_OpenVr; }
|
virtual float getTargetFrameRate() override { return TARGET_RATE_OpenVr; }
|
||||||
|
|
Loading…
Reference in a new issue