summaryrefslogtreecommitdiff
path: root/objects.js
diff options
context:
space:
mode:
authorjmoenig <jens@moenig.org>2013-08-08 13:59:59 +0200
committerjmoenig <jens@moenig.org>2013-08-08 13:59:59 +0200
commit289dd6b2e69894546d47686cdadb8cc42aa6fd30 (patch)
treef1bf0ee16587080e922427b68fe19639f2d07cee /objects.js
parent9bbd3795284bbd94e461b610f20645b02315098a (diff)
downloadsnap-byow-289dd6b2e69894546d47686cdadb8cc42aa6fd30.tar.gz
snap-byow-289dd6b2e69894546d47686cdadb8cc42aa6fd30.zip
Nested Sprite Rotation
Diffstat (limited to 'objects.js')
-rw-r--r--objects.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/objects.js b/objects.js
index 9147ee8..af57712 100644
--- a/objects.js
+++ b/objects.js
@@ -2693,11 +2693,22 @@ SpriteMorph.prototype.forward = function (steps) {
SpriteMorph.prototype.setHeading = function (degrees) {
var x = this.xPosition(),
- y = this.yPosition();
+ y = this.yPosition(),
+ turn = degrees - this.heading;
+
+ // apply to myself
this.changed();
SpriteMorph.uber.setHeading.call(this, degrees);
- this.silentGotoXY(x, y);
+ this.silentGotoXY(x, y, true); // just me
this.positionTalkBubble();
+
+ // propagate to my parts
+ this.parts.forEach(function (part) {
+ var pos = new Point(part.xPosition(), part.yPosition()),
+ trg = pos.rotateBy(radians(turn), new Point(x, y));
+ part.turn(turn);
+ part.gotoXY(trg.x, trg.y);
+ });
};
SpriteMorph.prototype.faceToXY = function (x, y) {