예제 #1
0
파일: View.cpp 프로젝트: joewan/pycmake
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);
	}
}
예제 #2
0
파일: View.cpp 프로젝트: aronarts/FireNET
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;
}
예제 #4
0
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;
}