Browse Source

Separate scaleX from scaleY in BatchElement

deepnight 9 năm trước cách đây
mục cha
commit
b7714dd41b
1 tập tin đã thay đổi với 24 bổ sung18 xóa
  1. 24 18
      h2d/SpriteBatch.hx

+ 24 - 18
h2d/SpriteBatch.hx

@@ -19,7 +19,9 @@ private class ElementsIterator {
 class BatchElement {
 	public var x : Float;
 	public var y : Float;
-	public var scale : Float;
+	public var scale(never,set) : Float;
+	public var scaleX : Float;
+	public var scaleY : Float;
 	public var rotation : Float;
 	public var r : Float;
 	public var g : Float;
@@ -35,11 +37,15 @@ class BatchElement {
 
 	public function new(t) {
 		x = 0; y = 0; r = 1; g = 1; b = 1; a = 1;
-		rotation = 0; scale = 1;
+		rotation = 0; scaleX = scaleY = 1;
 		visible = true;
 		this.t = t;
 	}
 
+	inline function set_scale(v) {
+		return scaleX = scaleY = v;
+	}
+
 	inline function get_alpha() {
 		return a;
 	}
@@ -149,23 +155,23 @@ class SpriteBatch extends Drawable {
 				var px = t.dx, py = t.dy;
 				var x, y;
 
-				x = (px * ca - py * sa) * e.scale + e.x;
-				y = (py * ca + px * sa) * e.scale + e.y;
+				x = (px * ca - py * sa) * e.scaleX + e.x;
+				y = (py * ca + px * sa) * e.scaleY + e.y;
 				addBounds(relativeTo, out, x, y, 1e-10, 1e-10);
 
 				var px = t.dx + hx, py = t.dy;
-				x = (px * ca - py * sa) * e.scale + e.x;
-				y = (py * ca + px * sa) * e.scale + e.y;
+				x = (px * ca - py * sa) * e.scaleX + e.x;
+				y = (py * ca + px * sa) * e.scaleY + e.y;
 				addBounds(relativeTo, out, x, y, 1e-10, 1e-10);
 
 				var px = t.dx, py = t.dy + hy;
-				x = (px * ca - py * sa) * e.scale + e.x;
-				y = (py * ca + px * sa) * e.scale + e.y;
+				x = (px * ca - py * sa) * e.scaleX + e.x;
+				y = (py * ca + px * sa) * e.scaleY + e.y;
 				addBounds(relativeTo, out, x, y, 1e-10, 1e-10);
 
 				var px = t.dx + hx, py = t.dy + hy;
-				x = (px * ca - py * sa) * e.scale + e.x;
-				y = (py * ca + px * sa) * e.scale + e.y;
+				x = (px * ca - py * sa) * e.scaleX + e.x;
+				y = (py * ca + px * sa) * e.scaleY + e.y;
 				addBounds(relativeTo, out, x, y, 1e-10, 1e-10);
 			} else
 				addBounds(relativeTo, out, e.x + tile.dx, e.y + tile.dy, tile.width, tile.height);
@@ -191,8 +197,8 @@ class SpriteBatch extends Drawable {
 				var ca = Math.cos(e.rotation), sa = Math.sin(e.rotation);
 				var hx = t.width, hy = t.height;
 				var px = t.dx, py = t.dy;
-				tmp[pos++] = (px * ca - py * sa) * e.scale + e.x;
-				tmp[pos++] = (py * ca + px * sa) * e.scale + e.y;
+				tmp[pos++] = (px * ca - py * sa) * e.scaleX + e.x;
+				tmp[pos++] = (py * ca + px * sa) * e.scaleY + e.y;
 				tmp[pos++] = t.u;
 				tmp[pos++] = t.v;
 				tmp[pos++] = e.r;
@@ -200,8 +206,8 @@ class SpriteBatch extends Drawable {
 				tmp[pos++] = e.b;
 				tmp[pos++] = e.a;
 				var px = t.dx + hx, py = t.dy;
-				tmp[pos++] = (px * ca - py * sa) * e.scale + e.x;
-				tmp[pos++] = (py * ca + px * sa) * e.scale + e.y;
+				tmp[pos++] = (px * ca - py * sa) * e.scaleX + e.x;
+				tmp[pos++] = (py * ca + px * sa) * e.scaleY + e.y;
 				tmp[pos++] = t.u2;
 				tmp[pos++] = t.v;
 				tmp[pos++] = e.r;
@@ -209,8 +215,8 @@ class SpriteBatch extends Drawable {
 				tmp[pos++] = e.b;
 				tmp[pos++] = e.a;
 				var px = t.dx, py = t.dy + hy;
-				tmp[pos++] = (px * ca - py * sa) * e.scale + e.x;
-				tmp[pos++] = (py * ca + px * sa) * e.scale + e.y;
+				tmp[pos++] = (px * ca - py * sa) * e.scaleX + e.x;
+				tmp[pos++] = (py * ca + px * sa) * e.scaleY + e.y;
 				tmp[pos++] = t.u;
 				tmp[pos++] = t.v2;
 				tmp[pos++] = e.r;
@@ -218,8 +224,8 @@ class SpriteBatch extends Drawable {
 				tmp[pos++] = e.b;
 				tmp[pos++] = e.a;
 				var px = t.dx + hx, py = t.dy + hy;
-				tmp[pos++] = (px * ca - py * sa) * e.scale + e.x;
-				tmp[pos++] = (py * ca + px * sa) * e.scale + e.y;
+				tmp[pos++] = (px * ca - py * sa) * e.scaleX + e.x;
+				tmp[pos++] = (py * ca + px * sa) * e.scaleY + e.y;
 				tmp[pos++] = t.u2;
 				tmp[pos++] = t.v2;
 				tmp[pos++] = e.r;