+ bool operator==(const TileSpec &other) const
+ {
+ return (
+ texture_id == other.texture_id &&
+ /* texture == other.texture && */
+ alpha == other.alpha &&
+ material_type == other.material_type &&
+ material_flags == other.material_flags &&
+ rotation == other.rotation
+ );
+ }
+
+ bool operator!=(const TileSpec &other) const
+ {
+ return !(*this == other);
+ }
+
+ // Sets everything else except the texture in the material
+ void applyMaterialOptions(video::SMaterial &material) const
+ {
+ switch (material_type) {
+ case TILE_MATERIAL_BASIC:
+ material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
+ break;
+ case TILE_MATERIAL_ALPHA:
+ material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
+ break;
+ case TILE_MATERIAL_LIQUID_TRANSPARENT:
+ material.MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA;
+ break;
+ case TILE_MATERIAL_LIQUID_OPAQUE:
+ material.MaterialType = video::EMT_SOLID;
+ break;
+ case TILE_MATERIAL_WAVING_LEAVES:
+ material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
+ break;
+ case TILE_MATERIAL_WAVING_PLANTS:
+ material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
+ break;
+ }
+ material.BackfaceCulling = (material_flags & MATERIAL_FLAG_BACKFACE_CULLING)
+ ? true : false;
+ }