mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-06-02 02:56:37 +00:00
fix a few issues and add more info
more info for the device is printed out, along with hrtf detection fix levelinfo sending the distance model
This commit is contained in:
parent
be872a26b4
commit
345ce3f1d3
6 changed files with 565 additions and 268 deletions
|
|
@ -305,60 +305,60 @@ SFXProvider* SFXSystem::getProviderByTypeAndName(SFXProviderType type, const cha
|
|||
|
||||
SFXProvider* SFXSystem::getBestProviderChoice()
|
||||
{
|
||||
const String provider = Con::getVariable("$pref::SFX::provider");
|
||||
const String device = Con::getVariable("$pref::SFX::device");
|
||||
const String preferredProvider = Con::getVariable("$pref::SFX::provider");
|
||||
const String preferredDevice = Con::getVariable("$pref::SFX::device");
|
||||
|
||||
// Resolve provider type.
|
||||
SFXProviderType providerType = OpenAL;
|
||||
|
||||
if (provider.isEmpty() || device.isEmpty())
|
||||
if (!preferredProvider.isEmpty())
|
||||
{
|
||||
for (U32 i = 0; i < smProviders.size(); i++)
|
||||
{
|
||||
if (smProviders[i]->mType == OpenAL)
|
||||
{
|
||||
if (smProviders[i]->mDefault)
|
||||
return smProviders[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
S32 ret = -1;
|
||||
for (U32 i = 0; i < SFXProviderType_Count; i++)
|
||||
{
|
||||
if (!dStrcmp(getProviderNameFromType((SFXProviderType)i), provider))
|
||||
if (!dStrcmp(getProviderNameFromType((SFXProviderType)i),preferredProvider))
|
||||
{
|
||||
ret = i;
|
||||
providerType = (SFXProviderType)i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == -1)
|
||||
providerType = OpenAL;
|
||||
}
|
||||
|
||||
U32 i = 0;
|
||||
for (i = 0; i < smProviders.size(); i++)
|
||||
if (!preferredDevice.isEmpty())
|
||||
{
|
||||
if (smProviders[i]->mType == providerType)
|
||||
for (U32 i = 0; i < smProviders.size(); i++)
|
||||
{
|
||||
if (String::compare(smProviders[i]->getName(), device.c_str()) == 0)
|
||||
SFXProvider* provider = smProviders[i];
|
||||
|
||||
if (provider->mType != providerType)
|
||||
continue;
|
||||
|
||||
if (String::compare(provider->getName(), preferredDevice.c_str()) == 0)
|
||||
{
|
||||
return smProviders[i];
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < smProviders.size(); i++)
|
||||
for (U32 i = 0; i < smProviders.size(); i++)
|
||||
{
|
||||
if (smProviders[i]->mType == providerType)
|
||||
{
|
||||
if (smProviders[i]->mDefault)
|
||||
return smProviders[i];
|
||||
}
|
||||
SFXProvider* provider = smProviders[i];
|
||||
|
||||
if (provider->mType != providerType)
|
||||
continue;
|
||||
|
||||
if (provider->mDefault)
|
||||
return provider;
|
||||
}
|
||||
|
||||
|
||||
for (U32 i = 0; i < smProviders.size(); i++)
|
||||
{
|
||||
SFXProvider* provider = smProviders[i];
|
||||
|
||||
if (provider->mType != providerType)
|
||||
continue;
|
||||
|
||||
return provider;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -649,28 +649,11 @@ bool SFXSystem::createDevice(SFXProvider* provider)
|
|||
Con::errorf( "SFXSystem::createDevice - failed creating device '%s'", provider->getName());
|
||||
return false;
|
||||
}
|
||||
mDevice->setProvider(*provider);
|
||||
|
||||
// Print capabilities.
|
||||
Con::printf( "\nSFXSystem::createDevice - created device '%s'", provider->getName());
|
||||
Con::printf("| Device Update Interval: %d ms", SFXDevice::smUpdateInterval);
|
||||
Con::printf("| Device Sample rate: %d Hz", SFXDevice::smDeviceFrequency);
|
||||
Con::printf("| Device Bitrate: %d", SFXDevice::smDeviceBitrate);
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_Reverb)
|
||||
Con::printf("| CAPS_Reverb");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_VoiceManagement)
|
||||
Con::printf("| CAPS_VoiceManagement");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_Occlusion)
|
||||
Con::printf("| CAPS_Occlusion");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_MultiListener)
|
||||
Con::printf("| CAPS_MultiListener");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_HRTF)
|
||||
Con::printf("| CAPS_HRTF");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_Float32)
|
||||
Con::printf("| CAPS_Float32");
|
||||
if (mDevice->getCaps() & SFXDevice::CAPS_MonoStereo)
|
||||
Con::printf("| CAPS_MonoStereo");
|
||||
|
||||
mDevice->setProvider(provider);
|
||||
|
||||
// device is responsible for printing its information.
|
||||
|
||||
// Set defaults.
|
||||
mDevice->setNumListeners( getNumListeners() );
|
||||
mDevice->setDistanceModel( mDistanceModel );
|
||||
|
|
@ -696,8 +679,8 @@ String SFXSystem::getDeviceInfoString()
|
|||
return String();
|
||||
|
||||
return String::ToString( "%s\t%s\t%s\t%d\t%d",
|
||||
getProviderNameFromType(mDevice->getProvider().mType),
|
||||
mDevice->getProvider().getName(),
|
||||
getProviderNameFromType(mDevice->getProvider()->mType),
|
||||
mDevice->getProvider()->getName(),
|
||||
mDevice->getUseHardware() ? "1" : "0",
|
||||
mDevice->getMaxBuffers(),
|
||||
mDevice->getCaps() );
|
||||
|
|
@ -1017,8 +1000,10 @@ void SFXSystem::_update()
|
|||
}
|
||||
|
||||
// If we have a device then update it.
|
||||
if( mDevice )
|
||||
if (mDevice)
|
||||
{
|
||||
mDevice->update();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue