/** * CSoundUtilities * $Id: sound_utilities.cpp 2247 2010-02-15 21:16:38Z kaetemi $ * \file sound_utilities.cpp * \brief CSoundUtilities * \date 2010-02-06 12:26GMT * \author Jan Boon (Kaetemi) */ /* * Copyright (C) 2010 by authors * * This file is part of NEL QT. * NEL QT is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * NEL QT is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NEL QT; see the file COPYING. If not, see * . */ #include #include "sound_utilities.h" // STL includes // NeL includes #include #include #include #include #include #include #include // Project includes #include "configuration.h" #include "internationalization.h" #include "graphics_viewport.h" using namespace std; using namespace NLMISC; using namespace NLSOUND; namespace NLQT { CSoundUtilities::CSoundUtilities() : m_Configuration(NULL), m_Internationalization(NULL), m_GraphicsViewport(NULL), //m_LandscapeUtilities(NULL), //m_PacsUtilities(NULL), m_AudioMixer(NULL), m_SoundAnimManager(NULL) { } CSoundUtilities::~CSoundUtilities() { // release(); } void CSoundUtilities::init(CConfiguration *configuration, CInternationalization *internationalization) { //H_AUTO2 nldebug("CSoundUtilities::init"); // copy parameters m_Configuration = configuration; m_Internationalization = internationalization; // check stuff we need nlassert(m_Configuration); nlassert(m_Internationalization); // create audiomixer NL3D::UParticleSystemSound::setPSSound(NULL); nlassert(!m_AudioMixer); m_AudioMixer = UAudioMixer::createAudioMixer(); nlassert(m_AudioMixer); // init audiomixer std::vector devices; m_AudioMixer->initDriver(m_Configuration->getValue("SoundDriver", string("Auto"))); m_AudioMixer->getDevices(devices); UAudioMixer::CInitInfo audioInfo; audioInfo.AutoLoadSample = m_Configuration->getValue("SoundAutoLoadSample", true); audioInfo.EnableOccludeObstruct = m_Configuration->getValue("SoundEnableOccludeObstruct", true); audioInfo.EnableReverb = m_Configuration->getValue("SoundEnableReverb", true); audioInfo.ManualRolloff = m_Configuration->getValue("SoundManualRolloff", true); audioInfo.ForceSoftware = m_Configuration->getValue("SoundForceSoftware", false); audioInfo.MaxTrack = m_Configuration->getValue("SoundMaxTrack", 48); audioInfo.UseADPCM = m_Configuration->getValue("SoundUseADPCM", false); m_AudioMixer->initDevice(m_Configuration->getValue("SoundDevice", string("")), audioInfo, NULL); m_AudioMixer->setLowWaterMark(1); // config callbacks // ... // sound anim manager nlassert(!m_SoundAnimManager); m_SoundAnimManager = new CSoundAnimManager(m_AudioMixer); nlassert(m_SoundAnimManager); // temp listener pos m_AudioMixer->setListenerPos(CVector(0.0f, 0.0f, 0.0f)); // init sources // ... } void CSoundUtilities::release() { //H_AUTO2 nldebug("CSoundUtilities::release"); // release sources // ... // release sound anim manager if (m_SoundAnimManager) { delete m_SoundAnimManager; m_SoundAnimManager = NULL; } else nlwarning("!m_SoundAnimManager"); // drop config callbacks // ... // release audiomixer (todo: +sources!!!) if (m_AudioMixer) { delete m_AudioMixer; m_AudioMixer = NULL; } else nlwarning("!m_AudioMixer"); // reset parameters m_Configuration = NULL; m_Internationalization = NULL; } void CSoundUtilities::updateSound() { m_AudioMixer->update(); } void CSoundUtilities::initGraphics(CGraphicsViewport *graphicsViewport) { //H_AUTO2 nldebug("CSoundUtilities::initGraphics"); // copy parameters m_GraphicsViewport = graphicsViewport; // check stuff we need nlassert(m_GraphicsViewport); // set particle system sound NL3D::UParticleSystemSound::setPSSound(m_AudioMixer); // ... // todo: displayers for all the test sound sources :) } void CSoundUtilities::releaseGraphics() { //H_AUTO2 nldebug("CSoundUtilities::releaseGraphics"); // .. // clear particle system sound NL3D::UParticleSystemSound::setPSSound(NULL); // reset parameters m_GraphicsViewport = NULL; } } /* namespace NLQT */ /* end of file */