Make the initialSpeed, acceleration, deceleratedSpeed, baseSpeed, and acceleratedSpeed kinetic properties uint8_t and multiply them by intMultiplier to provide a fixed set of steps to choose from.
This commit is contained in:
@@ -29,11 +29,12 @@ static mouse_kinetic_state_t mouseMoveState = {
|
|||||||
.downState = SerializedMouseAction_MoveDown,
|
.downState = SerializedMouseAction_MoveDown,
|
||||||
.leftState = SerializedMouseAction_MoveLeft,
|
.leftState = SerializedMouseAction_MoveLeft,
|
||||||
.rightState = SerializedMouseAction_MoveRight,
|
.rightState = SerializedMouseAction_MoveRight,
|
||||||
.initialSpeed = 100,
|
.intMultiplier = 31.25,
|
||||||
.acceleration = 300,
|
.initialSpeed = 3,
|
||||||
.deceleratedSpeed = 250,
|
.acceleration = 10,
|
||||||
.baseSpeed = 500,
|
.deceleratedSpeed = 8,
|
||||||
.acceleratedSpeed = 1000,
|
.baseSpeed = 16,
|
||||||
|
.acceleratedSpeed = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
static mouse_kinetic_state_t mouseScrollState = {
|
static mouse_kinetic_state_t mouseScrollState = {
|
||||||
@@ -41,17 +42,24 @@ static mouse_kinetic_state_t mouseScrollState = {
|
|||||||
.downState = SerializedMouseAction_ScrollUp,
|
.downState = SerializedMouseAction_ScrollUp,
|
||||||
.leftState = SerializedMouseAction_ScrollLeft,
|
.leftState = SerializedMouseAction_ScrollLeft,
|
||||||
.rightState = SerializedMouseAction_ScrollRight,
|
.rightState = SerializedMouseAction_ScrollRight,
|
||||||
.initialSpeed = 6,
|
.intMultiplier = 0.75,
|
||||||
.acceleration = 6,
|
.initialSpeed = 8,
|
||||||
.deceleratedSpeed = 6,
|
.acceleration = 8,
|
||||||
.baseSpeed = 12,
|
.deceleratedSpeed = 8,
|
||||||
.acceleratedSpeed = 24,
|
.baseSpeed = 16,
|
||||||
|
.acceleratedSpeed = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
||||||
{
|
{
|
||||||
|
float initialSpeed = kineticState->intMultiplier * kineticState->initialSpeed;
|
||||||
|
float acceleration = kineticState->intMultiplier * kineticState->acceleration;
|
||||||
|
float deceleratedSpeed = kineticState->intMultiplier * kineticState->deceleratedSpeed;
|
||||||
|
float baseSpeed = kineticState->intMultiplier * kineticState->baseSpeed;
|
||||||
|
float acceleratedSpeed = kineticState->intMultiplier * kineticState->acceleratedSpeed;
|
||||||
|
|
||||||
if (!kineticState->wasMoveAction) {
|
if (!kineticState->wasMoveAction) {
|
||||||
kineticState->currentSpeed = kineticState->initialSpeed;
|
kineticState->currentSpeed = initialSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isMoveAction = activeMouseStates[kineticState->upState] ||
|
bool isMoveAction = activeMouseStates[kineticState->upState] ||
|
||||||
@@ -61,13 +69,13 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
|||||||
|
|
||||||
mouse_speed_t mouseSpeed = MouseSpeed_Normal;
|
mouse_speed_t mouseSpeed = MouseSpeed_Normal;
|
||||||
if (activeMouseStates[SerializedMouseAction_Accelerate]) {
|
if (activeMouseStates[SerializedMouseAction_Accelerate]) {
|
||||||
kineticState->targetSpeed = kineticState->acceleratedSpeed;
|
kineticState->targetSpeed = acceleratedSpeed;
|
||||||
mouseSpeed = MouseSpeed_Accelerated;
|
mouseSpeed = MouseSpeed_Accelerated;
|
||||||
} else if (activeMouseStates[SerializedMouseAction_Decelerate]) {
|
} else if (activeMouseStates[SerializedMouseAction_Decelerate]) {
|
||||||
kineticState->targetSpeed = kineticState->deceleratedSpeed;
|
kineticState->targetSpeed = deceleratedSpeed;
|
||||||
mouseSpeed = MouseSpeed_Decelerated;
|
mouseSpeed = MouseSpeed_Decelerated;
|
||||||
} else if (isMoveAction) {
|
} else if (isMoveAction) {
|
||||||
kineticState->targetSpeed = kineticState->baseSpeed;
|
kineticState->targetSpeed = baseSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mouseSpeed == MouseSpeed_Accelerated || (kineticState->wasMoveAction && isMoveAction && (kineticState->prevMouseSpeed != mouseSpeed))) {
|
if (mouseSpeed == MouseSpeed_Accelerated || (kineticState->wasMoveAction && isMoveAction && (kineticState->prevMouseSpeed != mouseSpeed))) {
|
||||||
@@ -76,12 +84,12 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
|||||||
|
|
||||||
if (isMoveAction) {
|
if (isMoveAction) {
|
||||||
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed += kineticState->acceleration * elapsedTime / 1000;
|
kineticState->currentSpeed += acceleration * elapsedTime / 1000;
|
||||||
if (kineticState->currentSpeed > kineticState->targetSpeed) {
|
if (kineticState->currentSpeed > kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed = kineticState->targetSpeed;
|
kineticState->currentSpeed = kineticState->targetSpeed;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
kineticState->currentSpeed -= kineticState->acceleration * elapsedTime / 1000;
|
kineticState->currentSpeed -= acceleration * elapsedTime / 1000;
|
||||||
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed = kineticState->targetSpeed;
|
kineticState->currentSpeed = kineticState->targetSpeed;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,14 +49,15 @@
|
|||||||
serialized_mouse_action_t leftState;
|
serialized_mouse_action_t leftState;
|
||||||
serialized_mouse_action_t rightState;
|
serialized_mouse_action_t rightState;
|
||||||
mouse_speed_t prevMouseSpeed;
|
mouse_speed_t prevMouseSpeed;
|
||||||
|
float intMultiplier;
|
||||||
float currentSpeed;
|
float currentSpeed;
|
||||||
float distance;
|
float distance;
|
||||||
float targetSpeed;
|
float targetSpeed;
|
||||||
float initialSpeed;
|
uint8_t initialSpeed;
|
||||||
float acceleration;
|
uint8_t acceleration;
|
||||||
float deceleratedSpeed;
|
uint8_t deceleratedSpeed;
|
||||||
float baseSpeed;
|
uint8_t baseSpeed;
|
||||||
float acceleratedSpeed;
|
uint8_t acceleratedSpeed;
|
||||||
float xSum;
|
float xSum;
|
||||||
float ySum;
|
float ySum;
|
||||||
int16_t xOut;
|
int16_t xOut;
|
||||||
|
|||||||
Reference in New Issue
Block a user