diff --git a/cmake/externals/sdl2/CMakeLists.txt b/cmake/externals/sdl2/CMakeLists.txt index ee1d57d2e9..4222cd41f0 100644 --- a/cmake/externals/sdl2/CMakeLists.txt +++ b/cmake/externals/sdl2/CMakeLists.txt @@ -63,7 +63,11 @@ set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") if (APPLE) + +# NOOP + elseif (WIN32) + ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIR ${SOURCE_DIR}/include CACHE PATH "Location of SDL2 include directory") @@ -75,8 +79,12 @@ elseif (WIN32) set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${SOURCE_DIR}/lib/x86 CACHE PATH "Location of SDL2 DLL") endif() + add_paths_to_fixup_libs(${${EXTERNAL_NAME_UPPER}_DLL_PATH}) + else () + ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIR ${INSTALL_DIR}/include/SDL2 CACHE PATH "Location of SDL2 include directory") set(${EXTERNAL_NAME_UPPER}_LIBRARY_TEMP ${INSTALL_DIR}/lib/libSDL2.so CACHE FILEPATH "Path to SDL2 library") + endif () diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a79c23712e..a55c4d3617 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -68,7 +68,6 @@ #include #include #include -#include // this should probably be removed #include #include #include @@ -4004,13 +4003,6 @@ void Application::saveScripts() { settings.endArray(); } -QScriptValue joystickToScriptValue(QScriptEngine *engine, Joystick* const &in) { - return engine->newQObject(in); -} - -void joystickFromScriptValue(const QScriptValue &object, Joystick* &out) { - out = qobject_cast(object.toQObject()); -} void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scriptEngine) { // setup the packet senders and jurisdiction listeners of the script engine's scripting interfaces so @@ -4075,8 +4067,6 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri scriptEngine->registerGlobalObject("AvatarManager", DependencyManager::get().data()); - qScriptRegisterMetaType(scriptEngine, joystickToScriptValue, joystickFromScriptValue); - scriptEngine->registerGlobalObject("UndoStack", &_undoStackScriptingInterface); scriptEngine->registerGlobalObject("LODManager", DependencyManager::get().data()); diff --git a/libraries/input-plugins/CMakeLists.txt b/libraries/input-plugins/CMakeLists.txt index 592f1fcc84..b81554511d 100644 --- a/libraries/input-plugins/CMakeLists.txt +++ b/libraries/input-plugins/CMakeLists.txt @@ -1,7 +1,5 @@ set(TARGET_NAME input-plugins) setup_hifi_library() -link_hifi_libraries(shared plugins controllers script-engine) +link_hifi_libraries(shared plugins controllers) GroupSources("src/input-plugins") - -target_sdl2() diff --git a/libraries/input-plugins/src/input-plugins/InputPlugin.cpp b/libraries/input-plugins/src/input-plugins/InputPlugin.cpp index d226797e95..4d59adb602 100644 --- a/libraries/input-plugins/src/input-plugins/InputPlugin.cpp +++ b/libraries/input-plugins/src/input-plugins/InputPlugin.cpp @@ -13,13 +13,11 @@ #include #include "KeyboardMouseDevice.h" -#include "SDL2Manager.h" // TODO migrate to a DLL model where plugins are discovered and loaded at runtime by the PluginManager class InputPluginList getInputPlugins() { InputPlugin* PLUGIN_POOL[] = { new KeyboardMouseDevice(), - new SDL2Manager(), nullptr }; diff --git a/plugins/hifiSdl2/CMakeLists.txt b/plugins/hifiSdl2/CMakeLists.txt new file mode 100644 index 0000000000..2f106aedce --- /dev/null +++ b/plugins/hifiSdl2/CMakeLists.txt @@ -0,0 +1,12 @@ +# +# Created by Bradley Austin Davis on 2015/11/18 +# Copyright 2015 High Fidelity, Inc. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html +# + +set(TARGET_NAME hifiSdl2) +setup_hifi_plugin(Script Qml Widgets) +link_hifi_libraries(shared controllers plugins input-plugins script-engine) +target_sdl2() diff --git a/libraries/input-plugins/src/input-plugins/Joystick.cpp b/plugins/hifiSdl2/src/Joystick.cpp similarity index 100% rename from libraries/input-plugins/src/input-plugins/Joystick.cpp rename to plugins/hifiSdl2/src/Joystick.cpp diff --git a/libraries/input-plugins/src/input-plugins/Joystick.h b/plugins/hifiSdl2/src/Joystick.h similarity index 100% rename from libraries/input-plugins/src/input-plugins/Joystick.h rename to plugins/hifiSdl2/src/Joystick.h diff --git a/libraries/input-plugins/src/input-plugins/SDL2Manager.cpp b/plugins/hifiSdl2/src/SDL2Manager.cpp similarity index 99% rename from libraries/input-plugins/src/input-plugins/SDL2Manager.cpp rename to plugins/hifiSdl2/src/SDL2Manager.cpp index c6f5491a5a..7ca49bbd75 100644 --- a/libraries/input-plugins/src/input-plugins/SDL2Manager.cpp +++ b/plugins/hifiSdl2/src/SDL2Manager.cpp @@ -11,8 +11,6 @@ #include -#include -#include #include #include @@ -163,6 +161,7 @@ void SDL2Manager::pluginUpdate(float deltaTime, bool jointsCaptured) { joystick->handleButtonEvent(event.cbutton); } +#if 0 if (event.cbutton.button == SDL_CONTROLLER_BUTTON_BACK) { // this will either start or stop a global back event QEvent::Type backType = (event.type == SDL_CONTROLLERBUTTONDOWN) @@ -172,6 +171,7 @@ void SDL2Manager::pluginUpdate(float deltaTime, bool jointsCaptured) { qApp->sendEvent(qApp, &backEvent); } +#endif } else if (event.type == SDL_CONTROLLERDEVICEADDED) { SDL_GameController* controller = SDL_GameControllerOpen(event.cdevice.which); diff --git a/libraries/input-plugins/src/input-plugins/SDL2Manager.h b/plugins/hifiSdl2/src/SDL2Manager.h similarity index 98% rename from libraries/input-plugins/src/input-plugins/SDL2Manager.h rename to plugins/hifiSdl2/src/SDL2Manager.h index d6b6de24b3..61e2d37fd5 100644 --- a/libraries/input-plugins/src/input-plugins/SDL2Manager.h +++ b/plugins/hifiSdl2/src/SDL2Manager.h @@ -17,8 +17,7 @@ #endif #include - -#include "InputPlugin.h" +#include #include "Joystick.h" class SDL2Manager : public InputPlugin { diff --git a/plugins/hifiSdl2/src/SDL2Provider.cpp b/plugins/hifiSdl2/src/SDL2Provider.cpp new file mode 100644 index 0000000000..1c387a9886 --- /dev/null +++ b/plugins/hifiSdl2/src/SDL2Provider.cpp @@ -0,0 +1,44 @@ +// +// Created by Bradley Austin Davis on 2015/10/25 +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +#include +#include +#include + +#include +#include + +#include "SDL2Manager.h" + +class SDL2Provider : public QObject, public InputProvider { + Q_OBJECT + Q_PLUGIN_METADATA(IID InputProvider_iid FILE "plugin.json") + Q_INTERFACES(InputProvider) + +public: + SDL2Provider(QObject* parent = nullptr) : QObject(parent) {} + virtual ~SDL2Provider() {} + + virtual InputPluginList getInputPlugins() override { + static std::once_flag once; + std::call_once(once, [&] { + InputPluginPointer plugin(new SDL2Manager()); + if (plugin->isSupported()) { + _inputPlugins.push_back(plugin); + } + }); + return _inputPlugins; + } + +private: + InputPluginList _inputPlugins; +}; + +#include "SDL2Provider.moc" diff --git a/plugins/hifiSdl2/src/plugin.json b/plugins/hifiSdl2/src/plugin.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/plugins/hifiSdl2/src/plugin.json @@ -0,0 +1 @@ +{}