From d8140fb31ba622f48756986d4d66db6b6ab8b511 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 1 Apr 2021 23:28:41 -0400 Subject: use callbacks for applying accel --- wrapper/wrapper.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'wrapper/wrapper.cpp') 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 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(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) { -- cgit v1.2.3