//------------------------------------------------------------------------ EZoomState CIronSight::GetZoomState() const { if(IsZoomingInOrOut()) { if(IsZoomingIn()) return eZS_ZoomingIn; else return eZS_ZoomingOut; } else { if(IsZoomed()) return eZS_ZoomedIn; else return eZS_ZoomedOut; } }
void CIronSight::LeaveZoom(float time, bool smooth) { if(IsZoomingIn()) { OnZoomedIn(); } ResetTurnOff(); OnLeaveZoom(); SetActorSpeedScale(1.0f); // marcok: please leave goc alone if(!UseAlternativeIronSight() && !g_pGameCVars->g_show_crosshair_tp) m_pWeapon->FadeCrosshair(0.0f, 1.0f, WEAPON_FADECROSSHAIR_ZOOM); else if(UseAlternativeIronSight()) m_pWeapon->FadeCrosshair(1.0f, 1.0f, 0.1f); float oFoV = GetZoomFoVScale(0); float tFoV = GetZoomFoVScale(1); ZoomOut(time, tFoV, oFoV, smooth); bool playAnim = true; if(UseAlternativeIronSight() && m_currentStep==0) playAnim = false; if(playAnim) { m_pWeapon->StopLayer(m_pShared->zoomParams.layer, CItem::eIPAF_Default|CItem::eIPAF_NoBlend); m_pWeapon->PlayAction(m_pShared->actions.zoom_out, 0, false, CItem::eIPAF_Default); } m_pWeapon->SetActionSuffix(""); m_pWeapon->SetDefaultIdleAnimation(eIGS_FirstPerson, g_pItemStrings->idle); m_currentStep = 0; }
void CJaw::Update(SEntityUpdateContext& ctx, int slot) { CWeapon::Update(ctx, slot); if (!IsSelected()) return; if(slot == eIUS_Zooming) { UpdateLaser(ctx); } if (slot != eIUS_General) return; UpdatePendingShot(); if (!IsInputFlagSet(CWeapon::eWeaponAction_Zoom) && IsInputFlagSet(CWeapon::eWeaponAction_Fire) && !IsZoomingIn()) AutoZoomOut(); if (m_controllingRocket && !IsZoomed() && !m_zoomTriggerDown) DoAutoDrop(); if (m_autoDropping) { m_autoDropPendingTimer += ctx.fFrameTime; if (CanAutoDrop()) { m_autoDropping = false; DoAutoDrop(); } } if (m_dropped) { m_dropTime += ctx.fFrameTime; if (m_dropTime > g_hideTimeAfterDrop) { if(gEnv->bServer) { if(gEnv->IsEditor()) Hide(true); else gEnv->pEntitySystem->RemoveEntity(GetEntity()->GetId()); } EnableUpdate(false); } else { RequireUpdate(); } } }
bool CWeapon::OnActionZoom(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if (IsModifying()) { return false; } const bool zoomingIn = IsZoomingIn(); const bool zoomed = IsZoomed(); const bool toggleMode = (g_pGameCVars->cl_zoomToggle > 0); const bool toggleZoomOn = !(zoomingIn || zoomed); const bool buttonPressed = (activationMode == eAAM_OnPress); if (!toggleMode) { // Toggle mode is off, i.e. You have to hold to stay zoomed. if(buttonPressed || activationMode == eAAM_OnHold) { SetInputFlag(eWeaponAction_Zoom); } else { ClearInputFlag(eWeaponAction_Zoom); } } else { // Toggle mode is on. if(buttonPressed) { if (toggleZoomOn) { SetInputFlag(eWeaponAction_Zoom); } else { ClearInputFlag(eWeaponAction_Zoom); } } } //can ironsight while super jumping in MP const bool trumpZoom = !CanZoomInState(); if (!AreAnyItemFlagsSet(eIF_Modifying) && !trumpZoom) { if (!m_fm || !m_fm->IsReloading()) { if (buttonPressed && (!toggleMode || toggleZoomOn)) { if(m_fm && !m_fm->AllowZoom()) { if(IsTargetOn()) { m_fm->Cancel(); } else { return false; } } } else if ((!toggleMode && activationMode == eAAM_OnRelease) || // Not toggle mode and button is released (toggleMode && !toggleZoomOn && buttonPressed)) // Toggle mode, zoom is to be toggled off and button is pressed { StopZoom(actorId); } const bool shouldStartZoom = (!toggleMode && (buttonPressed || activationMode == eAAM_OnHold)) || (toggleMode && toggleZoomOn && buttonPressed); if (m_zm && shouldStartZoom) { const bool zoomingOut = m_zm->IsZoomingInOrOut() && !zoomingIn; if ((!zoomed && !zoomingIn) || zoomingOut) { StartZoom(actorId,1); } if (buttonPressed) { m_snapToTargetTimer = 0.5f; } } } else if( (!toggleMode && activationMode == eAAM_OnRelease) || (toggleMode && !toggleZoomOn && buttonPressed) ) { StopZoom(actorId); } } else if (trumpZoom) { StopZoom(actorId); } return true; }