浏览代码

Minor fixes

deepnight 9 年之前
父节点
当前提交
cd2bb24382
共有 2 个文件被更改,包括 82 次插入91 次删除
  1. 80 77
      h2d/SpriteBatch.hx
  2. 2 14
      h2d/Tile.hx

+ 80 - 77
h2d/SpriteBatch.hx

@@ -181,83 +181,86 @@ class SpriteBatch extends Drawable {
 		var e = first;
 		var tmp = tmpBuf;
 		while( e != null ) {
-			if( e.visible ) {
-				var t = e.t;
-				if( hasRotationScale ) {
-					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++] = t.u;
-					tmp[pos++] = t.v;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					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++] = t.u2;
-					tmp[pos++] = t.v;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					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++] = t.u;
-					tmp[pos++] = t.v2;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					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++] = t.u2;
-					tmp[pos++] = t.v2;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					tmp[pos++] = e.b;
-					tmp[pos++] = e.a;
-				} else {
-					var sx = e.x + t.dx;
-					var sy = e.y + t.dy;
-					tmp[pos++] = sx;
-					tmp[pos++] = sy;
-					tmp[pos++] = t.u;
-					tmp[pos++] = t.v;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					tmp[pos++] = e.b;
-					tmp[pos++] = e.a;
-					tmp[pos++] = sx + t.width + 0.1;
-					tmp[pos++] = sy;
-					tmp[pos++] = t.u2;
-					tmp[pos++] = t.v;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					tmp[pos++] = e.b;
-					tmp[pos++] = e.a;
-					tmp[pos++] = sx;
-					tmp[pos++] = sy + t.height + 0.1;
-					tmp[pos++] = t.u;
-					tmp[pos++] = t.v2;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					tmp[pos++] = e.b;
-					tmp[pos++] = e.a;
-					tmp[pos++] = sx + t.width + 0.1;
-					tmp[pos++] = sy + t.height + 0.1;
-					tmp[pos++] = t.u2;
-					tmp[pos++] = t.v2;
-					tmp[pos++] = e.r;
-					tmp[pos++] = e.g;
-					tmp[pos++] = e.b;
-					tmp[pos++] = e.a;
-				}
+			if( !e.visible ) {
+				e = e.next();
+				continue;
+			}
+
+			var t = e.t;
+			if( hasRotationScale ) {
+				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++] = t.u;
+				tmp[pos++] = t.v;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				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++] = t.u2;
+				tmp[pos++] = t.v;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				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++] = t.u;
+				tmp[pos++] = t.v2;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				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++] = t.u2;
+				tmp[pos++] = t.v2;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				tmp[pos++] = e.b;
+				tmp[pos++] = e.a;
+			} else {
+				var sx = e.x + t.dx;
+				var sy = e.y + t.dy;
+				tmp[pos++] = sx;
+				tmp[pos++] = sy;
+				tmp[pos++] = t.u;
+				tmp[pos++] = t.v;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				tmp[pos++] = e.b;
+				tmp[pos++] = e.a;
+				tmp[pos++] = sx + t.width + 0.1;
+				tmp[pos++] = sy;
+				tmp[pos++] = t.u2;
+				tmp[pos++] = t.v;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				tmp[pos++] = e.b;
+				tmp[pos++] = e.a;
+				tmp[pos++] = sx;
+				tmp[pos++] = sy + t.height + 0.1;
+				tmp[pos++] = t.u;
+				tmp[pos++] = t.v2;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				tmp[pos++] = e.b;
+				tmp[pos++] = e.a;
+				tmp[pos++] = sx + t.width + 0.1;
+				tmp[pos++] = sy + t.height + 0.1;
+				tmp[pos++] = t.u2;
+				tmp[pos++] = t.v2;
+				tmp[pos++] = e.r;
+				tmp[pos++] = e.g;
+				tmp[pos++] = e.b;
+				tmp[pos++] = e.a;
 			}
 			e = e.next;
 		}

+ 2 - 14
h2d/Tile.hx

@@ -59,20 +59,8 @@ class Tile {
 	}
 
 	public inline function setCenterRatio(?px:Float=0.5, ?py:Float=0.5) : Void {
-		copy( sub(0, 0, width, height, -Std.int(px*width), -Std.int(py*height)) );
-	}
-
-	public inline function copy(t:h2d.Tile) {
-		innerTex = t.innerTex;
-		u = t.u;
-		u2 = t.u2;
-		v = t.v;
-		v2 = t.v2;
-		dx = t.dx;
-		dy = t.dy;
-		width = t.width;
-		height = t.height;
-		return t;
+		dx = -Std.int(px*width);
+		dy = -Std.int(py*height);
 	}
 
 	public function flipX() {