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(); } }
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); }