| 645 | // *********************************************************************** |
| 646 | |
| 647 | void UpdateInputs(f32 deltaTime, Vec2f targetRes, Vec2f realWindowRes) { |
| 648 | pInputState->targetResolution = targetRes; |
| 649 | pInputState->windowResolution = realWindowRes; |
| 650 | |
| 651 | // TODO: This should be configurable |
| 652 | f32 gravity = 10.0f; |
| 653 | f32 sensitivity = 10.0f; |
| 654 | f32 deadzone = 0.09f; |
| 655 | |
| 656 | for (u64 axisIndex = 0; axisIndex < (u64)ControllerAxis::Count; axisIndex++) { |
| 657 | ControllerAxis axisEnum = (ControllerAxis)axisIndex; |
| 658 | Axis& axis = pInputState->axes[axisIndex]; |
| 659 | |
| 660 | if (axis.isMouseDriver) |
| 661 | continue; |
| 662 | |
| 663 | if (axis.ignoreVirtual) { |
| 664 | if (fabs(axis.axisValue) <= deadzone) |
| 665 | axis.axisValue = 0.0f; |
| 666 | continue; |
| 667 | } |
| 668 | |
| 669 | if (axis.positiveInput) { |
| 670 | axis.axisValue += sensitivity * deltaTime; |
| 671 | } |
| 672 | if (axis.negativeInput) { |
| 673 | axis.axisValue -= sensitivity * deltaTime; |
| 674 | } |
| 675 | if (!axis.negativeInput && !axis.positiveInput) { |
| 676 | axis.axisValue += (0 - axis.axisValue) * gravity * deltaTime; |
| 677 | if (fabs(axis.axisValue) <= deadzone) |
| 678 | axis.axisValue = 0.0f; |
| 679 | } |
| 680 | |
| 681 | if (axisEnum == ControllerAxis::TriggerLeft || axisEnum == ControllerAxis::TriggerRight) // Triggers are special |
| 682 | axis.axisValue = clamp(axis.axisValue, 0.f, 1.f); |
| 683 | else |
| 684 | axis.axisValue = clamp(axis.axisValue, -1.f, 1.f); |
| 685 | } |
| 686 | } |
| 687 | |
| 688 | // *********************************************************************** |
| 689 | |