27 #include <SMaterial.h>
32 #include <IVideoDriver.h>
39 typedef std::vector<video::SColor>
Palette;
66 std::string
getTexturePath(
const std::string &filename,
bool *is_base_pack =
nullptr);
82 const std::string &name, u32 *
id =
nullptr) = 0;
96 const std::string &name, u32 *
id =
nullptr)=0;
98 const std::string &name, u32 *
id =
nullptr) = 0;
123 const std::string &name, u32 *
id =
nullptr)=0;
137 bool hasNPotSupport();
138 video::IImage * Align2Npot2(video::IImage * image, irr::video::IVideoDriver* driver);
158 #define MATERIAL_FLAG_BACKFACE_CULLING 0x01
160 #define MATERIAL_FLAG_CRACK 0x02
163 #define MATERIAL_FLAG_CRACK_OVERLAY 0x04
164 #define MATERIAL_FLAG_ANIMATION 0x08
166 #define MATERIAL_FLAG_TILEABLE_HORIZONTAL 0x20
167 #define MATERIAL_FLAG_TILEABLE_VERTICAL 0x40
183 #define MAX_TILE_LAYERS 2
208 return !(*
this == other);
218 material.MaterialType = video::EMT_SOLID;
224 material.MaterialTypeParam = 0.5;
225 material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
230 material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
237 material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
240 material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
248 material.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
249 material.TextureLayer[1].TextureWrapU = video::ETC_CLAMP_TO_EDGE;
252 material.TextureLayer[0].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
253 material.TextureLayer[1].TextureWrapV = video::ETC_CLAMP_TO_EDGE;
286 std::vector<FrameSpec> *
frames =
nullptr;
virtual ~ISimpleTextureSource()=default
virtual video::ITexture * getTexture(const std::string &name, u32 *id=nullptr)=0
ISimpleTextureSource()=default
virtual std::string getTextureName(u32 id)=0
virtual u32 getTextureId(const std::string &name)=0
virtual video::ITexture * getTexture(u32 id)=0
virtual video::ITexture * getNormalTexture(const std::string &name)=0
virtual Palette * getPalette(const std::string &name)=0
virtual video::ITexture * getTextureForMesh(const std::string &name, u32 *id=nullptr)=0
virtual video::ITexture * getTexture(const std::string &name, u32 *id=nullptr)=0
virtual ~ITextureSource()=default
virtual video::SColor getTextureAverageColor(const std::string &name)=0
virtual video::ITexture * getShaderFlagsTexture(bool normalmap_present)=0
virtual bool isKnownSourceImage(const std::string &name)=0
virtual video::ITexture * getShaderFlagsTexture(bool normalmap_present)=0
virtual video::SColor getTextureAverageColor(const std::string &name)=0
virtual video::ITexture * getNormalTexture(const std::string &name)=0
virtual void insertSourceImage(const std::string &name, video::IImage *img)=0
IWritableTextureSource()=default
virtual video::ITexture * getTexture(const std::string &name, u32 *id=nullptr)=0
virtual std::string getTextureName(u32 id)=0
virtual u32 getTextureId(const std::string &name)=0
virtual void processQueue()=0
virtual bool isKnownSourceImage(const std::string &name)=0
virtual ~IWritableTextureSource()=default
virtual video::ITexture * getTexture(u32 id)=0
virtual void rebuildImagesAndTextures()=0
video::ITexture * texture
Definition: tile.h:178
u32 texture_id
Definition: tile.h:177
video::ITexture * normal_texture
Definition: tile.h:179
video::ITexture * flags_texture
Definition: tile.h:180
Definition: nodedef.h:247
Defines a layer of a tile.
Definition: tile.h:187
video::SColor color
Definition: tile.h:292
bool operator==(const TileLayer &other) const
Definition: tile.h:193
std::vector< FrameSpec > * frames
Definition: tile.h:286
bool has_color
If true, the tile has its own color.
Definition: tile.h:284
void applyMaterialOptionsWithShaders(video::SMaterial &material) const
Definition: tile.h:244
u8 scale
Definition: tile.h:294
void applyMaterialOptions(video::SMaterial &material) const
Definition: tile.h:212
bool isTileable() const
Definition: tile.h:257
u16 animation_frame_count
Definition: tile.h:274
u8 material_flags
Definition: tile.h:277
video::ITexture * normal_texture
Definition: tile.h:266
video::ITexture * texture
Definition: tile.h:265
u32 shader_id
Definition: tile.h:269
u16 animation_frame_length_ms
Definition: tile.h:273
u8 material_type
Definition: tile.h:276
video::ITexture * flags_texture
Definition: tile.h:267
u32 texture_id
Definition: tile.h:271
bool operator!=(const TileLayer &other) const
Definition: tile.h:206
bool world_aligned
If true, the tile rotation is ignored.
Definition: tile.h:320
u8 rotation
Tile rotation.
Definition: tile.h:322
bool isTileable(const TileSpec &other) const
Definition: tile.h:307
u8 emissive_light
This much light does the tile emit.
Definition: tile.h:324
TileLayer layers[MAX_TILE_LAYERS]
The first is base texture, the second is overlay.
Definition: tile.h:326
IWritableTextureSource * createTextureSource()
Definition: tile.cpp:434
#define MATERIAL_FLAG_BACKFACE_CULLING
Definition: tile.h:158
std::vector< video::SColor > Palette
Definition: tile.h:37
std::string getImagePath(std::string path)
Definition: tile.cpp:90
#define MATERIAL_FLAG_TILEABLE_VERTICAL
Definition: tile.h:167
std::vector< std::string > getTextureDirs()
Definition: tile.cpp:2286
void clearTextureNameCache()
Definition: tile.cpp:173
std::string getTexturePath(const std::string &filename, bool *is_base_pack=nullptr)
Definition: tile.cpp:125
MaterialType
Definition: tile.h:141
@ TILE_MATERIAL_PLAIN_ALPHA
Definition: tile.h:153
@ TILE_MATERIAL_OPAQUE
Definition: tile.h:148
@ TILE_MATERIAL_LIQUID_TRANSPARENT
Definition: tile.h:144
@ TILE_MATERIAL_WAVING_PLANTS
Definition: tile.h:147
@ TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT
Definition: tile.h:150
@ TILE_MATERIAL_BASIC
Definition: tile.h:142
@ TILE_MATERIAL_LIQUID_OPAQUE
Definition: tile.h:145
@ TILE_MATERIAL_WAVING_LIQUID_OPAQUE
Definition: tile.h:151
@ TILE_MATERIAL_WAVING_LIQUID_BASIC
Definition: tile.h:149
@ TILE_MATERIAL_WAVING_LEAVES
Definition: tile.h:146
@ TILE_MATERIAL_ALPHA
Definition: tile.h:143
@ TILE_MATERIAL_PLAIN
Definition: tile.h:152
#define MATERIAL_FLAG_TILEABLE_HORIZONTAL
Definition: tile.h:166
#define MAX_TILE_LAYERS
Definition: tile.h:183