45#define MATERIAL_FLAG_BACKFACE_CULLING 0x01
47#define MATERIAL_FLAG_CRACK 0x02
49#define MATERIAL_FLAG_ANIMATION 0x08
50#define MATERIAL_FLAG_TILEABLE_HORIZONTAL 0x20
51#define MATERIAL_FLAG_TILEABLE_VERTICAL 0x40
71#define MAX_TILE_LAYERS 2
98 return !(*
this == other);
158 std::vector<FrameSpec> *
frames =
nullptr;
178 for (
auto h : { l.texture_id, l.shader_id, (u32)l.material_flags }) {
180 ret ^= (ret << 6) + (ret >> 2);
209 void updateTexture(video::SMaterial &material,
float animation_time);
212 video::ITexture *
getTexture(
float animation_time)
const;
size_t getFrameCount() const
Definition tile.h:204
AnimationInfo(const TileLayer &tile)
Definition tile.h:192
u16 m_frame_length_ms
Definition tile.h:215
std::vector< FrameSpec > * m_frames
Definition tile.h:219
u16 m_frame_count
Definition tile.h:216
AnimationInfo(std::vector< FrameSpec > *frames, u16 frame_length_ms)
Definition tile.h:198
void updateTexture(video::SMaterial &material, float animation_time)
Definition tile.cpp:21
video::ITexture * getTexture(float animation_time) const
Definition tile.cpp:8
video::ITexture * texture
Definition tile.h:63
u32 texture_id
Definition tile.h:62
Defines a layer of a tile.
Definition tile.h:75
video::SColor color
Definition tile.h:164
bool operator==(const TileLayer &other) const
Definition tile.h:81
std::vector< FrameSpec > * frames
Definition tile.h:158
bool has_color
If true, the tile has its own color.
Definition tile.h:167
u8 scale
Texture scale in both directions (used for world-align)
Definition tile.h:151
MaterialType material_type
Definition tile.h:144
u16 animation_frame_count
Definition tile.h:139
u8 material_flags
Definition tile.h:145
u16 texture_layer_idx
Layer index to use, if the texture is an array texture.
Definition tile.h:142
bool empty() const
Definition tile.h:110
bool need_polygon_offset
does this tile need to have a positive polygon offset set?
Definition tile.h:155
video::ITexture * texture
Definition tile.h:132
void applyMaterialOptions(video::SMaterial &material, int layer) const
Set some material parameters accordingly.
Definition tile.cpp:29
u32 shader_id
Definition tile.h:134
u16 animation_frame_length_ms
Definition tile.h:138
bool isTransparent() const
Definition tile.h:116
u32 texture_id
Definition tile.h:136
bool operator!=(const TileLayer &other) const
Definition tile.h:96
TileRotation rotation
Tile rotation.
Definition tile.h:239
bool world_aligned
If true, the tile rotation is ignored.
Definition tile.h:237
TileLayer layers[MAX_TILE_LAYERS]
The first is base texture, the second is overlay.
Definition tile.h:241
std::size_t operator()(const TileLayer &l) const noexcept
Definition tile.h:175
#define MATERIAL_FLAG_BACKFACE_CULLING
Definition tile.h:45
MaterialType
Definition tile.h:12
@ TILE_MATERIAL_PLAIN_ALPHA
Definition tile.h:25
@ TILE_MATERIAL_OPAQUE
Definition tile.h:19
@ TILE_MATERIAL_LIQUID_TRANSPARENT
Definition tile.h:15
@ TILE_MATERIAL_WAVING_PLANTS
Definition tile.h:18
@ TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT
Definition tile.h:21
@ TILE_MATERIAL_BASIC
Definition tile.h:13
@ TILE_MATERIAL_LIQUID_OPAQUE
Definition tile.h:16
@ TILE_MATERIAL_WAVING_LIQUID_OPAQUE
Definition tile.h:22
@ TILE_MATERIAL_WAVING_LIQUID_BASIC
Definition tile.h:20
@ TILE_MATERIAL_WAVING_LEAVES
Definition tile.h:17
@ TILE_MATERIAL_ALPHA
Definition tile.h:14
@ TILE_MATERIAL_PLAIN
Definition tile.h:24
#define MATERIAL_FLAG_TILEABLE_VERTICAL
Definition tile.h:51
static MaterialType material_type_with_alpha(MaterialType type)
change type so it has at least simple transparency
Definition tile.h:31
TileRotation
Definition tile.h:222
#define MATERIAL_FLAG_TILEABLE_HORIZONTAL
Definition tile.h:50
#define MAX_TILE_LAYERS
We have two tile layers: layer 0 = base layer 1 = overlay.
Definition tile.h:71