remove texture size bias from blit: and plantgrowth

This commit is contained in:
darkrose 2015-06-04 22:26:07 +10:00
parent 1983563d6d
commit 6b9d281ca1
2 changed files with 11 additions and 11 deletions

View File

@ -189,10 +189,9 @@ TileSpec getNodeTile(MapNode mn, v3s16 p, v3s16 face_dir, NodeModMap &temp_mods,
if (f->param2_type != CPT_PLANTGROWTH || !mn.param2) { if (f->param2_type != CPT_PLANTGROWTH || !mn.param2) {
texture_name += "^"+orig_name; texture_name += "^"+orig_name;
}else{ }else{
// TODO: this is assuming 16x16 textures
std::string bs("^[blit:0,"); std::string bs("^[blit:0,");
bs += itos(16-mn.param2); bs += ftos(1.0-(0.0625*(float)mn.param2));
bs += ",16,16,"; bs += ",1,1,";
// new name // new name
texture_name += bs+orig_name; texture_name += bs+orig_name;
} }

View File

@ -1801,10 +1801,10 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
// Size of the copied area // Size of the copied area
Strfnd sf(part_of_name); Strfnd sf(part_of_name);
sf.next(":"); sf.next(":");
int x = mystoi(sf.next(",")); float x = mystof(sf.next(","));
int y = mystoi(sf.next(",")); float y = mystof(sf.next(","));
int X = mystoi(sf.next(",")); float X = mystof(sf.next(","));
int Y = mystoi(sf.next(",")); float Y = mystof(sf.next(","));
std::string path = sf.end(); std::string path = sf.end();
path = getTexturePath(path.c_str()); path = getTexturePath(path.c_str());
video::IImage *image = driver->createImageFromFile(path.c_str()); video::IImage *image = driver->createImageFromFile(path.c_str());
@ -1821,12 +1821,13 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
<< "\", cancelling." << std::endl; << "\", cancelling." << std::endl;
return false; return false;
} }
//core::dimension2d<u32> dim = image->getDimension(); core::dimension2d<u32> bdim = baseimg->getDimension();
core::dimension2d<u32> dim(X-x,Y-y); core::dimension2d<u32> idim = image->getDimension();
core::dimension2d<u32> dim((X-x)*(float)bdim.Width,(Y-y)*(float)bdim.Height);
// Position to copy the blitted to in the base image // Position to copy the blitted to in the base image
core::position2d<s32> pos_to(x,y); core::position2d<s32> pos_to((float)bdim.Width*x,(float)bdim.Height*y);
// Position to copy the blitted from in the blitted image // Position to copy the blitted from in the blitted image
core::position2d<s32> pos_from(x,y); core::position2d<s32> pos_from((float)idim.Width*x,(float)idim.Height*y);
// Blit // Blit
image->copyToWithAlpha(baseimg, pos_to, image->copyToWithAlpha(baseimg, pos_to,
core::rect<s32>(pos_from, dim), core::rect<s32>(pos_from, dim),