]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/itemdef.h
On-demand item meshes and textures
[dragonfireclient.git] / src / itemdef.h
index ac3a5ab879f72fa2088551ccdf50be08e37d9368..699d727bde4a60334073f854b64aa6717d413322 100644 (file)
@@ -21,7 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef ITEMDEF_HEADER
 #define ITEMDEF_HEADER
 
-#include "common_irrlicht.h"
+#include "irrlichttypes_extrabloated.h"
 #include <string>
 #include <iostream>
 #include <set>
@@ -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();