void CWeaponOffsetInput::AddOffset(Vec3 pos, Ang3 ang)
{
	if (m_hand == EHand_Right)
		AddRightDebugOffset(SWeaponOffset(pos, ang));
	else if (m_hand == EHand_Left)
		AddLeftDebugOffset(SWeaponOffset(pos, ang));
}
void CProceduralWeaponAnimation::UpdateDebugState()
{
	if ((g_pGameCVars->g_debugWeaponOffset==2) != m_debugInput)
	{
		IActionMapManager* pAMMgr = gEnv->pGame->GetIGameFramework()->GetIActionMapManager();

		if (g_pGameCVars->g_debugWeaponOffset == 2)
		{
			if (gEnv->pInput)
				gEnv->pInput->AddEventListener(m_weaponOffsetInput.get());
			if (pAMMgr)
				pAMMgr->Enable(false);
			m_weaponOffsetInput->SetRightDebugOffset(SWeaponOffset(m_rightOffset));
			m_weaponOffsetInput->SetLeftDebugOffset(SWeaponOffset(m_leftOffset));
		}
		else
		{
			if (gEnv->pInput)
				gEnv->pInput->RemoveEventListener(m_weaponOffsetInput.get());
			if (pAMMgr)
				pAMMgr->Enable(true);
		}
		m_debugInput = (g_pGameCVars->g_debugWeaponOffset == 2);
	}

	if (g_pGameCVars->g_debugWeaponOffset)
	{
		DrawCrossHairGuideLines();
	}
	if (m_debugInput)
	{
		m_weaponOffsetInput->Update();
	}
}
示例#3
0
void CWeaponOffsetStack::PopOffset(TOffsetId offsetId, float blendTime)
{
    TOffsetId lastActiveId = m_weaponOffsetLayers.empty() ? -1 : m_weaponOffsetLayers.begin()->m_id;

    TWeaponOffsetLayers::iterator it = m_weaponOffsetLayers.begin();
    for (; it != m_weaponOffsetLayers.end(); ++it)
        {
            if (it->m_id == offsetId)
                break;
        }
    if (it != m_weaponOffsetLayers.end())
        m_weaponOffsetLayers.erase(it);

    if (m_weaponOffsetLayers.empty())
        m_state.SetState(SWeaponOffset(ZERO), blendTime);
    else if(m_weaponOffsetLayers.begin()->m_id != lastActiveId)
        m_state.SetState(m_weaponOffsetLayers[0].m_offset, blendTime);
}