void JoyAxis::joyEvent(int value, bool ignoresets) { setCurrentRawValue(value); //currentRawValue = value; bool safezone = !inDeadZone(currentRawValue); currentThrottledValue = calculateThrottledValue(value); if (this->stick) { if (safezone && !isActive) { isActive = eventActive = true; emit active(value); } else if (!safezone && isActive) { isActive = eventActive = false; emit released(value); } stick->joyEvent(ignoresets); } else { InputDevice *device = parentSet->getInputDevice(); if (!device->isGameController() && !device->hasCalibrationThrottle(index)) { performCalibration(currentRawValue); safezone = !inDeadZone(currentRawValue); currentThrottledValue = calculateThrottledValue(value); } if (safezone && !isActive) { isActive = eventActive = true; emit active(value); createDeskEvent(ignoresets); } else if (!safezone && isActive) { isActive = eventActive = false; emit released(value); createDeskEvent(ignoresets); } else if (isActive) { createDeskEvent(ignoresets); } } emit moved(currentRawValue); }
void JoyControlStick::joyEvent(bool ignoresets) { safezone = !inDeadZone(); if (safezone && !isActive) { isActive = true; emit active(axisX->getCurrentRawValue(), axisY->getCurrentRawValue()); createDeskEvent(ignoresets); } else if (!safezone && isActive) { isActive = false; currentDirection = StickCentered; emit released(axisX->getCurrentRawValue(), axisY->getCurrentRawValue()); createDeskEvent(ignoresets); } else if (isActive) { createDeskEvent(ignoresets); } emit moved(axisX->getCurrentRawValue(), axisY->getCurrentRawValue()); }
bool Turret::isTargetable (Player *player, float *minDist, float useRange) { if (player && player->getTeam () != getTeam() && player->getVisibleToTeam (getTeam()) && !player->isDead()) { if (const char* script = scriptName("verifyTarget")) { const char* pRet = Console->evaluatef("%s(%d);", script, player->getId()); if (pRet[0] == 'F' || pRet[0] == 'f') return false; } Point3F playerPos = player->getLeadCenter(); float dist = m_distf (getBoxCenter(), playerPos); if (dist < useRange) targetsTracked++; if (dist < *minDist) { TMat3F invMat; getNodeOffset (&invMat, "dummy muzzle", gunNode); invMat.inverse(); m_mul (Point3F (playerPos.x, playerPos.y, playerPos.z), invMat, &playerPos); float ele = elevation (playerPos.x, playerPos.y, playerPos.z); float rotz = rotation (-playerPos.x, -playerPos.y); if (!inDeadZone (rotz, ele)) { SimContainerQuery collisionQuery; collisionQuery.id = getId(); collisionQuery.type = -1; collisionQuery.mask = SimTerrainObjectType | SimInteriorObjectType; collisionQuery.detail = SimContainerQuery::DefaultDetail; collisionQuery.box.fMin = getBoxCenter(); collisionQuery.box.fMax = player->getLeadCenter(); SimCollisionInfo collisionInfo; SimContainer* root = findObject(manager,SimRootContainerId,root); root->findLOS(collisionQuery, &collisionInfo); if (!collisionInfo.object || collisionInfo.object == player) { *minDist = dist; return true; } } } } return false; }