]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/tile.h
Irrlicht 1.9 support
[dragonfireclient.git] / src / client / tile.h
index 744aa2c3dc959f0ce4d09973acc6b5b2f3f9a450..b759168413be36687a2432bb6b3d1b7fa3c91f4e 100644 (file)
@@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define TILE_HEADER
 
 #include "irrlichttypes.h"
-#include "irr_v2d.h"
 #include "irr_v3d.h"
 #include <ITexture.h>
 #include <IrrlichtDevice.h>
@@ -113,8 +112,7 @@ class ITextureSource : public ISimpleTextureSource
                        const TextureFromMeshParams &params)=0;
        virtual video::ITexture* getNormalTexture(const std::string &name)=0;
        virtual video::SColor getTextureAverageColor(const std::string &name)=0;
-       virtual video::ITexture *getShaderFlagsTexture(bool normamap_present,
-                       bool tileable_vertical, bool tileable_horizontal)=0;
+       virtual video::ITexture *getShaderFlagsTexture(bool normalmap_present)=0;
 };
 
 class IWritableTextureSource : public ITextureSource
@@ -137,8 +135,7 @@ class IWritableTextureSource : public ITextureSource
        virtual void rebuildImagesAndTextures()=0;
        virtual video::ITexture* getNormalTexture(const std::string &name)=0;
        virtual video::SColor getTextureAverageColor(const std::string &name)=0;
-       virtual video::ITexture *getShaderFlagsTexture(bool normamap_present,
-                       bool tileable_vertical, bool tileable_horizontal)=0;
+       virtual video::ITexture *getShaderFlagsTexture(bool normalmap_present)=0;
 };
 
 IWritableTextureSource* createTextureSource(IrrlichtDevice *device);
@@ -168,6 +165,8 @@ enum MaterialType{
 // defined by extra parameters
 #define MATERIAL_FLAG_ANIMATION_VERTICAL_FRAMES 0x08
 #define MATERIAL_FLAG_HIGHLIGHTED 0x10
+#define MATERIAL_FLAG_TILEABLE_HORIZONTAL 0x20
+#define MATERIAL_FLAG_TILEABLE_VERTICAL 0x40
 
 /*
        This fully defines the looks of a tile.
@@ -250,12 +249,26 @@ struct TileSpec
                }
                material.BackfaceCulling = (material_flags & MATERIAL_FLAG_BACKFACE_CULLING)
                        ? true : false;
+               if (!(material_flags & MATERIAL_FLAG_TILEABLE_HORIZONTAL)) {
+                       material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
+               }
+               if (!(material_flags & MATERIAL_FLAG_TILEABLE_VERTICAL)) {
+                       material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
+               }
        }
 
        void applyMaterialOptionsWithShaders(video::SMaterial &material) const
        {
                material.BackfaceCulling = (material_flags & MATERIAL_FLAG_BACKFACE_CULLING)
                        ? true : false;
+               if (!(material_flags & MATERIAL_FLAG_TILEABLE_HORIZONTAL)) {
+                       material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
+                       material.TextureLayer[1].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
+               }
+               if (!(material_flags & MATERIAL_FLAG_TILEABLE_VERTICAL)) {
+                       material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
+                       material.TextureLayer[1].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
+               }
        }
        
        u32 texture_id;