summaryrefslogtreecommitdiff
path: root/wrapper
diff options
context:
space:
mode:
authora1xd <[email protected]>2021-04-01 23:28:41 -0400
committera1xd <[email protected]>2021-04-01 23:28:41 -0400
commitd8140fb31ba622f48756986d4d66db6b6ab8b511 (patch)
tree8faa873d4468882c63f1f8fa02b94f4b6b3a65f6 /wrapper
parentcheck for safe mode before hooking into dev stack (diff)
downloadrawaccel-d8140fb31ba622f48756986d4d66db6b6ab8b511.tar.xz
rawaccel-d8140fb31ba622f48756986d4d66db6b6ab8b511.zip
use callbacks for applying accel
Diffstat (limited to 'wrapper')
-rw-r--r--wrapper/wrapper.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp
index 0af7c28..84756af 100644
--- a/wrapper/wrapper.cpp
+++ b/wrapper/wrapper.cpp
@@ -321,9 +321,14 @@ public ref struct RawInputInterop
};
+struct instance_t {
+ ra::io_t data;
+ vec2<ra::accel_invoker> inv;
+};
+
public ref class ManagedAccel
{
- ra::io_t* const instance = new ra::io_t();
+ instance_t* const instance = new instance_t();
public:
ManagedAccel() {};
@@ -350,7 +355,7 @@ public:
(double)y
};
- instance->mod.modify(in_out_vec, time);
+ instance->data.mod.modify(in_out_vec, instance->inv, time);
return gcnew Tuple<double, double>(in_out_vec.x, in_out_vec.y);
}
@@ -358,7 +363,7 @@ public:
void Activate()
{
try {
- ra::write(*instance);
+ ra::write(instance->data);
}
catch (const ra::error& e) {
throw gcnew InteropException(e);
@@ -370,14 +375,15 @@ public:
DriverSettings^ get()
{
DriverSettings^ settings = gcnew DriverSettings();
- Marshal::PtrToStructure(IntPtr(&instance->args), settings);
+ Marshal::PtrToStructure(IntPtr(&instance->data.args), settings);
return settings;
}
void set(DriverSettings^ val)
{
- Marshal::StructureToPtr(val, IntPtr(&instance->args), false);
- instance->mod = { instance->args };
+ Marshal::StructureToPtr(val, IntPtr(&instance->data.args), false);
+ instance->data.mod = { instance->data.args };
+ instance->inv = ra::invokers(instance->data.args);
}
}
@@ -386,7 +392,8 @@ public:
{
try {
auto active = gcnew ManagedAccel();
- ra::read(*active->instance);
+ ra::read(active->instance->data);
+ active->instance->inv = ra::invokers(active->instance->data.args);
return active;
}
catch (const ra::error& e) {