| 1505 | } |
| 1506 | |
| 1507 | void CWeapon::UpdateAddonsVisibility() |
| 1508 | { |
| 1509 | auto pWeaponVisual = smart_cast<IKinematics*>(Visual()); |
| 1510 | VERIFY(pWeaponVisual); |
| 1511 | |
| 1512 | UpdateHUDAddonsVisibility(); |
| 1513 | |
| 1514 | /////////////////////////////////////////////////////////////////// |
| 1515 | u16 bone_id{}; |
| 1516 | |
| 1517 | for (const auto& sbone : m_sWpn_scope_bones) |
| 1518 | { |
| 1519 | bone_id = pWeaponVisual->LL_BoneID(sbone); |
| 1520 | |
| 1521 | if (bone_id != BI_NONE) |
| 1522 | { |
| 1523 | if (ScopeAttachable()) |
| 1524 | { |
| 1525 | if (IsScopeAttached()) |
| 1526 | { |
| 1527 | if (!pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1528 | pWeaponVisual->LL_SetBoneVisible(bone_id, TRUE, TRUE); |
| 1529 | } |
| 1530 | else |
| 1531 | { |
| 1532 | if (pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1533 | pWeaponVisual->LL_SetBoneVisible(bone_id, FALSE, TRUE); |
| 1534 | } |
| 1535 | } |
| 1536 | |
| 1537 | if (m_eScopeStatus == CSE_ALifeItemWeapon::eAddonDisabled && bone_id != BI_NONE && pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1538 | pWeaponVisual->LL_SetBoneVisible(bone_id, FALSE, TRUE); |
| 1539 | else if (m_eScopeStatus == CSE_ALifeItemWeapon::eAddonPermanent && bone_id != BI_NONE && !pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1540 | pWeaponVisual->LL_SetBoneVisible(bone_id, TRUE, TRUE); |
| 1541 | } |
| 1542 | } |
| 1543 | /////////////////////////////////////////////////////////////////// |
| 1544 | |
| 1545 | bone_id = pWeaponVisual->LL_BoneID(m_sWpn_silencer_bone); |
| 1546 | |
| 1547 | if (bone_id != BI_NONE) |
| 1548 | { |
| 1549 | if (SilencerAttachable()) |
| 1550 | { |
| 1551 | if (IsSilencerAttached()) |
| 1552 | { |
| 1553 | if (!pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1554 | pWeaponVisual->LL_SetBoneVisible(bone_id, TRUE, TRUE); |
| 1555 | } |
| 1556 | else |
| 1557 | { |
| 1558 | if (pWeaponVisual->LL_GetBoneVisible(bone_id)) |
| 1559 | pWeaponVisual->LL_SetBoneVisible(bone_id, FALSE, TRUE); |
| 1560 | } |
| 1561 | } |
| 1562 | } |
| 1563 | |
| 1564 | if (m_eSilencerStatus == CSE_ALifeItemWeapon::eAddonDisabled && bone_id != BI_NONE && pWeaponVisual->LL_GetBoneVisible(bone_id)) |
no test coverage detected