1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright 2014 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <list>
#include <string>
#include "InputCommon/ControllerInterface/Device.h"
#ifdef _WIN32
#include <Windows.h>
#include "InputCommon/ControllerInterface/DInput/DInput8.h"
#elif __APPLE__
#include "InputCommon/ControllerInterface/ForceFeedback/OSX/DirectInputAdapter.h"
#endif
namespace ciface
{
namespace ForceFeedback
{
class ForceFeedbackDevice : public Core::Device
{
private:
template <typename P>
class Force : public Output
{
public:
Force(const std::string& name, LPDIRECTINPUTEFFECT iface);
~Force();
std::string GetName() const override;
void SetState(ControlState state) override;
void Update();
void Stop();
private:
const std::string m_name;
LPDIRECTINPUTEFFECT m_iface;
P params;
};
typedef Force<DICONSTANTFORCE> ForceConstant;
typedef Force<DIRAMPFORCE> ForceRamp;
typedef Force<DIPERIODIC> ForcePeriodic;
public:
bool InitForceFeedback(const LPDIRECTINPUTDEVICE8, int cAxes);
};
}
}
|