aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-25 15:52:43 +0300
committerPerttu Ahola <celeron55@gmail.com>2012-03-25 15:52:43 +0300
commitdb0928add3af6da67b1717933e92338f1030d5fb (patch)
tree935d9979e76dae57edb44822368bc9e0e7c10478
parenta9a923e4dab83374a870ba05f4f1c1c449a38c05 (diff)
downloadminetest-db0928add3af6da67b1717933e92338f1030d5fb.tar.gz
minetest-db0928add3af6da67b1717933e92338f1030d5fb.tar.bz2
minetest-db0928add3af6da67b1717933e92338f1030d5fb.zip
Sound loading from memory (by using a quick hack)
-rw-r--r--src/game.cpp25
-rw-r--r--src/sound_openal.cpp16
2 files changed, 13 insertions, 28 deletions
diff --git a/src/game.cpp b/src/game.cpp
index aff1f1984..d6c9910be 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -972,31 +972,6 @@ void the_game(
SoundMaker soundmaker(sound, nodedef);
soundmaker.registerReceiver(&eventmgr);
- // Preload sounds
-#if 0
- sound->loadSound("default_grass_footstep", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_grass_walk1.ogg");
- sound->loadSound("default_grass_footstep", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_grass_walk2.ogg");
- sound->loadSound("default_grass_footstep", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_grass_walk3.ogg");
-
- sound->loadSound("default_dig_crumbly", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_dig_crumbly1.ogg");
- sound->loadSound("default_dig_crumbly", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_dig_crumbly2.ogg");
-
- sound->loadSound("default_dig_cracky", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_dig_cracky1.ogg");
-
- sound->loadSound("default_place_node", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_place_node1.ogg");
- sound->loadSound("default_place_node", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_place_node2.ogg");
- sound->loadSound("default_place_node", porting::path_share + DIR_DELIM
- + "sounds" + DIR_DELIM + "default_place_node3.ogg");
-#endif
-
// Add chat log output for errors to be shown in chat
LogOutputBuffer chat_log_error_buf(LMT_ERROR);
diff --git a/src/sound_openal.cpp b/src/sound_openal.cpp
index f7bce6546..e635e0fa1 100644
--- a/src/sound_openal.cpp
+++ b/src/sound_openal.cpp
@@ -41,6 +41,7 @@ with this program; ifnot, write to the Free Software Foundation, Inc.,
#include <map>
#include <vector>
#include "utility.h" // myrand()
+#include "filesys.h"
#define BUFFER_SIZE 30000
@@ -434,9 +435,18 @@ public:
bool loadSoundData(const std::string &name,
const std::string &filedata)
{
- errorstream<<"OpenALSoundManager: Loading from filedata not"
- " implemented"<<std::endl;
- return false;
+ // The vorbis API sucks; just write it to a file and use vorbisfile
+ // TODO: Actually load it directly from memory
+ std::string basepath = porting::path_user + DIR_DELIM + "cache" +
+ DIR_DELIM + "tmp";
+ std::string path = basepath + DIR_DELIM + "tmp.ogg";
+ verbosestream<<"OpenALSoundManager::loadSoundData(): Writing "
+ <<"temporary file to ["<<path<<"]"<<std::endl;
+ fs::CreateAllDirs(basepath);
+ std::ofstream of(path.c_str(), std::ios::binary);
+ of.write(filedata.c_str(), filedata.size());
+ of.close();
+ return loadSoundFile(name, path);
}
void updateListener(v3f pos, v3f vel, v3f at, v3f up)