const video::SColor color(255, 255, 255, 255);
const video::SColor colors[] = {color, color, color, color};
core::dimension2di imgsize(texture->getOriginalSize());
- core::rect<s32> rect(0, 0, imgsize.Width * e->scale.X,
- imgsize.Height * e->scale.X);
- rect += pos;
- v2s32 offset((e->align.X - 1.0) * ((imgsize.Width * e->scale.X) / 2),
- (e->align.Y - 1.0) * ((imgsize.Height * e->scale.X) / 2));
- rect += offset;
- rect += v2s32(e->offset.X, e->offset.Y);
+ v2s32 dstsize(imgsize.Width * e->scale.X,
+ imgsize.Height * e->scale.Y);
+ if (e->scale.X < 0)
+ dstsize.X = screensize.X * (e->scale.X * -0.01);
+ if (e->scale.Y < 0)
+ dstsize.Y = screensize.Y * (e->scale.Y * -0.01);
+ v2s32 offset((e->align.X - 1.0) * dstsize.X / 2,
+ (e->align.Y - 1.0) * dstsize.Y / 2);
+ core::rect<s32> rect(0, 0, dstsize.X, dstsize.Y);
+ rect += pos + offset + v2s32(e->offset.X, e->offset.Y);
driver->draw2DImage(texture, rect,
core::rect<s32>(core::position2d<s32>(0,0), imgsize),
NULL, colors, true);