mirror of https://github.com/minetest/minetest.git
Merge branch 'master' of https://github.com/LUKK3/minetest
Conflicts: doc/lua_api.txt
This commit is contained in:
commit
64d046d03d
|
@ -262,6 +262,10 @@ Advanced texture modifiers:
|
||||||
Apply a mask to the base image.
|
Apply a mask to the base image.
|
||||||
The mask is applied using binary AND.
|
The mask is applied using binary AND.
|
||||||
|
|
||||||
|
[sheet:<w>x<h>:<x>,<y>
|
||||||
|
Retrieves a tile at position x,y from the base image
|
||||||
|
which it assumes to be a tilesheet with dimensions w,h.
|
||||||
|
|
||||||
[colorize:<color>
|
[colorize:<color>
|
||||||
Colorize the textures with given color
|
Colorize the textures with given color
|
||||||
<color> as ColorString
|
<color> as ColorString
|
||||||
|
|
44
src/tile.cpp
44
src/tile.cpp
|
@ -1589,6 +1589,50 @@ bool TextureSource::generateImagePart(std::string part_of_name,
|
||||||
<< filename << "\".";
|
<< filename << "\".";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
[sheet:WxH:X,Y
|
||||||
|
Retrieves a tile at position X,Y (in tiles)
|
||||||
|
from the base image it assumes to be a
|
||||||
|
tilesheet with dimensions W,H (in tiles).
|
||||||
|
*/
|
||||||
|
else if (part_of_name.substr(0,7) == "[sheet:")
|
||||||
|
{
|
||||||
|
if(baseimg == NULL){
|
||||||
|
errorstream<<"generateImagePart(): baseimg != NULL "
|
||||||
|
<<"for part_of_name=\""<<part_of_name
|
||||||
|
<<"\", cancelling."<<std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Strfnd sf(part_of_name);
|
||||||
|
sf.next(":");
|
||||||
|
u32 w0 = stoi(sf.next("x"));
|
||||||
|
u32 h0 = stoi(sf.next(":"));
|
||||||
|
u32 x0 = stoi(sf.next(","));
|
||||||
|
u32 y0 = stoi(sf.next(":"));
|
||||||
|
|
||||||
|
core::dimension2d<u32> img_dim = baseimg->getDimension();
|
||||||
|
core::dimension2d<u32> tile_dim(v2u32(img_dim) / v2u32(w0, h0));
|
||||||
|
|
||||||
|
video::IImage *img = driver->createImage(
|
||||||
|
video::ECF_A8R8G8B8, tile_dim);
|
||||||
|
if(!img){
|
||||||
|
errorstream<<"generateImagePart(): Could not create image "
|
||||||
|
<<"for part_of_name=\""<<part_of_name
|
||||||
|
<<"\", cancelling."<<std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
img->fill(video::SColor(0,0,0,0));
|
||||||
|
v2u32 vdim(tile_dim);
|
||||||
|
core::rect<s32> rect(v2s32(x0 * vdim.X, y0 * vdim.Y), tile_dim);
|
||||||
|
baseimg->copyToWithAlpha(img, v2s32(0), rect,
|
||||||
|
video::SColor(255,255,255,255), NULL);
|
||||||
|
|
||||||
|
// Replace baseimg
|
||||||
|
baseimg->drop();
|
||||||
|
baseimg = img;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
[colorize:color
|
[colorize:color
|
||||||
Overlays image with given color
|
Overlays image with given color
|
||||||
|
|
Loading…
Reference in New Issue