void CJaw::HideRocket() { HideCharacterAttachment(eIGS_FirstPerson, "rocket", true); HideCharacterAttachment(eIGS_ThirdPerson, "rocket", true); m_auxSlotUsed = true; CActor* pOwnerActor = GetOwnerActor(); if (pOwnerActor && pOwnerActor->IsThirdPerson()) { DrawSlot(eIGS_ThirdPerson, false); DrawSlot(eIGS_ThirdPersonAux, true); } }
//------------------------------------------------------------------------ void CWeapon::OnEndReload(EntityId shooterId, IEntityClass* pAmmoType) { BROADCAST_WEAPON_EVENT(OnEndReload, (this, shooterId, pAmmoType)); if (CActor *pActor = GetOwnerActor()) { if (IAIObject *pAIObject=pActor->GetEntity()->GetAI()) if (gEnv->pAISystem) gEnv->pAISystem->SendSignal( SIGNALFILTER_SENDER, 1, "OnReloadDone", pAIObject); } if (m_doingMagazineSwap) { const char* magazineAttachment = m_weaponsharedparams->reloadMagazineParams.magazineAttachment.c_str(); HideCharacterAttachment(eIGS_FirstPerson, magazineAttachment, false); HideCharacterAttachment(eIGS_ThirdPerson, magazineAttachment, false); m_doingMagazineSwap = false; } }
//--------------------------------------------------------------------------- void CWeapon::AnimationEvent(ICharacterInstance *pCharacter, const AnimEventInstance &event) { const SReloadMagazineParams& magazineParams = m_weaponsharedparams->reloadMagazineParams; if (magazineParams.magazineEventCRC32 == event.m_EventNameLowercaseCRC32) { int slot = (GetEntity()->GetCharacter(eIGS_FirstPerson) == pCharacter) ? eIGS_FirstPerson : eIGS_ThirdPerson; //Spawn effect only once (in FP the event might come twice, one for FP, one for shadow character) if (!m_doingMagazineSwap) { const char* helperBone = (event.m_BonePathName && event.m_BonePathName[0]) ? event.m_BonePathName : ""; if (event.m_CustomParameter && event.m_CustomParameter[0]) { EntityEffects::SpawnParticleWithEntity(GetEntity(), slot, event.m_CustomParameter, helperBone, EntityEffects::SEffectSpawnParams(ZERO)); } m_doingMagazineSwap = true; } HideCharacterAttachment(slot, magazineParams.magazineAttachment.c_str(), true); } }