summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xhistory.txt1
-rw-r--r--objects.js15
2 files changed, 14 insertions, 2 deletions
diff --git a/history.txt b/history.txt
index bfd8829..b13ecdf 100755
--- a/history.txt
+++ b/history.txt
@@ -1862,3 +1862,4 @@ ______
130808
------
* Objects: Nested Sprite Scaling
+* Objects: Nested Sprite Rotation
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) {