MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / get_axis_value

Method get_axis_value

linux/lnxcontroller.cpp:1111–1278  ·  view source on GitHub ↗

note controller is index into ControlList.

Source from the content-addressed store, hash-verified

1109
1110// note controller is index into ControlList.
1111float 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;

Callers

nothing calls this directly

Calls 4

GetFunctionModeFunction · 0.85
ObjSetOrientFunction · 0.85
vm_AnglesToMatrixFunction · 0.50
vm_OrthogonalizeFunction · 0.50

Tested by

no test coverage detected