Example #1
0
void CJaw::StartFire()
{
	if (!CanFire())
		return;

	CActor* pOwner = GetOwnerActor();
#if (USE_DEDICATED_INPUT)
	if (!pOwner || (!pOwner->IsPlayer() || (gEnv->bMultiplayer && strcmp(pOwner->GetEntityClassName(), "DummyPlayer") == 0)))
#else
	if (!pOwner || !pOwner->IsPlayer())
#endif
	{
		BaseClass::StartFire();
		return;
	}

	if (m_controllingRocket)
		return;

	CPlayer *ownerPlayer = GetOwnerPlayer();
	if (ownerPlayer)
	{
		if(ownerPlayer->IsClient() && ownerPlayer->IsWeaponUnderWater())
		{
			return;
		}

		ownerPlayer->StateMachineHandleEventMovement( PLAYER_EVENT_FORCEEXITSLIDE );
	}

	if (!m_firePending && m_zm && g_pGameCVars->cl_zoomToggle > 0)
	{
		m_zoomAlreadyToggled = (m_zm->IsZoomingIn() || m_zm->IsZoomed());
	}
	else
	{
		m_zoomAlreadyToggled = false;
	}

	if(!IsZoomingInOrOut())
	{
		if (m_zm)
			m_zm->ZoomIn();
	}

	m_fireTriggerDown = true;
	m_firePending = true;
}