| 415 | //----------------------------------------------------------------------------- |
| 416 | |
| 417 | bool SFXSystem::createDevice( const String& providerName, const String& deviceName, bool useHardware, S32 maxBuffers, bool changeDevice ) |
| 418 | { |
| 419 | // Make sure we don't have a device already. |
| 420 | |
| 421 | if( mDevice && !changeDevice ) |
| 422 | return false; |
| 423 | |
| 424 | // Lookup the provider. |
| 425 | |
| 426 | SFXProvider* provider = SFXProvider::findProvider( providerName ); |
| 427 | if( !provider ) |
| 428 | return false; |
| 429 | |
| 430 | // If we have already created this device and are using it then no need to do anything. |
| 431 | |
| 432 | if( mDevice |
| 433 | && providerName.equal( mDevice->getProvider()->getName(), String::NoCase ) |
| 434 | && deviceName.equal( mDevice->getName(), String::NoCase ) |
| 435 | && useHardware == mDevice->getUseHardware() ) |
| 436 | return true; |
| 437 | |
| 438 | // If we have an existing device remove it. |
| 439 | |
| 440 | if( mDevice ) |
| 441 | deleteDevice(); |
| 442 | |
| 443 | // Create the new device.. |
| 444 | |
| 445 | mDevice = provider->createDevice( deviceName, useHardware, maxBuffers ); |
| 446 | if( !mDevice ) |
| 447 | { |
| 448 | Con::errorf( "SFXSystem::createDevice - failed creating %s device '%s'", providerName.c_str(), deviceName.c_str() ); |
| 449 | return false; |
| 450 | } |
| 451 | |
| 452 | // Print capabilities. |
| 453 | |
| 454 | Con::printf( "SFXSystem::createDevice - created %s device '%s'", providerName.c_str(), deviceName.c_str() ); |
| 455 | if( mDevice->getCaps() & SFXDevice::CAPS_Reverb ) |
| 456 | Con::printf( " CAPS_Reverb" ); |
| 457 | if( mDevice->getCaps() & SFXDevice::CAPS_VoiceManagement ) |
| 458 | Con::printf( " CAPS_VoiceManagement" ); |
| 459 | if( mDevice->getCaps() & SFXDevice::CAPS_Occlusion ) |
| 460 | Con::printf( "\tCAPS_Occlusion" ); |
| 461 | if( mDevice->getCaps() & SFXDevice::CAPS_MultiListener ) |
| 462 | Con::printf( "\tCAPS_MultiListener" ); |
| 463 | |
| 464 | // Set defaults. |
| 465 | |
| 466 | mDevice->setNumListeners( getNumListeners() ); |
| 467 | mDevice->setDistanceModel( mDistanceModel ); |
| 468 | mDevice->setDopplerFactor( mDopplerFactor ); |
| 469 | mDevice->setRolloffFactor( mRolloffFactor ); |
| 470 | //OpenAL requires slots for effects, this creates an empty function |
| 471 | //that will run when a sfxdevice is created. |
| 472 | mDevice->openSlots(); |
| 473 | mDevice->setReverb( mReverb ); |
| 474 |
no test coverage detected