# HG changeset patch # User sheepluva # Date 1403048248 -7200 # Node ID 5d90d8ca965767fbe01e87e00b044d42746b2ebc # Parent 72e6df962cb63a24100d2fdbc6df65bdb8849281 tweak code of DrawTextureFromRectDir a bit, removing issue with different x offset depending on dir. also removing the workaround wrt that issue in the frozen hog code diff -r 72e6df962cb6 -r 5d90d8ca9657 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Wed Jun 18 17:36:46 2014 +0400 +++ b/hedgewars/uGearsRender.pas Wed Jun 18 01:37:28 2014 +0200 @@ -1019,10 +1019,7 @@ r.y := 96 - iceOffset; r.w := 32; r.h := iceOffset; - if sign = -1 then - DrawTextureFromRectDir(sx + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign) - else - DrawTextureFromRectDir(sx-16 + sign*2, sy+16-iceoffset, r.w, r.h, @r, HHTexture, sign); + DrawTextureFromRectDir(sx - 16 + sign*2, sy + 16 - iceoffset, r.w, r.h, @r, HHTexture, sign); if HH^.Effects[heFrozen] < 150000 then diff -r 72e6df962cb6 -r 5d90d8ca9657 hedgewars/uRender.pas --- a/hedgewars/uRender.pas Wed Jun 18 17:36:46 2014 +0400 +++ b/hedgewars/uRender.pas Wed Jun 18 01:37:28 2014 +0200 @@ -698,9 +698,9 @@ end; procedure DrawTextureFromRectDir(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture; Dir: LongInt); -var rr: TSDL_Rect; - _l, _r, _t, _b: real; +var _l, _r, _t, _b: real; VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; + xw, yh: LongInt; begin if (SourceTexture^.h = 0) or (SourceTexture^.w = 0) then exit; @@ -716,40 +716,33 @@ if (abs(Y) > H) and ((abs(Y + H / 2 - (0.5 * cScreenHeight)) - H / 2) * 2 > ViewHeight) then exit; -rr.x:= X; -rr.y:= Y; -rr.w:= W; -rr.h:= H; - _l:= r^.x / SourceTexture^.w * SourceTexture^.rx; _r:= (r^.x + r^.w) / SourceTexture^.w * SourceTexture^.rx; + +// if direction is mirrored, switch left and right +if Dir < 0 then + begin + _t:= _l; + _l:= _r; + _r:= _t; + end; + _t:= r^.y / SourceTexture^.h * SourceTexture^.ry; _b:= (r^.y + r^.h) / SourceTexture^.h * SourceTexture^.ry; glBindTexture(GL_TEXTURE_2D, SourceTexture^.id); -if Dir < 0 then - begin - VertexBuffer[0].X:= X + rr.w div 2; - VertexBuffer[0].Y:= Y; - VertexBuffer[1].X:= X - rr.w div 2; - VertexBuffer[1].Y:= Y; - VertexBuffer[2].X:= X - rr.w div 2; - VertexBuffer[2].Y:= rr.h + Y; - VertexBuffer[3].X:= X + rr.w div 2; - VertexBuffer[3].Y:= rr.h + Y; - end -else - begin - VertexBuffer[0].X:= X; - VertexBuffer[0].Y:= Y; - VertexBuffer[1].X:= rr.w + X; - VertexBuffer[1].Y:= Y; - VertexBuffer[2].X:= rr.w + X; - VertexBuffer[2].Y:= rr.h + Y; - VertexBuffer[3].X:= X; - VertexBuffer[3].Y:= rr.h + Y; - end; +xw:= X + W; +yh:= Y + H; + +VertexBuffer[0].X:= X; +VertexBuffer[0].Y:= Y; +VertexBuffer[1].X:= xw; +VertexBuffer[1].Y:= Y; +VertexBuffer[2].X:= xw; +VertexBuffer[2].Y:= yh; +VertexBuffer[3].X:= X; +VertexBuffer[3].Y:= yh; TextureBuffer[0].X:= _l; TextureBuffer[0].Y:= _t;