diff --git a/sandbox/index.html b/sandbox/index.html
index a7b5a95b..8852c3bb 100644
--- a/sandbox/index.html
+++ b/sandbox/index.html
@@ -27,6 +27,7 @@
Label - Fonts
Collision
Rotation
+ Scale
Sprite Font
Label Fonts
Anchors
diff --git a/sandbox/tests/scale/logo.png b/sandbox/tests/scale/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..aada9f8e5527d4c27adc31c2c6b99d169a1b8b35
GIT binary patch
literal 2745
zcmeAS@N?(olHy`uVBq!ia0y~yVAN$`U~uPPV_;wi`Yo8oz`(#+;1OBOz`!j8!i<;h
z*8O2%;L7%NaSW-r^>(i9iq|JZkDoUc-&P?|ps+w`>UQ2GA9OF}q{nab{C>>0DxOIz
zE?qoYEx|l`<<3`^D^BGym5Fm`t_$A#Z6%kBK*z2v=B@o@s%xKlOL=em^8euD#NS?@
z7tZ`Y$I{C9^M`-`{1Wc4EW9IdaovZj-cp?sKN+{5V0Ov=(zI1=(e+vLr)8@6C7Eh;sKXo}j83l9;lF!KQf3IzCY@@|+k?H#pkx&MOCBqj!K$U+4jC5{_i;N_y1ZrR5ZhsTFiPNJ)W^?F%x;Vg
z8I7|O?|v$0P>5O(?9({EI7F}^qp@1aSrnvFb<(u`%nTQq<_c~9Bg@bs_JZ%8k(+40
z>PB&~51dWjjrtF7u`TpjA+x&mK~Tckgc~$4sx_|$?T-4Vo-!xjwI$gb9PCakA=jq=b
z>t-)W+qR%;!5^teA02sBPdR3(RDLx$t@n$>!e~kJ-%FE6AwRky64XK&Uk@~(%YY_J)LPa
z>IvWo4Ox?df{ZWp}VI@fVW8k?X%pKSf&
zmj{*zvz*m%&QPlkcw!ZD-&1=KVC!
zvxhAzc769#wwt-WOZP{h&$5kqQO}qUUYqxNN`c0mUk8QR-8V`a?XEueXUVZUUvB=0
z6XkV{;<$cMCB~*|meoJY-XoC@vn?vto$u{ES-*5kV`NBtAg}#7o_E)7RjrB8S=OWy
z!Y3Ca?Q>nz|F&2Dhf5wQjvCWTK0bZ1&X#3i%r(oPotOH>eui3F`&OR68TLnbS>~}O
z*GTutTXNS+3O{#>_2<=V+Ov5byNuXIeF^467v_t{)Q2CwdNJ-xw4h+^zdt*_SoS?`
zpOhgfSMgFbd*dXoYkjMn*ER>dTYYG<+oLmwN=?o@?RV6e-?cvbX4Ph)HM_3w$$2?L
zs^V_+`r1S;+k7M6teM*ses6bm7GIrvcJ_u`Rg(qRq?SE&eLMffr!<4rTg2y{|B`q6
zLW}hz1CgYaU6l{pHmm&ortDO_R6W~2`MN#J!cXO1
znkH6i%XToRt)$>YkKU2gYaenSt(|m*BP>pQS88ba?KU;5z?1Ilt>y>#y2nW_b6%DG
z_>{?tzDj{p$p^(#q*SN1*>E>cP1ed^rt$uslG=*gTg!II8O>bPe68d6H3L&AF8#J&
z0q^z|u4k>=Qqf^OeS6ZZi@EDwO~_RFCbM(5vB{SIQA?JJ>WJBeRtiVgyC+u7)}L#T
zckq$r+Zo5Uf3JEYpdmHcs;Ew5(bO4Du9rPj?)Y`<%?X{{5G}l~He$YAZPf}<-Lj1G
zkGrb;q>jsTUtg2zzNPcnd}*m&rgN^H+{m|Q$=R2EzFU?Y-h49RhB?>iTC0Xs-A-rg
zzf~H&2~KxqtqiuVxHDZWZS~t(yJtFbtm{0##ot8F=<=1FZN-NfS?=t}xEm6nuwJ<2
z?F7ASvE{k$>$Ew`A4T{}_MTRpU$HN(>s|ePo3bAtVsuuB#@-XS)zh}|vC`|6jvQ5j
zx;d7~+qT%mGhfW|47Xcjr=uJEqj8nv&1c@fg!-aqC^0jfnKsSOr|#xf)&~ODCQN3Z
zf9sd^uQ@>vHFO!GlB{}{_pgY&otYTABg#7LcTB)-gSUo}dB*3jCoo8^SX%n^tLN0d
z+b$bEotqsUlgr09H-4vKwfFAB0aIrSu4PN)`Yg8SX?C08jPxth`B(dGImdRf=&nb_I-p51vW>CF^to4cZdJ`(jGsxCglF#r}nDym)HK-kfp23
zCvG8m=Ar)8Ks}D9P40iqebYlZ=PK-ub)Rm^o8|v(uHuy6+oGq0vn>1)6~~{szBypu
z#ku)YUkC2+YByn7IHzcCt)b8TCC$eFQ%)RSxNB*JfY-sde7l##-MpkE#(3Fpk#AYe
z4Q(CK%VmetdzYr{J`lyS@XpeSD}*hAE7SL#x}A6{Iq4wtfQ}=YPu~k
zm1@ORVAj<;lXWn)^2H$jjWAf2q55W&G~^>f=w}D&-~^F0g3xxiKe|p=!$(jou^E
z?(g~$#kl@c^UO!-)3)_$_a5Qyo|NY@=laZFveTwpdF;;5+grSQUEta6+i&uvt_uH}
zSo?c-e0F_(-M`J>>SBLxm@+M_QS~RM#?`lnW@hdyzqjB_QaVR$`=`)*sm*JHYnH~U
z|H=Jt_HjyD(a}B8(LP6~TlVE@FMIv=Q>ONp^yBZ38`|ph>1C?Si?UlWH8Fqn-s64q
zpGT`Q1eN>qKefG_8vi}G*=D=%?|2XueyRx8uC-!WT#$eA`#G+u|F48>;QC&>iX$oKc7pV@^4V^O
z-1o&^KF41k5q4_!{8=SM9=r4U|A~hS>d6F63Vn6F)cnS-KRG+s=(Sfp$vxHme!~2V
z-H%Nogf0f3-8?m=&-}_&PdjDFr5Uz+_V1VezoH<@KXyZm&-A^k*dIrjO)2-Do~lsj
zpQ*mgG4VwKPe`2m)s?Ad!p{6W_0oUkKb=#4pDwUW_FsL{V@T>t+^_{-wbwMsg=3=9n!jNoR}1;r1Uj0Qsc
z{=e1VGWT!&{-3M9RDS)Pzva92pAXwFJzrN7vtbJZ!wfkl1_l>y1_lm0T?V%9lkHz0
z9&W$%eER
+
+
+
+
+
+ Document
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sandbox/tests/scale/scale.ts b/sandbox/tests/scale/scale.ts
new file mode 100644
index 00000000..2709e03e
--- /dev/null
+++ b/sandbox/tests/scale/scale.ts
@@ -0,0 +1,39 @@
+///
+
+var game = new ex.Engine({
+ width: 800,
+ height: 600
+});
+
+
+// create an asset loader
+var loader = new ex.Loader();
+var resources = {
+ txPlayer: new ex.Texture('logo.png')
+};
+
+// queue resources for loading
+for (var r in resources) {
+ loader.addResource(resources[r]);
+}
+
+var target = new ex.Actor(500, 500, 20, 20, ex.Color.Red);
+game.add(target);
+
+var aim = new ex.Actor(game.getDrawWidth() / 2 , game.getDrawHeight() / 2, 100, 100, ex.Color.Black);
+aim.addDrawing(resources.txPlayer);
+aim.setHeight(10);
+aim.scale.setTo(1, .2);
+game.add(aim);
+
+// uncomment loader after adding resources
+game.start(loader).then(() => {
+
+ game.input.pointers.primary.on('move', (ev: ex.Input.PointerEvent) => {
+ target.pos.setTo(ev.x, ev.y);
+
+ var aimVec = target.pos.sub(aim.pos);
+ aim.rotation = aimVec.toAngle();
+ });
+
+});
\ No newline at end of file
diff --git a/src/engine/Actor.ts b/src/engine/Actor.ts
index f2986005..fa085c79 100644
--- a/src/engine/Actor.ts
+++ b/src/engine/Actor.ts
@@ -981,8 +981,8 @@ export class Actor extends Class implements IActionable, IEvented {
public draw(ctx: CanvasRenderingContext2D, delta: number) {
ctx.save();
ctx.translate(this.pos.x, this.pos.y);
- ctx.scale(this.scale.x, this.scale.y);
ctx.rotate(this.rotation);
+ ctx.scale(this.scale.x, this.scale.y);
// translate canvas by anchor offset
ctx.save();
diff --git a/src/spec/ScaleSpec.ts b/src/spec/ScaleSpec.ts
new file mode 100644
index 00000000..ab5eb5bd
--- /dev/null
+++ b/src/spec/ScaleSpec.ts
@@ -0,0 +1,56 @@
+///
+///
+///
+///
+///
+
+describe('A scaled and rotated actor', () => {
+ var actor: ex.Actor;
+ var engine: ex.Engine;
+ var scene: ex.Scene;
+ var mock = new Mocks.Mocker();
+
+ beforeEach(() => {
+ jasmine.addMatchers(imagediff.jasmine);
+
+ actor = new ex.UIActor(50, 50, 100, 50);
+ actor.color = ex.Color.Blue;
+ actor.collisionType = ex.CollisionType.Active;
+ engine = TestUtils.engine({ width: 800, height: 600 });
+ engine.setAntialiasing(false);
+
+ scene = new ex.Scene(engine);
+ engine.currentScene = scene;
+
+ spyOn(scene, 'draw').and.callThrough();
+ spyOn(actor, 'draw').and.callThrough();
+
+ });
+
+ afterEach(() => {
+ engine.stop();
+ });
+
+
+ it('is drawn correctly scaled at 90 degrees', (done) => {
+
+ let bg = new ex.Texture('src/spec/images/ScaleSpec/logo.png', true);
+
+ engine.start(new ex.Loader([bg])).then(() => {
+ let actor = new ex.Actor(engine.getDrawWidth() / 2 , engine.getDrawHeight() / 2, 100, 100, ex.Color.Black);
+ actor.addDrawing(bg);
+ actor.setHeight(10);
+ actor.scale.setTo(1, .2);
+ engine.add(actor);
+
+ actor.rotation = Math.PI / 2;
+
+ actor.on('postdraw', (ev: ex.PostDrawEvent) => {
+ engine.stop();
+ imagediff.expectCanvasImageMatches('ScaleSpec/scale.png', engine.canvas, done);
+ });
+ });
+
+ });
+
+});
\ No newline at end of file
diff --git a/src/spec/images/ScaleSpec/logo.png b/src/spec/images/ScaleSpec/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..aada9f8e5527d4c27adc31c2c6b99d169a1b8b35
GIT binary patch
literal 2745
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
Pfq}u()z4*}Q$iB}gK2Y0
literal 0
HcmV?d00001
diff --git a/src/spec/logo.png b/src/spec/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..aada9f8e5527d4c27adc31c2c6b99d169a1b8b35
GIT binary patch
literal 2745
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