mirror of
https://github.com/overte-org/overte.git
synced 2025-04-12 17:22:09 +02:00
add support for advanced/developer plugins and change diplay modes to match spec
This commit is contained in:
parent
1131222472
commit
e2a3903def
25 changed files with 79 additions and 38 deletions
|
@ -5062,6 +5062,7 @@ const DisplayPlugin* Application::getActiveDisplayPlugin() const {
|
|||
static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool active = false) {
|
||||
auto menu = Menu::getInstance();
|
||||
QString name = displayPlugin->getName();
|
||||
QString grouping = displayPlugin->getGrouping();
|
||||
Q_ASSERT(!menu->menuItemExists(MenuOption::OutputMenu, name));
|
||||
|
||||
static QActionGroup* displayPluginGroup = nullptr;
|
||||
|
@ -5072,7 +5073,8 @@ static void addDisplayPluginToMenu(DisplayPluginPointer displayPlugin, bool acti
|
|||
auto parent = menu->getMenu(MenuOption::OutputMenu);
|
||||
auto action = menu->addActionToQMenuAndActionHash(parent,
|
||||
name, 0, qApp,
|
||||
SLOT(updateDisplayMode()));
|
||||
SLOT(updateDisplayMode()),
|
||||
QAction::NoRole, UNSPECIFIED_POSITION, grouping);
|
||||
action->setCheckable(true);
|
||||
action->setChecked(active);
|
||||
displayPluginGroup->addAction(action);
|
||||
|
@ -5086,7 +5088,27 @@ void Application::updateDisplayMode() {
|
|||
static std::once_flag once;
|
||||
std::call_once(once, [&] {
|
||||
bool first = true;
|
||||
|
||||
// first sort the plugins into groupings: standard, advanced, developer
|
||||
DisplayPluginList standard;
|
||||
DisplayPluginList advanced;
|
||||
DisplayPluginList developer;
|
||||
foreach(auto displayPlugin, displayPlugins) {
|
||||
QString grouping = displayPlugin->getGrouping();
|
||||
if (grouping == "Advanced") {
|
||||
advanced.push_back(displayPlugin);
|
||||
} else if (grouping == "Developer") {
|
||||
developer.push_back(displayPlugin);
|
||||
} else {
|
||||
standard.push_back(displayPlugin);
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
// This must be a queued connection to avoid a deadlock
|
||||
QObject::connect(displayPlugin.get(), &DisplayPlugin::requestRender,
|
||||
|
@ -5098,6 +5120,11 @@ void Application::updateDisplayMode() {
|
|||
|
||||
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 OnePointCalibration = "1 Point Calibration";
|
||||
const QString OnlyDisplayTopTen = "Only Display Top Ten";
|
||||
const QString OutputMenu = "Display>Mode";
|
||||
const QString OutputMenu = "Display";
|
||||
const QString PackageModel = "Package Model...";
|
||||
const QString Pair = "Pair";
|
||||
const QString PhysicsShowOwned = "Highlight Simulation Ownership";
|
||||
|
|
|
@ -15,14 +15,11 @@
|
|||
|
||||
#include <plugins/PluginContainer.h>
|
||||
|
||||
const QString Basic2DWindowOpenGLDisplayPlugin::NAME("2D Display");
|
||||
const QString Basic2DWindowOpenGLDisplayPlugin::NAME("Desktop");
|
||||
const QString Basic2DWindowOpenGLDisplayPlugin::GROUPING("Standard");
|
||||
|
||||
static const QString FULLSCREEN = "Fullscreen";
|
||||
|
||||
const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
}
|
||||
|
||||
void Basic2DWindowOpenGLDisplayPlugin::activate() {
|
||||
WindowOpenGLDisplayPlugin::activate();
|
||||
|
||||
|
|
|
@ -18,7 +18,8 @@ class Basic2DWindowOpenGLDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
virtual const QString & getName() const override;
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
|
||||
virtual float getTargetFrameRate() override { return _framerateTarget ? (float) _framerateTarget : TARGET_FRAMERATE_Basic2DWindowOpenGL; }
|
||||
|
||||
|
@ -37,6 +38,7 @@ protected:
|
|||
private:
|
||||
void updateFramerate();
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
QScreen* getFullscreenTarget();
|
||||
std::vector<QAction*> _framerateActions;
|
||||
QAction* _vsyncAction { nullptr };
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <plugins/PluginContainer.h>
|
||||
|
||||
const QString NullDisplayPlugin::NAME("NullDisplayPlugin");
|
||||
const QString NullDisplayPlugin::GROUPING("Developer");
|
||||
|
||||
const QString & NullDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
|
|
|
@ -24,4 +24,5 @@ public:
|
|||
virtual QImage getScreenshot() const override;
|
||||
private:
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
|
|
@ -44,11 +44,8 @@ void main() {
|
|||
|
||||
)FS";
|
||||
|
||||
const QString InterleavedStereoDisplayPlugin::NAME("Interleaved Stereo Display");
|
||||
|
||||
const QString & InterleavedStereoDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
}
|
||||
const QString InterleavedStereoDisplayPlugin::NAME("3D TV - Interleaved");
|
||||
const QString InterleavedStereoDisplayPlugin::GROUPING("Advanced");
|
||||
|
||||
InterleavedStereoDisplayPlugin::InterleavedStereoDisplayPlugin() {
|
||||
}
|
||||
|
|
|
@ -13,7 +13,9 @@ class InterleavedStereoDisplayPlugin : public StereoDisplayPlugin {
|
|||
Q_OBJECT
|
||||
public:
|
||||
InterleavedStereoDisplayPlugin();
|
||||
virtual const QString & getName() const override;
|
||||
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
|
||||
// initialize OpenGL context settings needed by the plugin
|
||||
virtual void customizeContext() override;
|
||||
|
@ -23,4 +25,5 @@ public:
|
|||
|
||||
private:
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
|
|
@ -10,10 +10,7 @@
|
|||
#include <GLMHelpers.h>
|
||||
|
||||
const QString SideBySideStereoDisplayPlugin::NAME("3D TV - Side by Side Stereo");
|
||||
|
||||
const QString & SideBySideStereoDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
}
|
||||
const QString SideBySideStereoDisplayPlugin::GROUPING("Advanced");
|
||||
|
||||
SideBySideStereoDisplayPlugin::SideBySideStereoDisplayPlugin() {
|
||||
}
|
||||
|
|
|
@ -15,8 +15,10 @@ class SideBySideStereoDisplayPlugin : public StereoDisplayPlugin {
|
|||
Q_OBJECT
|
||||
public:
|
||||
SideBySideStereoDisplayPlugin();
|
||||
virtual const QString& getName() const override;
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
virtual glm::uvec2 getRecommendedRenderSize() const override;
|
||||
private:
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <NumericalConstants.h>
|
||||
|
||||
const QString KeyboardMouseDevice::NAME = "Keyboard/Mouse";
|
||||
const QString KeyboardMouseDevice::GROUPING = "Standard";
|
||||
|
||||
void KeyboardMouseDevice::pluginUpdate(float deltaTime, bool jointsCaptured) {
|
||||
_inputDevice->update(deltaTime, jointsCaptured);
|
||||
|
|
|
@ -67,7 +67,8 @@ public:
|
|||
// Plugin functions
|
||||
virtual bool isSupported() const override { return true; }
|
||||
virtual bool isJointController() const override { return false; }
|
||||
const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
|
||||
virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); }
|
||||
virtual void pluginUpdate(float deltaTime, bool jointsCaptured) override;
|
||||
|
@ -87,6 +88,7 @@ public:
|
|||
void wheelEvent(QWheelEvent* event);
|
||||
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
@ -19,6 +19,9 @@ public:
|
|||
/// \return human-readable name
|
||||
virtual const QString& getName() const = 0;
|
||||
|
||||
/// \return human-readable grouping for the plugin, Standard, Advanced, or Developer
|
||||
virtual const QString& getGrouping() const = 0;
|
||||
|
||||
/// \return string ID (not necessarily human-readable)
|
||||
virtual const QString& getID() const { assert(false); return UNKNOWN_PLUGIN_ID; }
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ Q_LOGGING_CATEGORY(inputplugins, "hifi.inputplugins")
|
|||
#endif
|
||||
|
||||
const QString NeuronPlugin::NAME = "Neuron";
|
||||
const QString NeuronPlugin::GROUPING = "Standard";
|
||||
const QString NeuronPlugin::NEURON_ID_STRING = "Perception Neuron";
|
||||
|
||||
// indices of joints of the Neuron standard skeleton.
|
||||
|
|
|
@ -28,7 +28,8 @@ public:
|
|||
// Plugin functions
|
||||
virtual bool isSupported() const override;
|
||||
virtual bool isJointController() const override { return true; }
|
||||
const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
const QString& getID() const override { return NEURON_ID_STRING; }
|
||||
|
||||
virtual void activate() override;
|
||||
|
@ -65,6 +66,7 @@ protected:
|
|||
std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>() };
|
||||
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
static const QString NEURON_ID_STRING;
|
||||
|
||||
std::string _serverAddress;
|
||||
|
|
|
@ -44,6 +44,7 @@ static_assert(
|
|||
|
||||
|
||||
const QString SDL2Manager::NAME = "SDL2";
|
||||
const QString SDL2Manager::GROUPING = "Standard";
|
||||
|
||||
#ifdef HAVE_SDL2
|
||||
SDL_JoystickID SDL2Manager::getInstanceId(SDL_GameController* controller) {
|
||||
|
|
|
@ -29,7 +29,8 @@ public:
|
|||
// Plugin functions
|
||||
virtual bool isSupported() const override;
|
||||
virtual bool isJointController() const override { return false; }
|
||||
const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
|
||||
virtual void init() override;
|
||||
virtual void deinit() override;
|
||||
|
@ -84,6 +85,7 @@ private:
|
|||
#endif
|
||||
bool _isInitialized;
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
||||
#endif // hifi__SDL2Manager_h
|
||||
|
|
|
@ -56,6 +56,7 @@ bool SixenseManager::_sixenseLoaded = false;
|
|||
|
||||
|
||||
const QString SixenseManager::NAME = "Sixense";
|
||||
const QString SixenseManager::GROUPING = "Standard";
|
||||
const QString SixenseManager::HYDRA_ID_STRING = "Razer Hydra";
|
||||
|
||||
const QString MENU_PARENT = "Developer";
|
||||
|
|
|
@ -29,8 +29,9 @@ public:
|
|||
// Plugin functions
|
||||
virtual bool isSupported() const override;
|
||||
virtual bool isJointController() const override { return true; }
|
||||
const QString& getName() const override { return NAME; }
|
||||
const QString& getID() const override { return HYDRA_ID_STRING; }
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
virtual const QString& getID() const override { return HYDRA_ID_STRING; }
|
||||
|
||||
virtual void activate() override;
|
||||
virtual void deactivate() override;
|
||||
|
@ -97,6 +98,7 @@ private:
|
|||
std::shared_ptr<InputDevice> _inputDevice { std::make_shared<InputDevice>() };
|
||||
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
static const QString HYDRA_ID_STRING;
|
||||
|
||||
static bool _sixenseLoaded;
|
||||
|
|
|
@ -9,10 +9,8 @@
|
|||
#include <QtCore/QProcessEnvironment>
|
||||
|
||||
const QString OculusDebugDisplayPlugin::NAME("Oculus Rift (Simulator)");
|
||||
const QString OculusDebugDisplayPlugin::GROUPING("Developer");
|
||||
|
||||
const QString & OculusDebugDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
}
|
||||
|
||||
static const QString DEBUG_FLAG("HIFI_DEBUG_OCULUS");
|
||||
static bool enableDebugOculus = QProcessEnvironment::systemEnvironment().contains("HIFI_DEBUG_OCULUS");
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
|
||||
class OculusDebugDisplayPlugin : public OculusBaseDisplayPlugin {
|
||||
public:
|
||||
virtual const QString & getName() const override;
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
virtual bool isSupported() const override;
|
||||
|
||||
protected:
|
||||
|
@ -19,5 +20,6 @@ protected:
|
|||
|
||||
private:
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
||||
|
|
|
@ -137,10 +137,7 @@ private:
|
|||
#endif
|
||||
|
||||
const QString OculusDisplayPlugin::NAME("Oculus Rift");
|
||||
|
||||
const QString & OculusDisplayPlugin::getName() const {
|
||||
return NAME;
|
||||
}
|
||||
const QString OculusDisplayPlugin::GROUPING("Standard");
|
||||
|
||||
static const QString MONO_PREVIEW = "Mono Preview";
|
||||
static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate";
|
||||
|
|
|
@ -17,7 +17,8 @@ const float TARGET_RATE_Oculus = 75.0f;
|
|||
class OculusDisplayPlugin : public OculusBaseDisplayPlugin {
|
||||
public:
|
||||
virtual void activate() override;
|
||||
virtual const QString & getName() const override;
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
virtual void setEyeRenderPose(uint32_t frameIndex, Eye eye, const glm::mat4& pose) override final;
|
||||
|
||||
virtual float getTargetFrameRate() override { return TARGET_RATE_Oculus; }
|
||||
|
@ -30,7 +31,8 @@ protected:
|
|||
private:
|
||||
using EyePoses = std::pair<ovrPosef, ovrPosef>;
|
||||
static const QString NAME;
|
||||
bool _enablePreview { false };
|
||||
static const QString GROUPING;
|
||||
bool _enablePreview{ false };
|
||||
bool _monoPreview { true };
|
||||
QMap<uint32_t, EyePoses> _frameEyePoses;
|
||||
|
||||
|
|
|
@ -28,12 +28,10 @@ Q_DECLARE_LOGGING_CATEGORY(displayplugins)
|
|||
Q_LOGGING_CATEGORY(displayplugins, "hifi.displayplugins")
|
||||
|
||||
const QString OpenVrDisplayPlugin::NAME("OpenVR (Vive)");
|
||||
const QString OpenVrDisplayPlugin::GROUPING("Standard");
|
||||
|
||||
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 };
|
||||
vr::TrackedDevicePose_t _trackedDevicePose[vr::k_unMaxTrackedDeviceCount];
|
||||
|
|
|
@ -18,7 +18,8 @@ const float TARGET_RATE_OpenVr = 90.0f; // FIXME: get from sdk tracked device p
|
|||
class OpenVrDisplayPlugin : public WindowOpenGLDisplayPlugin {
|
||||
public:
|
||||
virtual bool isSupported() const override;
|
||||
virtual const QString & getName() const override;
|
||||
virtual const QString& getName() const override { return NAME; }
|
||||
virtual const QString& getGrouping() const override { return GROUPING; }
|
||||
virtual bool isHmd() const override { return true; }
|
||||
|
||||
virtual float getTargetFrameRate() override { return TARGET_RATE_OpenVr; }
|
||||
|
@ -45,5 +46,6 @@ protected:
|
|||
private:
|
||||
vr::IVRSystem* _hmd { nullptr };
|
||||
static const QString NAME;
|
||||
static const QString GROUPING;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue