adding more staging

This commit is contained in:
Wayne Chen 2019-01-02 09:50:43 -08:00
parent c22ad2b15a
commit db06533018
11 changed files with 59 additions and 19 deletions

View file

@ -394,7 +394,7 @@ Item {
buttonGlyphSize: 24
buttonGlyphRightMargin: 10
onClicked: {
// if (loginDialog.isOculusStoreRunning()) {
// if (loginDialog.isOculusRunning()) {
// linkAccountBody.withOculus = true;
// loginDialog.loginThroughSteam();
// } else
@ -411,7 +411,7 @@ Item {
continueButton.visible = false;
return;
}
if (loginDialog.isOculusStoreRunning()) {
if (loginDialog.isOculusRunning()) {
continueButton.text = qsTr("CONTINUE WITH OCULUS");
continueButton.buttonGlyph = hifi.glyphs.oculus;
} else if (loginDialog.isSteamRunning()) {
@ -539,6 +539,9 @@ Item {
Qt.callLater(function() {
emailField.forceActiveFocus();
});
if (loginDialog.isOculusRunning()) {
print(loginDialog.getLoggedInUserID());
}
}
Keys.onPressed: {

View file

@ -120,6 +120,7 @@
#include <plugins/PluginManager.h>
#include <plugins/PluginUtils.h>
#include <plugins/SteamClientPlugin.h>
#include <plugins/OculusPlatformPlugin.h>
#include <plugins/InputConfiguration.h>
#include <RecordingScriptingInterface.h>
#include <render/EngineStats.h>
@ -793,7 +794,6 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) {
if (auto steamClient = pluginManager->getSteamClientPlugin()) {
steamClient->init();
}
PROFILE_SET_THREAD_NAME("Main Thread");
#if defined(Q_OS_WIN)
@ -999,6 +999,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
{
auto steamClient = PluginManager::getInstance()->getSteamClientPlugin();
auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin();
setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning()));
setProperty(hifi::properties::CRASHED, _previousSessionCrashed);
@ -1130,6 +1131,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
bool isStore = arguments().indexOf(OCULUS_STORE_ARG) != -1;
setProperty(hifi::properties::OCULUS_STORE, isStore);
DependencyManager::get<WalletScriptingInterface>()->setLimitedCommerce(isStore); // Or we could make it a separate arg, or if either arg is set, etc. And should this instead by a hifi::properties?
if (auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin()) {
oculusPlatform->init();
}
updateHeartbeat();
@ -2652,6 +2656,10 @@ Application::~Application() {
if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) {
steamClient->shutdown();
}
if (auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin()) {
oculusPlatform->shutdown();
}
DependencyManager::destroy<PluginManager>();
DependencyManager::destroy<CompositorHelper>(); // must be destroyed before the FramebufferCache

View file

@ -18,6 +18,7 @@
#include <plugins/PluginManager.h>
#include <plugins/SteamClientPlugin.h>
#include <plugins/OculusPlatformPlugin.h>
#include <shared/GlobalAppProperties.h>
#include <ui/TabletScriptingInterface.h>
#include <UserActivityLogger.h>
@ -104,8 +105,16 @@ bool LoginDialog::isSteamRunning() const {
return steamClient && steamClient->isRunning();
}
bool LoginDialog::isOculusStoreRunning() const {
return qApp->property(hifi::properties::OCULUS_STORE).toBool();
bool LoginDialog::isOculusRunning() const {
auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin();
return oculusPlatform && oculusPlatform->isRunning();
}
QString LoginDialog::getLoggedInUserID() const {
auto oculusPlatform = PluginManager::getInstance()->getOculusPlatformPlugin();
auto userID = oculusPlatform->getLoggedInUserID();
qDebug() << "userID: " << userID;
return userID;
}
void LoginDialog::dismissLoginDialog() {

View file

@ -67,7 +67,8 @@ protected slots:
Q_INVOKABLE void dismissLoginDialog();
Q_INVOKABLE bool isSteamRunning() const;
Q_INVOKABLE bool isOculusStoreRunning() const;
Q_INVOKABLE bool isOculusRunning() const;
Q_INVOKABLE QString getLoggedInUserID() const;
Q_INVOKABLE void login(const QString& username, const QString& password) const;
Q_INVOKABLE void loginThroughSteam();

View file

@ -21,6 +21,7 @@ class DisplayPlugin;
class InputPlugin;
class CodecPlugin;
class SteamClientPlugin;
class OculusPlatformPlugin;
class Plugin;
class PluginContainer;
class PluginManager;
@ -35,4 +36,5 @@ using CodecPluginPointer = std::shared_ptr<CodecPlugin>;
using CodecPluginList = std::vector<CodecPluginPointer>;
using CodecPluginProvider = std::function<CodecPluginList()>;
using SteamClientPluginPointer = std::shared_ptr<SteamClientPlugin>;
using OculusPlatformPluginPointer = std::shared_ptr<OculusPlatformPlugin>;
using InputPluginSettingsPersister = std::function<void(const InputPluginList&)>;

View file

@ -179,6 +179,23 @@ const SteamClientPluginPointer PluginManager::getSteamClientPlugin() {
return steamClientPlugin;
}
const OculusPlatformPluginPointer PluginManager::getOculusPlatformPlugin() {
static OculusPlatformPluginPointer oculusPlatformPlugin;
static std::once_flag once;
std::call_once(once, [&] {
// Now grab the dynamic plugins
for (auto loader : getLoadedPlugins()) {
OculusPlatformProvider* oculusPlatformProvider = qobject_cast<OculusPlatformProvider*>(loader->instance());
if (oculusPlatformProvider) {
oculusPlatformPlugin = oculusPlatformProvider->getOculusPlatformPlugin();
break;
}
}
});
return oculusPlatformPlugin;
}
const DisplayPluginList& PluginManager::getDisplayPlugins() {
static std::once_flag once;
static auto deviceAddedCallback = [](QString deviceName) {

View file

@ -28,6 +28,7 @@ public:
const InputPluginList& getInputPlugins();
const CodecPluginList& getCodecPlugins();
const SteamClientPluginPointer getSteamClientPlugin();
const OculusPlatformPluginPointer getOculusPlatformPlugin();
DisplayPluginList getPreferredDisplayPlugins();
void setPreferredDisplayPlugins(const QStringList& displays);

View file

@ -51,5 +51,15 @@ public:
virtual SteamClientPluginPointer getSteamClientPlugin() = 0;
};
class OculusPlatformProvider {
public:
virtual ~OculusPlatformProvider() {}
virtual OculusPlatformPluginPointer getOculusPlatformPlugin() = 0;
};
#define SteamClientProvider_iid "com.highfidelity.plugins.steamclient"
Q_DECLARE_INTERFACE(SteamClientProvider, SteamClientProvider_iid)
#define OculusPlatformProvider_iid "com.highfidelity.plugins.oculusplatform"
Q_DECLARE_INTERFACE(OculusPlatformProvider, OculusPlatformProvider_iid)

View file

@ -34,6 +34,8 @@ if (NOT SERVER_ONLY AND NOT ANDROID)
add_subdirectory(${DIR})
set(DIR "steamClient")
add_subdirectory(${DIR})
set(DIR "oculusPlatform")
add_subdirectory(${DIR})
set(DIR "hifiLeapMotion")
add_subdirectory(${DIR})
endif()

View file

@ -174,18 +174,6 @@ ovrTrackingState ovr::getTrackingState(double absTime, ovrBool latencyMarker) {
return result;
}
QString ovr::getLoggedInUserID() {
ovr_GetLoggedInUserID();
ovrMessageHandle message = ovr_PopMessage();
if (!ovr_Message_IsError(message)) {
ovrUserHandle user = ovr_Message_GetUser(message);
qCDebug(oculusLog) << "User is: " << ovr_User_GetID(user) << ", " << ovr_User_GetOculusID(user);
} else {
auto error = ovr_Message_GetError(message);
qCDebug(oculusLog) << "User failure error: " << ovr_Error_GetMessage(error);
}
}
QString ovr::getError() {
static ovrErrorInfo error;
ovr_GetLastErrorInfo(&error);

View file

@ -29,7 +29,6 @@ struct ovr {
static ovrSessionStatus getStatus();
static ovrSessionStatus getStatus(ovrResult& result);
static ovrTrackingState getTrackingState(double absTime = 0.0, ovrBool latencyMarker = ovrFalse);
static QString getLoggedInUserID();
static QString getError();
static bool handleOVREvents();