summaryrefslogtreecommitdiff
path: root/wrapper/wrapper.cpp
blob: e29f08da6b11c2da9aeb025473533124a7aacf13 (plain) (blame)
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
55
56
57
58
59
60
61
62
63
64
#pragma once

#include "wrapper.hpp"

using namespace rawaccel;
using namespace System;

Tuple<double, double>^ ManagedAccel::Accelerate(int x, int y, double time)
{
	vec2d input_vec2d = {
		(double)x, 
		(double)y
	};
	vec2d output = (*modifier_instance).modify_with_accel(input_vec2d, (milliseconds)time);

	return gcnew Tuple<double, double>(output.x, output.y);
}

void ManagedAccel::UpdateAccel(
	int mode,
	double rotation,
	double sensitivityX,
	double sensitivityY,
	double weightX,
	double weightY,
	double capX,
	double capY,
	double offset,
	double accel,
	double lim_exp,
	double midpoint)
{
	modifier_args args{};
	args.acc_fn_args.accel_mode = mode;
	args.degrees = rotation;
	args.sens.x = sensitivityX;
	args.sens.y = sensitivityY;
	args.acc_fn_args.acc_args.weight.x = weightX;
	args.acc_fn_args.acc_args.weight.y = weightY;
	args.acc_fn_args.cap.x = capX;
	args.acc_fn_args.cap.y = capY;
	args.acc_fn_args.acc_args.offset = offset;
	args.acc_fn_args.acc_args.accel = accel;
	args.acc_fn_args.acc_args.limit = lim_exp;
	args.acc_fn_args.acc_args.exponent = lim_exp;
	args.acc_fn_args.acc_args.midpoint = midpoint;
	
	mouse_modifier* temp_modifier = new mouse_modifier(args);
	driverWriter->writeToDriver(temp_modifier);
	delete temp_modifier;

	ReadFromDriver();
}

void ManagedAccel::WriteToDriver()
{
	driverWriter->writeToDriver(modifier_instance);
}

void ManagedAccel::ReadFromDriver()
{
	delete modifier_instance;
	modifier_instance = driverWriter->readFromDriver();
}