diff --git a/BeefySysLib/BFApp.h b/BeefySysLib/BFApp.h
index 3728ed4c..2498da12 100644
--- a/BeefySysLib/BFApp.h
+++ b/BeefySysLib/BFApp.h
@@ -40,6 +40,13 @@ class BFSysBitmap
public:
};
+class BFInputDevice
+{
+public:
+ virtual ~BFInputDevice() {}
+ virtual String GetState() = 0;
+};
+
class BFApp
{
public:
@@ -99,6 +106,9 @@ public:
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) = 0;
virtual void RehupMouse() {}
+ virtual String EnumerateInputDevices() { return ""; }
+ virtual BFInputDevice* CreateInputDevice(const StringImpl& guid) { return NULL; }
+
virtual BFSysBitmap* LoadSysBitmap(const wchar_t* fileName) = 0;
virtual FileStream* OpenBinaryFile(const StringImpl& fileName);
diff --git a/BeefySysLib/BeefySysLib.cpp b/BeefySysLib/BeefySysLib.cpp
index 3e6bea08..8fb1535c 100644
--- a/BeefySysLib/BeefySysLib.cpp
+++ b/BeefySysLib/BeefySysLib.cpp
@@ -9,6 +9,7 @@
#include "img/BFIData.h"
#include "util/Vector.h"
#include "util/PerfTimer.h"
+#include "util/TLSingleton.h"
#include "util/AllocDebug.h"
@@ -22,7 +23,7 @@ USING_NS_BF;
#pragma warning(disable:4996)
-
+static String gTempString;
static UTF16String gTempUTF16String;
int gPixelsDrawn = 0;
@@ -260,6 +261,17 @@ BF_EXPORT void BF_CALLTYPE BFApp_RehupMouse()
}
+BF_EXPORT const char* BF_CALLTYPE BFApp_EnumerateInputDevices()
+{
+ gTempString = gBFApp->EnumerateInputDevices();
+ return gTempString.c_str();
+}
+
+BF_EXPORT BFInputDevice* BFApp_CreateInputDevice(const char* guid)
+{
+ return gBFApp->CreateInputDevice(guid);
+}
+
BF_EXPORT BFSoundManager* BF_CALLTYPE BFApp_GetSoundManager()
{
return gBFApp->GetSoundManager();
@@ -725,6 +737,17 @@ BF_EXPORT ShaderParam* BF_CALLTYPE Gfx_GetShaderParam(Shader* shader, const char
return shader->GetShaderParam(shaderName);
}
+BF_EXPORT void BF_CALLTYPE BFInput_Destroy(BFInputDevice* inputDevice)
+{
+ delete inputDevice;
+}
+
+BF_EXPORT const char* BF_CALLTYPE BFInput_GetState(BFInputDevice* inputDevice)
+{
+ gTempString = inputDevice->GetState();
+ return gTempString.c_str();
+}
+
BF_EXPORT int BF_CALLTYPE BF_TickCount()
{
return (int) BFTickCount();
diff --git a/BeefySysLib/BeefySysLib.vcxproj b/BeefySysLib/BeefySysLib.vcxproj
index e4faab8a..aa1fb938 100644
--- a/BeefySysLib/BeefySysLib.vcxproj
+++ b/BeefySysLib/BeefySysLib.vcxproj
@@ -489,6 +489,7 @@ copy /y "$(OutDir)$(TargetName).lib" "$(SolutionDir)\BeefLibs\Beefy2D\dist\"true
+
@@ -1996,6 +1997,7 @@ copy /y "$(OutDir)$(TargetName).lib" "$(SolutionDir)\BeefLibs\Beefy2D\dist\"true
+
diff --git a/BeefySysLib/BeefySysLib.vcxproj.filters b/BeefySysLib/BeefySysLib.vcxproj.filters
index ea2a4fca..0b9db518 100644
--- a/BeefySysLib/BeefySysLib.vcxproj.filters
+++ b/BeefySysLib/BeefySysLib.vcxproj.filters
@@ -701,6 +701,9 @@
src
+
+ src\platform\win
+
@@ -1063,6 +1066,9 @@
src\util
+
+ src\platform\win
+
diff --git a/BeefySysLib/platform/win/WinBFApp.cpp b/BeefySysLib/platform/win/WinBFApp.cpp
index da7b81a5..acb7159b 100644
--- a/BeefySysLib/platform/win/WinBFApp.cpp
+++ b/BeefySysLib/platform/win/WinBFApp.cpp
@@ -4,6 +4,7 @@
#include
#include "../../util/BeefPerf.h"
#include "DSoundManager.h"
+#include "DInputManager.h"
#include
#pragma comment(lib, "dwmapi.lib")
@@ -1137,12 +1138,14 @@ WinBFApp::WinBFApp()
mDataDir = mInstallDir;
mInMsgProc = false;
mDSoundManager = NULL;
+ mDInputManager = NULL;
}
WinBFApp::~WinBFApp()
{
delete mRenderDevice;
delete mDSoundManager;
+ delete mDInputManager;
}
void WinBFApp::Init()
@@ -1269,6 +1272,20 @@ void WinBFApp::RehupMouse()
}
}
+String WinBFApp::EnumerateInputDevices()
+{
+ if (mDInputManager == NULL)
+ mDInputManager = new DInputManager();
+ return mDInputManager->EnumerateDevices();
+}
+
+BFInputDevice* WinBFApp::CreateInputDevice(const StringImpl& guid)
+{
+ if (mDInputManager == NULL)
+ mDInputManager = new DInputManager();
+ return mDInputManager->CreateInputDevice(guid);
+}
+
void WinBFWindow::SetMinimumSize(int minWidth, int minHeight, bool clientSized)
{
if (clientSized)
diff --git a/BeefySysLib/platform/win/WinBFApp.h b/BeefySysLib/platform/win/WinBFApp.h
index ce779de7..ec9b8f3b 100644
--- a/BeefySysLib/platform/win/WinBFApp.h
+++ b/BeefySysLib/platform/win/WinBFApp.h
@@ -10,6 +10,7 @@ NS_BF_BEGIN;
class RenderDevice;
class DSoundManager;
+class DInputManager;
typedef Dictionary PtrToHGlobalMap;
typedef Dictionary StringToUIntMap;
@@ -90,6 +91,7 @@ public:
bool mInMsgProc;
StringToUIntMap mClipboardFormatMap;
DSoundManager* mDSoundManager;
+ DInputManager* mDInputManager;
protected:
virtual void Draw() override;
@@ -115,6 +117,9 @@ public:
virtual void SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
virtual void RehupMouse() override;
+ virtual String EnumerateInputDevices() override;
+ virtual BFInputDevice* CreateInputDevice(const StringImpl& guid) override;
+
virtual BFSysBitmap* LoadSysBitmap(const WCHAR* fileName) override;
virtual BFSoundManager* GetSoundManager() override;