mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-12 04:14:05 +00:00
Merge branch 'unique_ptr_input_manager' into 'master'
Use std::unique_ptr to manage lifetime for InputManager members See merge request OpenMW/openmw!2150
This commit is contained in:
commit
9fbcc342cf
@ -31,29 +31,21 @@ namespace MWInput
|
||||
const std::string& userFile, bool userFileExists, const std::string& userControllerBindingsFile,
|
||||
const std::string& controllerBindingsFile, bool grab)
|
||||
: mControlsDisabled(false)
|
||||
, mInputWrapper(std::make_unique<SDLUtil::InputWrapper>(window, viewer, grab))
|
||||
, mBindingsManager(std::make_unique<BindingsManager>(userFile, userFileExists))
|
||||
, mControlSwitch(std::make_unique<ControlSwitch>())
|
||||
, mActionManager(std::make_unique<ActionManager>(mBindingsManager.get(), screenCaptureOperation, viewer, screenCaptureHandler))
|
||||
, mKeyboardManager(std::make_unique<KeyboardManager>(mBindingsManager.get()))
|
||||
, mMouseManager(std::make_unique<MouseManager>(mBindingsManager.get(), mInputWrapper.get(), window))
|
||||
, mControllerManager(std::make_unique<ControllerManager>(mBindingsManager.get(), mActionManager.get(), mMouseManager.get(), userControllerBindingsFile, controllerBindingsFile))
|
||||
, mSensorManager(std::make_unique<SensorManager>())
|
||||
, mGyroManager(std::make_unique<GyroManager>())
|
||||
{
|
||||
mInputWrapper = new SDLUtil::InputWrapper(window, viewer, grab);
|
||||
mInputWrapper->setWindowEventCallback(MWBase::Environment::get().getWindowManager());
|
||||
|
||||
mBindingsManager = new BindingsManager(userFile, userFileExists);
|
||||
|
||||
mControlSwitch = new ControlSwitch();
|
||||
|
||||
mActionManager = new ActionManager(mBindingsManager, screenCaptureOperation, viewer, screenCaptureHandler);
|
||||
|
||||
mKeyboardManager = new KeyboardManager(mBindingsManager);
|
||||
mInputWrapper->setKeyboardEventCallback(mKeyboardManager);
|
||||
|
||||
mMouseManager = new MouseManager(mBindingsManager, mInputWrapper, window);
|
||||
mInputWrapper->setMouseEventCallback(mMouseManager);
|
||||
|
||||
mControllerManager = new ControllerManager(mBindingsManager, mActionManager, mMouseManager, userControllerBindingsFile, controllerBindingsFile);
|
||||
mInputWrapper->setControllerEventCallback(mControllerManager);
|
||||
|
||||
mSensorManager = new SensorManager();
|
||||
mInputWrapper->setSensorEventCallback(mSensorManager);
|
||||
|
||||
mGyroManager = new GyroManager();
|
||||
mInputWrapper->setKeyboardEventCallback(mKeyboardManager.get());
|
||||
mInputWrapper->setMouseEventCallback(mMouseManager.get());
|
||||
mInputWrapper->setControllerEventCallback(mControllerManager.get());
|
||||
mInputWrapper->setSensorEventCallback(mSensorManager.get());
|
||||
}
|
||||
|
||||
void InputManager::clear()
|
||||
@ -62,22 +54,7 @@ namespace MWInput
|
||||
mControlSwitch->clear();
|
||||
}
|
||||
|
||||
InputManager::~InputManager()
|
||||
{
|
||||
delete mActionManager;
|
||||
delete mControllerManager;
|
||||
delete mKeyboardManager;
|
||||
delete mMouseManager;
|
||||
delete mSensorManager;
|
||||
|
||||
delete mControlSwitch;
|
||||
|
||||
delete mBindingsManager;
|
||||
|
||||
delete mInputWrapper;
|
||||
|
||||
delete mGyroManager;
|
||||
}
|
||||
InputManager::~InputManager() {}
|
||||
|
||||
void InputManager::setAttemptJump(bool jumping)
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef MWINPUT_MWINPUTMANAGERIMP_H
|
||||
#define MWINPUT_MWINPUTMANAGERIMP_H
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <osg/ref_ptr>
|
||||
#include <osgViewer/ViewerEventHandlers>
|
||||
|
||||
@ -44,7 +46,7 @@ namespace MWInput
|
||||
/**
|
||||
* @brief Class that provides a high-level API for game input
|
||||
*/
|
||||
class InputManager : public MWBase::InputManager
|
||||
class InputManager final : public MWBase::InputManager
|
||||
{
|
||||
public:
|
||||
InputManager(
|
||||
@ -56,7 +58,7 @@ namespace MWInput
|
||||
const std::string& userControllerBindingsFile,
|
||||
const std::string& controllerBindingsFile, bool grab);
|
||||
|
||||
virtual ~InputManager();
|
||||
~InputManager() final;
|
||||
|
||||
/// Clear all savegame-specific data
|
||||
void clear() override;
|
||||
@ -117,19 +119,17 @@ namespace MWInput
|
||||
void loadKeyDefaults(bool force = false);
|
||||
void loadControllerDefaults(bool force = false);
|
||||
|
||||
SDLUtil::InputWrapper* mInputWrapper;
|
||||
|
||||
bool mControlsDisabled;
|
||||
|
||||
ControlSwitch* mControlSwitch;
|
||||
|
||||
ActionManager* mActionManager;
|
||||
BindingsManager* mBindingsManager;
|
||||
ControllerManager* mControllerManager;
|
||||
KeyboardManager* mKeyboardManager;
|
||||
MouseManager* mMouseManager;
|
||||
SensorManager* mSensorManager;
|
||||
GyroManager* mGyroManager;
|
||||
std::unique_ptr<SDLUtil::InputWrapper> mInputWrapper;
|
||||
std::unique_ptr<BindingsManager> mBindingsManager;
|
||||
std::unique_ptr<ControlSwitch> mControlSwitch;
|
||||
std::unique_ptr<ActionManager> mActionManager;
|
||||
std::unique_ptr<KeyboardManager> mKeyboardManager;
|
||||
std::unique_ptr<MouseManager> mMouseManager;
|
||||
std::unique_ptr<ControllerManager> mControllerManager;
|
||||
std::unique_ptr<SensorManager> mSensorManager;
|
||||
std::unique_ptr<GyroManager> mGyroManager;
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user