diff options
| author | a1xd <[email protected]> | 2021-04-01 23:28:41 -0400 |
|---|---|---|
| committer | a1xd <[email protected]> | 2021-04-01 23:28:41 -0400 |
| commit | d8140fb31ba622f48756986d4d66db6b6ab8b511 (patch) | |
| tree | 8faa873d4468882c63f1f8fa02b94f4b6b3a65f6 /wrapper/wrapper.cpp | |
| parent | check for safe mode before hooking into dev stack (diff) | |
| download | rawaccel-d8140fb31ba622f48756986d4d66db6b6ab8b511.tar.xz rawaccel-d8140fb31ba622f48756986d4d66db6b6ab8b511.zip | |
use callbacks for applying accel
Diffstat (limited to 'wrapper/wrapper.cpp')
| -rw-r--r-- | wrapper/wrapper.cpp | 21 |
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) { |