/// <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(); }
/// <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; }
void Plane::setListenerPosition(Vector3 p){ BASS_3DVECTOR sposb = BASS_3DVECTOR(p.x,p.y,p.z); BASS_Set3DPosition(&sposb,NULL,NULL,NULL); }