From: Perttu Ahola Date: Mon, 14 Nov 2011 20:07:42 +0000 (+0200) Subject: Make possible and do update textures in node definitions after late texture atlas... X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=1afed48a2c90548e0b420c9c3d7d4af9e0734d1d;p=zefram%2Fminetest%2Fminetest_engine.git Make possible and do update textures in node definitions after late texture atlas making --- diff --git a/src/client.cpp b/src/client.cpp index d0e5cd40..d5abcd7d 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -224,6 +224,9 @@ Client::Client( tsrc->buildMainAtlas(this); else infostream<<"Not building texture atlas."<updateTextures(tsrc); // NOTE: This should be done only after getting possible dynamic // game definitions from the server, or at least shut down and diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 74d82536..7b723e95 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -164,6 +164,21 @@ public: assert(c <= MAX_CONTENT); return &m_content_features[c]; } + virtual void updateTextures(ITextureSource *tsrc) + { +#ifndef SERVER + infostream<<"CNodeDefManager::updateTextures(): Updating " + <<"textures in node definitions"<updateAP(f->tiles[j].texture); + if(f->special_atlas) + tsrc->updateAP(*(f->special_atlas)); + } +#endif + } private: ContentFeatures m_content_features[MAX_CONTENT+1]; }; diff --git a/src/nodedef.h b/src/nodedef.h index dece63fc..5aba69c4 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -320,6 +320,12 @@ public: // Register node definition virtual void set(content_t c, const ContentFeatures &def)=0; virtual ContentFeatures* getModifiable(content_t c)=0; + + /* + Update tile textures to latest return values of TextueSource. + Call after updating the texture atlas of a TextureSource. + */ + virtual void updateTextures(ITextureSource *tsrc)=0; }; // If textures not actually available (server), tsrc can be NULL diff --git a/src/tile.h b/src/tile.h index ac4e790b..105692c1 100644 --- a/src/tile.h +++ b/src/tile.h @@ -138,6 +138,7 @@ public: {return AtlasPointer(0);} virtual video::ITexture* getTextureRaw(const std::string &name) {return NULL;} + virtual void updateAP(AtlasPointer &ap){}; }; class IWritableTextureSource : public ITextureSource @@ -153,8 +154,8 @@ public: {return AtlasPointer(0);} virtual video::ITexture* getTextureRaw(const std::string &name) {return NULL;} + virtual void updateAP(AtlasPointer &ap){}; - virtual void updateAP(AtlasPointer &ap)=0; virtual void buildMainAtlas(class IGameDef *gamedef)=0; virtual void processQueue()=0; };