Merge with develop
This commit is contained in:
parent
70a06f7941
commit
ae7767123b
10 changed files with 120 additions and 30 deletions
|
@ -1793,8 +1793,15 @@ void registerGlExtensions(CGlExtensions &ext)
|
||||||
|
|
||||||
if (ext.NVXGPUMemoryInfo)
|
if (ext.NVXGPUMemoryInfo)
|
||||||
{
|
{
|
||||||
// GPU_MEMORY_INFO_EVICTION_COUNT_NVX;
|
GLint nEvictionCount = 0;
|
||||||
// GPU_MEMORY_INFO_EVICTED_MEMORY_NVX;
|
#ifdef GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX
|
||||||
|
glGetIntegerv(GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX, &nEvictionCount);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GLint nEvictionMemory = 0;
|
||||||
|
#ifdef GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX
|
||||||
|
glGetIntegerv(GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX, &nEvictionMemory);
|
||||||
|
#endif
|
||||||
|
|
||||||
GLint nDedicatedMemoryInKB = 0;
|
GLint nDedicatedMemoryInKB = 0;
|
||||||
#ifdef GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX
|
#ifdef GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX
|
||||||
|
|
|
@ -123,8 +123,13 @@ bool IAudioDecoder::getInfo(const std::string &filepath, std::string &artist, st
|
||||||
|
|
||||||
/// Get audio/container extensions that are currently supported by the nel sound library.
|
/// Get audio/container extensions that are currently supported by the nel sound library.
|
||||||
void IAudioDecoder::getMusicExtensions(std::vector<std::string> &extensions)
|
void IAudioDecoder::getMusicExtensions(std::vector<std::string> &extensions)
|
||||||
|
{
|
||||||
|
// only add ogg format if not already in extensions list
|
||||||
|
if (std::find(extensions.begin(), extensions.end(), "ogg") == extensions.end())
|
||||||
{
|
{
|
||||||
extensions.push_back("ogg");
|
extensions.push_back("ogg");
|
||||||
|
}
|
||||||
|
|
||||||
// extensions.push_back("wav"); // TODO: Easy.
|
// extensions.push_back("wav"); // TODO: Easy.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
#include "nel/sound/sound_bank.h"
|
#include "nel/sound/sound_bank.h"
|
||||||
#include "nel/sound/group_controller.h"
|
#include "nel/sound/group_controller.h"
|
||||||
#include "nel/sound/containers.h"
|
#include "nel/sound/containers.h"
|
||||||
|
#include "nel/sound/audio_decoder.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
@ -2689,8 +2690,13 @@ bool CAudioMixerUser::getSongTitle(const std::string &filename, std::string &res
|
||||||
{
|
{
|
||||||
std::string artist;
|
std::string artist;
|
||||||
std::string title;
|
std::string title;
|
||||||
if (_SoundDriver->getMusicInfo(filename, artist, title))
|
|
||||||
|
if (!_SoundDriver->getMusicInfo(filename, artist, title))
|
||||||
{
|
{
|
||||||
|
// use 3rd party libraries supported formats
|
||||||
|
IAudioDecoder::getInfo(filename, artist, title);
|
||||||
|
}
|
||||||
|
|
||||||
if (!title.empty())
|
if (!title.empty())
|
||||||
{
|
{
|
||||||
if (!artist.empty()) result = artist + " - " + title;
|
if (!artist.empty()) result = artist + " - " + title;
|
||||||
|
@ -2700,10 +2706,14 @@ bool CAudioMixerUser::getSongTitle(const std::string &filename, std::string &res
|
||||||
{
|
{
|
||||||
result = artist + " - " + CFile::getFilename(filename);
|
result = artist + " - " + CFile::getFilename(filename);
|
||||||
}
|
}
|
||||||
else result = CFile::getFilename(filename);
|
else
|
||||||
|
{
|
||||||
|
result = CFile::getFilename(filename);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
result = "???";
|
result = "???";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2751,9 +2761,16 @@ bool CAudioMixerUser::isEventMusicEnded()
|
||||||
/// Get audio/container extensions that are currently supported by nel or the used driver implementation.
|
/// Get audio/container extensions that are currently supported by nel or the used driver implementation.
|
||||||
void CAudioMixerUser::getMusicExtensions(std::vector<std::string> &extensions)
|
void CAudioMixerUser::getMusicExtensions(std::vector<std::string> &extensions)
|
||||||
{
|
{
|
||||||
|
if (_SoundDriver)
|
||||||
|
{
|
||||||
|
// add file formats supported by driver
|
||||||
_SoundDriver->getMusicExtensions(extensions);
|
_SoundDriver->getMusicExtensions(extensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add 3rd party libraries support file formats
|
||||||
|
IAudioDecoder::getMusicExtensions(extensions);
|
||||||
|
}
|
||||||
|
|
||||||
/// Add a reverb environment
|
/// Add a reverb environment
|
||||||
void CAudioMixerUser::addEnvironment(const std::string &environmentName, const IReverbEffect::CEnvironment &environment)
|
void CAudioMixerUser::addEnvironment(const std::string &environmentName, const IReverbEffect::CEnvironment &environment)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,7 +53,7 @@ using namespace NL3D;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Out a string to the stdout and log.log
|
// Out a string to the stdout and log.log
|
||||||
void outString (string &sText)
|
void outString (const string &sText)
|
||||||
{
|
{
|
||||||
createDebug ();
|
createDebug ();
|
||||||
InfoLog->displayRaw(sText.c_str());
|
InfoLog->displayRaw(sText.c_str());
|
||||||
|
|
|
@ -83,7 +83,7 @@ void CMusicPlayer::play ()
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||||
CViewText *pVT = dynamic_cast<CViewText*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:mp3_player:screen:text"));
|
CViewText *pVT = dynamic_cast<CViewText*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:mp3_player:screen:text"));
|
||||||
if (pVT)
|
if (pVT)
|
||||||
pVT->setText (_Songs[_CurrentSong].Title);
|
pVT->setText (ucstring::makeFromUtf8(_Songs[_CurrentSong].Title));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,6 +181,12 @@ public:
|
||||||
|
|
||||||
if (Params == "play_songs")
|
if (Params == "play_songs")
|
||||||
{
|
{
|
||||||
|
std::vector<std::string> extensions;
|
||||||
|
SoundMngr->getMixer()->getMusicExtensions(extensions);
|
||||||
|
|
||||||
|
// no format supported
|
||||||
|
if (extensions.empty()) return;
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
// Backup the current directory
|
// Backup the current directory
|
||||||
string currentPath = CPath::getCurrentPath ();
|
string currentPath = CPath::getCurrentPath ();
|
||||||
|
@ -195,13 +201,68 @@ public:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
static char szFilter[] =
|
bool oggSupported = false;
|
||||||
"All Supported Files\0*.mp3;*.mp2;*.mp1;*.ogg;*.m3u\0"
|
bool mp3Supported = false;
|
||||||
"MPEG Audio Files (*.mp3;*.mp2;*.mp1)\0*.mp3;*.mp2;*.mp1\0"
|
|
||||||
"Vorbis Files (*.ogg)\0*.ogg\0"
|
for(uint i = 0; i < extensions.size(); ++i)
|
||||||
"Playlist Files (*.m3u)\0*.m3u\0"
|
{
|
||||||
"All Files (*.*)\0*.*\0"
|
if (extensions[i] == "ogg")
|
||||||
"\0";
|
{
|
||||||
|
oggSupported = true;
|
||||||
|
}
|
||||||
|
else if (extensions[i] == "mp3")
|
||||||
|
{
|
||||||
|
mp3Supported = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> filters;
|
||||||
|
|
||||||
|
// supported formats
|
||||||
|
filters.push_back("All Supported Files");
|
||||||
|
|
||||||
|
std::string filter;
|
||||||
|
if (mp3Supported) filter += "*.mp3;*.mp2;*.mp1;";
|
||||||
|
if (oggSupported) filter += "*.ogg;";
|
||||||
|
filter += "*.m3u";
|
||||||
|
|
||||||
|
filters.push_back(filter);
|
||||||
|
|
||||||
|
// mp3 format
|
||||||
|
if (mp3Supported)
|
||||||
|
{
|
||||||
|
filters.push_back("MPEG Audio Files (*.mp3;*.mp2;*.mp1)");
|
||||||
|
filters.push_back("*.mp3;*.mp2;*.mp1");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ogg format
|
||||||
|
if (oggSupported)
|
||||||
|
{
|
||||||
|
filters.push_back("Vorbis Files (*.ogg)");
|
||||||
|
filters.push_back("*.ogg");
|
||||||
|
}
|
||||||
|
|
||||||
|
// playlist
|
||||||
|
filters.push_back("Playlist Files (*.m3u)");
|
||||||
|
filters.push_back("*.m3u");
|
||||||
|
|
||||||
|
// all files
|
||||||
|
filters.push_back("All Files (*.*)");
|
||||||
|
filters.push_back("*.*");
|
||||||
|
|
||||||
|
filters.push_back("");
|
||||||
|
|
||||||
|
static char szFilter[1024] = { '\0' };
|
||||||
|
|
||||||
|
uint offset = 0;
|
||||||
|
|
||||||
|
for(uint i = 0; i < filters.size(); ++i)
|
||||||
|
{
|
||||||
|
strcpy(szFilter + offset, filters[i].c_str());
|
||||||
|
|
||||||
|
// move offset to string length + 1 for \0
|
||||||
|
offset += filters[i].length() + 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Filename buffer
|
// Filename buffer
|
||||||
char buffer[65535];
|
char buffer[65535];
|
||||||
|
|
|
@ -2475,7 +2475,7 @@ void CClientEditionModule::loadScenarioSucceded(const std::string& filename, con
|
||||||
}
|
}
|
||||||
if (CFile::fileExists(filename))
|
if (CFile::fileExists(filename))
|
||||||
{
|
{
|
||||||
CFile::copyFile("save/r2_buffer.dat", filename.c_str());
|
CFile::copyFile("save/r2_buffer.dat", filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ private:
|
||||||
|
|
||||||
struct CIdHash
|
struct CIdHash
|
||||||
{
|
{
|
||||||
enum { bucket_size = 4, min_buckets = 8, };
|
enum { bucket_size = 4, min_buckets = 8 };
|
||||||
size_t operator () (NLMISC::CEntityId id) const { return (uint32)id.getShortId(); }
|
size_t operator () (NLMISC::CEntityId id) const { return (uint32)id.getShortId(); }
|
||||||
bool operator() (const NLMISC::CEntityId& left, const NLMISC::CEntityId& right) { return left < right; }
|
bool operator() (const NLMISC::CEntityId& left, const NLMISC::CEntityId& right) { return left < right; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -71,7 +71,7 @@ typedef uint32 TUid;
|
||||||
*/
|
*/
|
||||||
struct CInetAddressHashMapTraits
|
struct CInetAddressHashMapTraits
|
||||||
{
|
{
|
||||||
enum { bucket_size = 4, min_buckets = 8, };
|
enum { bucket_size = 4, min_buckets = 8 };
|
||||||
inline size_t operator() ( const NLNET::CInetAddress& x ) const
|
inline size_t operator() ( const NLNET::CInetAddress& x ) const
|
||||||
{
|
{
|
||||||
//return x.port();
|
//return x.port();
|
||||||
|
|
|
@ -139,7 +139,7 @@ public:
|
||||||
|
|
||||||
struct CEntityIdHash
|
struct CEntityIdHash
|
||||||
{
|
{
|
||||||
enum { bucket_size = 4, min_buckets = 8, };
|
enum { bucket_size = 4, min_buckets = 8 };
|
||||||
size_t operator () (const NLMISC::CEntityId &id) const { return (uint32)id.getShortId(); }
|
size_t operator () (const NLMISC::CEntityId &id) const { return (uint32)id.getShortId(); }
|
||||||
size_t operator () (const NLMISC::CEntityId &left, const NLMISC::CEntityId &right) const { return left < right; }
|
size_t operator () (const NLMISC::CEntityId &left, const NLMISC::CEntityId &right) const { return left < right; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -490,7 +490,7 @@ typedef std::vector<CObjectIndex> TIndexList;
|
||||||
|
|
||||||
struct CColumnIndexHashMapTraits
|
struct CColumnIndexHashMapTraits
|
||||||
{
|
{
|
||||||
enum { bucket_size = 4, min_buckets = 8, };
|
enum { bucket_size = 4, min_buckets = 8 };
|
||||||
CColumnIndexHashMapTraits() { }
|
CColumnIndexHashMapTraits() { }
|
||||||
size_t operator() (const CColumnIndex &id) const
|
size_t operator() (const CColumnIndex &id) const
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue