Gestion des sons dans un SoundManager
Bonjour à tous :)
Je code actuellement un SoundManager avec la lib FMOD et j'aurai besoin de votre avis. Ma classe SoundManager, de type singleton, possède en propriété privée un conteneur map pour la gestion des sons :
Code:
1 2 3 4 5 6 7 8
|
typedef std::map<const std::string&, FSOUND_STREAM*> m_StreamMap;
//Conteneur des sons
m_StreamMap m_Stream;
//Itérateur pour le parcours du conteneur
m_StreamMap::iterator m_StreamIter; |
Donc ma classe possède différentes méthodes pour gérer les sons
Code:
1 2 3 4 5 6
|
void RegisterSound(const std::string &strSoundPath, const std::string strName);
void PlaySound(const std::string &strName);
... |
Donc comme vous pouvez le voir l'utilisateur enregistre les sons et les appelle grâce à un nom de son, comme par exemple
Code:
1 2 3 4
|
pSoundManager->RegisterSound("Data/Sound/Stream/Hold On.mp3", "Hold On");
pSoundManager->PlaySound("Hold On"); |
L'utilisateur peut donc stocker autant de fichier sons qu'il veut (en étant quand même raisonnable^^)
Voici donc mes 2 questions :
- est-il judicieux d'utiliser un conteneur map pour la gestion des son ou me conseillez-vous un autre type de conteneur ?
- est ce que rechercher un élément d'un conteneur map grâce à une clé de type std::string est efficace ou au contraire est-elle source de baisse de performance ? (j'ai lui sur un forum que pour accéder aux éléments d'un conteneur map par une clé de type std::string, on doit comparer chaque lettre de la chaine passée en paramètre avec celle du conteneur) Ainsi dans l'exemple précédent :
Code:
pSoundManager->PlaySound("Hol On");
le programme devra comparer chaque lettre de "Hold On" avec la clé cible pour lire le son
Voila j'espère avoir été assez clair et précis.
Merci d'avance :D