note controller is index into ControlList.
| 1109 | |
| 1110 | // note controller is index into ControlList. |
| 1111 | float lnxgameController::get_axis_value(int8_t controller, uint8_t axis, ct_format format, bool invert) { |
| 1112 | struct lnxgameController::t_controller *ctldev; |
| 1113 | float val = (float)0.0; |
| 1114 | float normalizer, axisval = 0, nullzone; //, senszone; |
| 1115 | |
| 1116 | if (controller <= NULL_LNXCONTROLLER || controller >= CT_MAX_CONTROLLERS) { |
| 1117 | return 0.0f; |
| 1118 | } |
| 1119 | |
| 1120 | ctldev = &m_ControlList[controller]; |
| 1121 | if (ctldev->id == CTID_INVALID) { |
| 1122 | return 0.0f; |
| 1123 | } |
| 1124 | |
| 1125 | #ifdef _DEBUG |
| 1126 | if (m_ControlList[controller].id == CTID_KEYBOARD) { |
| 1127 | Int3(); |
| 1128 | return 0.0f; |
| 1129 | } |
| 1130 | #endif |
| 1131 | |
| 1132 | // verify controller axis |
| 1133 | if (!CHECK_FLAG(ctldev->flags, 1 << (axis - 1))) { |
| 1134 | return val; |
| 1135 | } |
| 1136 | |
| 1137 | // get raw value |
| 1138 | switch (axis) { |
| 1139 | // note we take care of mouse controls and external controls here |
| 1140 | case CT_X_AXIS: |
| 1141 | axisval = (float)((ctldev->id == CTID_MOUSE) ? m_MseState.x : m_ExtCtlStates[ctldev->id].x); |
| 1142 | break; |
| 1143 | case CT_Y_AXIS: |
| 1144 | axisval = (float)((ctldev->id == CTID_MOUSE) ? m_MseState.y : m_ExtCtlStates[ctldev->id].y); |
| 1145 | break; |
| 1146 | case CT_Z_AXIS: |
| 1147 | axisval = (float)((ctldev->id == CTID_MOUSE) ? m_MseState.z : m_ExtCtlStates[ctldev->id].z); |
| 1148 | break; |
| 1149 | case CT_R_AXIS: |
| 1150 | axisval = (float)m_ExtCtlStates[ctldev->id].r; |
| 1151 | break; |
| 1152 | case CT_U_AXIS: |
| 1153 | axisval = (float)m_ExtCtlStates[ctldev->id].u; |
| 1154 | break; |
| 1155 | case CT_V_AXIS: |
| 1156 | axisval = (float)m_ExtCtlStates[ctldev->id].v; |
| 1157 | break; |
| 1158 | default: |
| 1159 | Int3(); // NOT A VALID AXIS |
| 1160 | } |
| 1161 | |
| 1162 | // create normalizer |
| 1163 | axis--; |
| 1164 | if (ctldev->id == CTID_MOUSE) { |
| 1165 | if (m_frame_time < 0.005f) |
| 1166 | m_frame_time = 0.005f; // to trap potential errors. |
| 1167 | normalizer = ctldev->normalizer[axis] * m_frame_time; |
| 1168 | nullzone = MOUSE_DEADZONE; |
nothing calls this directly
no test coverage detected