summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client.cpp24
-rw-r--r--src/content_cao.cpp13
-rw-r--r--src/server.cpp2
3 files changed, 26 insertions, 13 deletions
diff --git a/src/client.cpp b/src/client.cpp
index 504297a6d..7f5421747 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -41,6 +41,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "sound.h"
#include "util/string.h"
#include "hex.h"
+#include "IMeshCache.h"
static std::string getMediaCacheDir()
{
@@ -820,8 +821,8 @@ bool Client::loadMedia(const std::string &data, const std::string &filename)
name = removeStringEnd(filename, image_ext);
if(name != "")
{
- verbosestream<<"Client: Attempting to load image "
- <<"file \""<<filename<<"\""<<std::endl;
+ verbosestream<<"Client: Storing image into Irrlicht: "
+ <<"\""<<filename<<"\""<<std::endl;
io::IFileSystem *irrfs = m_device->getFileSystem();
video::IVideoDriver *vdrv = m_device->getVideoDriver();
@@ -854,28 +855,31 @@ bool Client::loadMedia(const std::string &data, const std::string &filename)
name = removeStringEnd(filename, sound_ext);
if(name != "")
{
- verbosestream<<"Client: Attempting to load sound "
- <<"file \""<<filename<<"\""<<std::endl;
+ verbosestream<<"Client: Storing sound into Irrlicht: "
+ <<"\""<<filename<<"\""<<std::endl;
m_sound->loadSoundData(name, data);
return true;
}
const char *model_ext[] = {
- ".b3d", ".md2", ".obj",
+ ".x", ".b3d", ".md2", ".obj",
NULL
};
name = removeStringEnd(filename, model_ext);
if(name != "")
{
verbosestream<<"Client: Storing model into Irrlicht: "
- <<"file \""<<filename<<"\""<<std::endl;
+ <<"\""<<filename<<"\""<<std::endl;
io::IFileSystem *irrfs = m_device->getFileSystem();
-
- // Create an irrlicht memory file
- io::IReadFile *rfile = irrfs->createMemoryReadFile(*data_rw, data_rw.getSize(), filename.c_str(), true);
+ io::IReadFile *rfile = irrfs->createMemoryReadFile(
+ *data_rw, data_rw.getSize(), filename.c_str());
assert(rfile);
- //rfile->drop();
+
+ scene::ISceneManager *smgr = m_device->getSceneManager();
+ scene::IAnimatedMesh *mesh = smgr->getMesh(rfile);
+ smgr->getMeshCache()->addMesh(filename.c_str(), mesh);
+
return true;
}
diff --git a/src/content_cao.cpp b/src/content_cao.cpp
index b3c0370b8..cd822cb33 100644
--- a/src/content_cao.cpp
+++ b/src/content_cao.cpp
@@ -979,6 +979,8 @@ public:
updateTexturePos();
+ updateAnimations();
+
if(m_reset_textures_timer >= 0){
m_reset_textures_timer -= dtime;
if(m_reset_textures_timer <= 0){
@@ -1066,8 +1068,7 @@ public:
if(texturestring == "")
continue; // Empty texture string means don't modify that material
texturestring += mod;
- video::IVideoDriver* driver = m_animated_meshnode->getSceneManager()->getVideoDriver();
- video::ITexture* texture = driver->getTexture(texturestring.c_str());
+ video::ITexture* texture = tsrc->getTextureRaw(texturestring);
if(!texture)
{
errorstream<<"GenericCAO::updateTextures(): Could not load texture "<<texturestring<<std::endl;
@@ -1135,6 +1136,14 @@ public:
}
}
+ void updateAnimations()
+ {
+ if(!m_animated_meshnode)
+ return;
+
+ m_animated_meshnode->setFrameLoop(0, 50);
+ }
+
void processMessage(const std::string &data)
{
//infostream<<"GenericCAO: Got message"<<std::endl;
diff --git a/src/server.cpp b/src/server.cpp
index 92fd567e5..930938ecb 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -4055,7 +4055,7 @@ void Server::fillMediaCache()
".png", ".jpg", ".bmp", ".tga",
".pcx", ".ppm", ".psd", ".wal", ".rgb",
".ogg",
- ".b3d", ".md2", ".obj",
+ ".x", ".b3d", ".md2", ".obj",
NULL
};
if(removeStringEnd(filename, supported_ext) == ""){