hedgewars/uRender.pas
changeset 10324 5d90d8ca9657
parent 10318 c2e81eea375f
child 10325 7315870716f2
--- 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;