예제 #1
0
/// <summary>
///  Actualiza la posición del listener.
/// </summary>
void CSoundManager::UpdateListenerPosition(Vect3f _Listener)
{
	if (!m_pListener)
		return;

	bool result = false;
 
	//Vect3f posCamera	= m_pListener->GetPosition();
	//Vect3f posCamera	= g_PhysXController->GetPosition();
  // dejo el nombre de "posCamera" porque asi lo tenia Javier, pero en realidad paso como paramero la posicion del controller del player
  // TODO: (Andres) finalmente, creo que se podria pasar como parametro un object3D para no tener que calcular los vectores, front y top. (o algo asi)
  Vect3f posCamera = _Listener;


	// 1. Convert Vect3f& Pos to BASS_3DVECTOR
	BASS_3DVECTOR pos;
 

	pos.x = posCamera.x;
	pos.y = posCamera.y;
	pos.z = posCamera.z;

	BASS_3DVECTOR top;
	top.x = 0;
	top.y = 1;
	top.z = 0;
	
	//top += pos; 
	top.x = top.x +	pos.x;
	//top.y = top.y +	pos.y;
	top.y = top.y +	1;
	top.z = top.z +	pos.z;
 
	BASS_3DVECTOR front;
 
	front.x = cos(m_pListener->GetYaw());
	front.y = 0;
	front.z = sin(m_pListener->GetYaw());

	//front += pos;
	front.x = front.x +	pos.x;
	front.y = front.y +	pos.y;
	front.z = front.z +	pos.z;
 
	// 2. Set listener's new position
	result = BASS_Set3DPosition(&pos,NULL, &front, &top)?true:false;
	BASS_Apply3D();
}
예제 #2
0
/// <summary>
/// Inicializa los canales de sonido.
/// </summary>
///<param name="initSoundXML">Ubicación del fichero xml.</param>
///<returns>Boleano que representa si la operación se realizó exitosamente.</returns>
bool CSoundManager::Init (const std::string& initSoundXML)
{
	m_bIsOk = BASS_Init(1, 44100, BASS_DEVICE_3D, 0, NULL) ? true : false;
 

	if (m_bIsOk == true)
	{
		// Parsea el xml
		m_bIsOk = Load(initSoundXML);

		if (m_bIsOk == true)
		{
			m_bIsOk = BASS_Set3DPosition(NULL, NULL, NULL, NULL) ? true : false; 
				
			if (m_bIsOk == true)
			{
				m_bIsOk = BASS_Set3DFactors(1.0, 1.0, 1.0) ? true : false;
				BASS_Apply3D();

				if (m_bIsOk == true)
				{					
					// Asigna el master volume. Usar 1 para volumen máximo
					//m_bIsOk = BASS_SetVolume(1.0f) ? true : false;

					if (m_bIsOk == true)
					{
						m_bIsOk = BASS_Start() ? true : false;

						if (m_bIsOk == true)
						{
							std::string msg_info = "CSoundManager::Init: Sonidos cargados exitosamente.";
							LOGGER->AddNewLog(ELL_INFORMATION, msg_info.c_str());
							return m_bIsOk;
						}
					}
				}
			}
		}
	}
	std::string msg_error = "CSoundManager::Init: Error cargando sonidos.";
	LOGGER->AddNewLog(ELL_INFORMATION, msg_error.c_str());
	return m_bIsOk;
}
예제 #3
0
void Plane::setListenerPosition(Vector3 p){
	BASS_3DVECTOR sposb = BASS_3DVECTOR(p.x,p.y,p.z);
	BASS_Set3DPosition(&sposb,NULL,NULL,NULL);
}