]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/tile.h
Masterserver show privs and js autoload
[dragonfireclient.git] / src / tile.h
index 144cb64758a5d66c13e56ae9e370787ceac09871..90e180a48283e91f2b3b17e4690e22b7c82037cf 100644 (file)
@@ -57,27 +57,55 @@ std::string getImagePath(std::string path);
 */
 std::string getTexturePath(const std::string &filename);
 
+void clearTextureNameCache();
+
+/*
+       ITextureSource::generateTextureFromMesh parameters
+*/
+namespace irr {namespace scene {class IMesh;}}
+struct TextureFromMeshParams
+{
+       scene::IMesh *mesh;
+       core::dimension2d<u32> dim;
+       std::string rtt_texture_name;
+       bool delete_texture_on_shutdown;
+       v3f camera_position;
+       v3f camera_lookat;
+       core::CMatrix4<f32> camera_projection_matrix;
+       video::SColorf ambient_light;
+       v3f light_position;
+       video::SColorf light_color;
+       f32 light_radius;
+};
+
 /*
        TextureSource creates and caches textures.
 */
 
-class ITextureSource
+class ISimpleTextureSource
+{
+public:
+       ISimpleTextureSource(){}
+       virtual ~ISimpleTextureSource(){}
+       virtual video::ITexture* getTexture(
+                       const std::string &name, u32 *id = NULL) = 0;
+};
+
+class ITextureSource : public ISimpleTextureSource
 {
 public:
        ITextureSource(){}
        virtual ~ITextureSource(){}
-       virtual u32 getTextureId(const std::string &name){return 0;}
-       virtual u32 getTextureIdDirect(const std::string &name){return 0;}
-       virtual std::string getTextureName(u32 id){return "";}
-       virtual video::ITexture* getTexture(u32 id){return NULL;}
+       virtual u32 getTextureId(const std::string &name)=0;
+       virtual u32 getTextureIdDirect(const std::string &name)=0;
+       virtual std::string getTextureName(u32 id)=0;
+       virtual video::ITexture* getTexture(u32 id)=0;
        virtual video::ITexture* getTexture(
-                       const std::string &name, u32 *id = NULL){
-               if(id) *id = 0;
-               return NULL;
-       }
-       virtual IrrlichtDevice* getDevice()
-               {return NULL;}
+                       const std::string &name, u32 *id = NULL)=0;
+       virtual IrrlichtDevice* getDevice()=0;
        virtual bool isKnownSourceImage(const std::string &name)=0;
+       virtual video::ITexture* generateTextureFromMesh(
+                       const TextureFromMeshParams &params)=0;
 };
 
 class IWritableTextureSource : public ITextureSource
@@ -85,17 +113,16 @@ class IWritableTextureSource : public ITextureSource
 public:
        IWritableTextureSource(){}
        virtual ~IWritableTextureSource(){}
-       virtual u32 getTextureId(const std::string &name){return 0;}
-       virtual u32 getTextureIdDirect(const std::string &name){return 0;}
-       virtual std::string getTextureName(u32 id){return "";}
-       virtual video::ITexture* getTexture(u32 id){return NULL;}
+       virtual u32 getTextureId(const std::string &name)=0;
+       virtual u32 getTextureIdDirect(const std::string &name)=0;
+       virtual std::string getTextureName(u32 id)=0;
+       virtual video::ITexture* getTexture(u32 id)=0;
        virtual video::ITexture* getTexture(
-                       const std::string &name, u32 *id = NULL){
-               if(id) *id = 0;
-               return NULL;
-       }
-       virtual IrrlichtDevice* getDevice(){return NULL;}
+                       const std::string &name, u32 *id = NULL)=0;
+       virtual IrrlichtDevice* getDevice()=0;
        virtual bool isKnownSourceImage(const std::string &name)=0;
+       virtual video::ITexture* generateTextureFromMesh(
+                       const TextureFromMeshParams &params)=0;
 
        virtual void processQueue()=0;
        virtual void insertSourceImage(const std::string &name, video::IImage *img)=0;