]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/itemdef.h
On-demand item meshes and textures
[dragonfireclient.git] / src / itemdef.h
index d1ac52bb8c82b8ffcffbf0dea65fd0665bb9ae01..699d727bde4a60334073f854b64aa6717d413322 100644 (file)
@@ -72,14 +72,6 @@ struct ItemDefinition
        // "" = no prediction
        std::string node_placement_prediction;
 
-       /*
-               Cached stuff
-       */
-#ifndef SERVER
-       video::ITexture *inventory_texture;
-       scene::IMesh *wield_mesh;
-#endif
-
        /*
                Some helpful methods
        */
@@ -108,6 +100,14 @@ class IItemDefManager
        virtual std::set<std::string> getAll() const=0;
        // Check if item is known
        virtual bool isKnown(const std::string &name) const=0;
+#ifndef SERVER
+       // Get item inventory texture
+       virtual video::ITexture* getInventoryTexture(const std::string &name,
+                       IGameDef *gamedef) const=0;
+       // Get item wield mesh
+       virtual scene::IMesh* getWieldMesh(const std::string &name,
+               IGameDef *gamedef) const=0;
+#endif
 
        virtual void serialize(std::ostream &os)=0;
 };
@@ -126,6 +126,14 @@ class IWritableItemDefManager : public IItemDefManager
        virtual std::set<std::string> getAll() const=0;
        // Check if item is known
        virtual bool isKnown(const std::string &name) const=0;
+#ifndef SERVER
+       // Get item inventory texture
+       virtual video::ITexture* getInventoryTexture(const std::string &name,
+                       IGameDef *gamedef) const=0;
+       // Get item wield mesh
+       virtual scene::IMesh* getWieldMesh(const std::string &name,
+               IGameDef *gamedef) const=0;
+#endif
 
        // Remove all registered item and node definitions and aliases
        // Then re-add the builtin item definitions
@@ -138,15 +146,11 @@ class IWritableItemDefManager : public IItemDefManager
        virtual void registerAlias(const std::string &name,
                        const std::string &convert_to)=0;
 
-       /*
-               Update inventory textures and wield meshes to latest
-               return values of ITextureSource and INodeDefManager.
-               Call after updating the texture atlas of a texture source.
-       */
-       virtual void updateTexturesAndMeshes(IGameDef *gamedef)=0;
-
        virtual void serialize(std::ostream &os)=0;
        virtual void deSerialize(std::istream &is)=0;
+
+       // Do stuff asked by threads that can only be done in the main thread
+       virtual void processQueue(IGameDef *gamedef)=0;
 };
 
 IWritableItemDefManager* createItemDefManager();