void CView::CreateAudioListener() { if (m_pAudioListener == nullptr) { SEntitySpawnParams oEntitySpawnParams; oEntitySpawnParams.sName = "AudioListener"; oEntitySpawnParams.pClass = gEnv->pEntitySystem->GetClassRegistry()->FindClass("AudioListener"); m_pAudioListener = gEnv->pEntitySystem->SpawnEntity(oEntitySpawnParams, true); if (m_pAudioListener != nullptr) { // We don't want the audio listener to serialize as the entity gets completely removed and recreated during save/load! m_pAudioListener->SetFlags(m_pAudioListener->GetFlags() | (ENTITY_FLAG_TRIGGER_AREAS | ENTITY_FLAG_NO_SAVE)); m_pAudioListener->SetFlagsExtended(m_pAudioListener->GetFlagsExtended() | ENTITY_FLAG_EXTENDED_AUDIO_LISTENER); gEnv->pEntitySystem->AddEntityEventListener(m_pAudioListener->GetId(), ENTITY_EVENT_DONE, this); CryFixedStringT<64> sTemp; sTemp.Format("AudioListener(%d)", static_cast<int>(m_pAudioListener->GetId())); m_pAudioListener->SetName(sTemp.c_str()); IEntityAudioProxyPtr pIEntityAudioProxy = crycomponent_cast<IEntityAudioProxyPtr>(m_pAudioListener->CreateProxy(ENTITY_PROXY_AUDIO)); CRY_ASSERT(pIEntityAudioProxy.get()); } else { CryFatalError("<Audio>: Audio listener creation failed in CView::CreateAudioListener!"); } } else { m_pAudioListener->SetFlagsExtended(m_pAudioListener->GetFlagsExtended() | ENTITY_FLAG_EXTENDED_AUDIO_LISTENER); m_pAudioListener->InvalidateTM(ENTITY_XFORM_POS); } }
void CView::CreateAudioListener() { if (m_pAudioListener == NULL) { SEntitySpawnParams oEntitySpawnParams; oEntitySpawnParams.sName = "SoundListener"; oEntitySpawnParams.pClass = gEnv->pEntitySystem->GetClassRegistry()->FindClass("SoundListener"); m_pAudioListener = gEnv->pEntitySystem->SpawnEntity(oEntitySpawnParams, true); if (m_pAudioListener != NULL) { m_pAudioListener->SetFlagsExtended(m_pAudioListener->GetFlagsExtended() | ENTITY_FLAG_EXTENDED_AUDIO_LISTENER); gEnv->pEntitySystem->AddEntityEventListener(m_pAudioListener->GetId(), ENTITY_EVENT_DONE, this); CryFixedStringT<64> sTemp; sTemp.Format("SoundListener(%d)", static_cast<int>(m_pAudioListener->GetId())); m_pAudioListener->SetName(sTemp.c_str()); IEntityAudioProxyPtr pIEntityAudioProxy = crycomponent_cast<IEntityAudioProxyPtr>(m_pAudioListener->CreateProxy(ENTITY_PROXY_AUDIO)); CRY_ASSERT(pIEntityAudioProxy.get()); } else { CryFatalError("<Sound>: audio listener creation failed in CView ctor!"); } } }
void CVehicleSeatActionSound::StopTrigger() { if (m_pSeat) m_pSeat->ChangedNetworkState(CVehicle::ASPECT_SEAT_ACTION); if (m_nAudioControlIDStop != INVALID_AUDIO_CONTROL_ID) { ExecuteTrigger(m_nAudioControlIDStop); } else if(m_nAudioControlIDStart != INVALID_AUDIO_CONTROL_ID) { IEntityAudioProxyPtr pIEntityAudioProxy = crycomponent_cast<IEntityAudioProxyPtr>(m_pVehicle->GetEntity()->CreateProxy(ENTITY_PROXY_AUDIO)); assert(pIEntityAudioProxy.get()); pIEntityAudioProxy->StopTrigger(m_nAudioControlIDStart); } m_enabled = false; }
void CBoidObject::ExecuteTrigger(int nIndex) { if ((nIndex >= 0) && (nIndex < (int)m_flock->m_bc.audio.size())) { const TAudioControlID id = m_flock->m_bc.audio[nIndex]; if (id != INVALID_AUDIO_CONTROL_ID) { IEntity* pEntity = gEnv->pEntitySystem->GetEntity(m_entity); if (pEntity) { IEntityAudioProxyPtr audioProxy = crycomponent_cast<IEntityAudioProxyPtr>(pEntity->CreateProxy(ENTITY_PROXY_AUDIO)); if (audioProxy.get()) { audioProxy->ExecuteTrigger(id, eLSM_None); } } } } }
void CVehicleSeatActionSound::ExecuteTrigger(const TAudioControlID& controlID) { if (controlID == INVALID_AUDIO_CONTROL_ID) return; if (m_pSeat) m_pSeat->ChangedNetworkState(CVehicle::ASPECT_SEAT_ACTION); IEntityAudioProxyPtr pIEntityAudioProxy = crycomponent_cast<IEntityAudioProxyPtr>(m_pVehicle->GetEntity()->CreateProxy(ENTITY_PROXY_AUDIO)); assert(pIEntityAudioProxy.get()); pIEntityAudioProxy->ExecuteTrigger(controlID, eLSM_None); // Report the AI system about the vehicle movement sound. if (!gEnv->bMultiplayer && gEnv->pAISystem) { Vec3 pos = m_pHelper->GetVehicleSpaceTranslation(); SAIStimulus stim(AISTIM_SOUND, AISOUND_MOVEMENT_LOUD, m_pVehicle->GetEntityId(), 0, pos, ZERO, 200.0f); gEnv->pAISystem->RegisterStimulus(stim); } m_enabled = true; }