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