diff --git a/Phaser/gameobjects/Emitter.ts b/Phaser/gameobjects/Emitter.ts
index 00122c3d..fdceb6c0 100644
--- a/Phaser/gameobjects/Emitter.ts
+++ b/Phaser/gameobjects/Emitter.ts
@@ -372,7 +372,7 @@ module Phaser {
particle.acceleration.y = this.gravity;
- if (this.minRotation != this.maxRotation)
+ if (this.minRotation != this.maxRotation && this.minRotation !== 0 && this.maxRotation !== 0)
{
particle.angularVelocity = this.minRotation + this._game.math.random() * (this.maxRotation - this.minRotation);
}
diff --git a/Phaser/gameobjects/Sprite.ts b/Phaser/gameobjects/Sprite.ts
index 15fc1a57..14eb19e8 100644
--- a/Phaser/gameobjects/Sprite.ts
+++ b/Phaser/gameobjects/Sprite.ts
@@ -289,7 +289,7 @@ module Phaser {
this._game.stage.context.fillRect(this._dx, this._dy, this._dw, this._dh);
}
- if (this.flipped === true || this.rotation !== 0)
+ if (this.flipped === true || this.rotation !== 0 || this.rotationOffset !== 0)
{
//this._game.stage.context.translate(0, 0);
this._game.stage.context.restore();
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index 7b988313..d4bcfd6c 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -107,6 +107,10 @@
ballscroller.ts
+
+
+ blasteroids.ts
+
parallax.ts
@@ -121,10 +125,6 @@
simple scrollzone.ts
-
-
- texture repeat.ts
-
align.ts
diff --git a/Tests/assets/sprites/particle1.png b/Tests/assets/sprites/particle1.png
new file mode 100644
index 00000000..adf5b3c1
Binary files /dev/null and b/Tests/assets/sprites/particle1.png differ
diff --git a/Tests/phaser.js b/Tests/phaser.js
index 3e72f0d0..a02d494a 100644
--- a/Tests/phaser.js
+++ b/Tests/phaser.js
@@ -1593,7 +1593,7 @@ var Phaser;
this._game.stage.context.fillStyle = 'rgb(255,255,255)';
this._game.stage.context.fillRect(this._dx, this._dy, this._dw, this._dh);
}
- if(this.flipped === true || this.rotation !== 0) {
+ if(this.flipped === true || this.rotation !== 0 || this.rotationOffset !== 0) {
//this._game.stage.context.translate(0, 0);
this._game.stage.context.restore();
}
@@ -10469,7 +10469,7 @@ var Phaser;
particle.velocity.y = this.minParticleSpeed.y;
}
particle.acceleration.y = this.gravity;
- if(this.minRotation != this.maxRotation) {
+ if(this.minRotation != this.maxRotation && this.minRotation !== 0 && this.maxRotation !== 0) {
particle.angularVelocity = this.minRotation + this._game.math.random() * (this.maxRotation - this.minRotation);
} else {
particle.angularVelocity = this.minRotation;
diff --git a/Tests/scrollzones/blasteroids.js b/Tests/scrollzones/blasteroids.js
new file mode 100644
index 00000000..9cb7b5fc
--- /dev/null
+++ b/Tests/scrollzones/blasteroids.js
@@ -0,0 +1,87 @@
+///
+///
+(function () {
+ var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
+ function init() {
+ myGame.loader.addImageFile('nashwan', 'assets/sprites/xenon2_ship.png');
+ myGame.loader.addImageFile('starfield', 'assets/misc/starfield.jpg');
+ myGame.loader.addImageFile('jet', 'assets/sprites/particle1.png');
+ myGame.loader.addImageFile('bullet', 'assets/misc/bullet1.png');
+ myGame.loader.load();
+ }
+ var scroller;
+ var emitter;
+ var ship;
+ var bullets;
+ var speed = 0;
+ var fireRate = 0;
+ var shipMotion;
+ function create() {
+ scroller = myGame.createScrollZone('starfield', 0, 0, 1024, 1024);
+ emitter = myGame.createEmitter(myGame.stage.centerX + 16, myGame.stage.centerY + 12);
+ emitter.makeParticles('jet', 250, 0, false, 0);
+ emitter.setRotation(0, 0);
+ bullets = myGame.createGroup(50);
+ // Create our bullet pool
+ for(var i = 0; i < 50; i++) {
+ var tempBullet = new Phaser.Sprite(myGame, myGame.stage.centerX, myGame.stage.centerY, 'bullet');
+ tempBullet.exists = false;
+ tempBullet.rotationOffset = 90;
+ bullets.add(tempBullet);
+ }
+ ship = myGame.createSprite(myGame.stage.centerX, myGame.stage.centerY, 'nashwan');
+ // We do this because the ship was drawn facing up, but 0 degrees is pointing to the right
+ ship.rotationOffset = 90;
+ }
+ function update() {
+ // Recycle bullets
+ bullets.forEach(recycleBullet);
+ ship.angularVelocity = 0;
+ if(myGame.input.keyboard.isDown(Phaser.Keyboard.LEFT)) {
+ ship.angularVelocity = -200;
+ } else if(myGame.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) {
+ ship.angularVelocity = 200;
+ }
+ if(myGame.input.keyboard.isDown(Phaser.Keyboard.UP)) {
+ speed += 0.1;
+ if(speed > 10) {
+ speed = 10;
+ }
+ } else {
+ speed -= 0.1;
+ if(speed < 0) {
+ speed = 0;
+ }
+ }
+ shipMotion = myGame.motion.velocityFromAngle(ship.angle, speed);
+ scroller.setSpeed(shipMotion.x, shipMotion.y);
+ // emit particles
+ if(speed > 2) {
+ // We use the opposite of the motion because the jets emit out the back of the ship
+ // The 20 and 30 values just keep them nice and fast
+ emitter.setXSpeed(-(shipMotion.x * 20), -(shipMotion.x * 30));
+ emitter.setYSpeed(-(shipMotion.y * 20), -(shipMotion.y * 30));
+ emitter.emitParticle();
+ }
+ if(myGame.input.keyboard.isDown(Phaser.Keyboard.SPACEBAR)) {
+ fire();
+ }
+ }
+ function recycleBullet(bullet) {
+ if(bullet.exists && bullet.x < -40 || bullet.x > 840 || bullet.y < -40 || bullet.y > 640) {
+ bullet.exists = false;
+ }
+ }
+ function fire() {
+ if(myGame.time.now > fireRate) {
+ var b = bullets.getFirstAvailable();
+ b.x = ship.x;
+ b.y = ship.y - 26;
+ var bulletMotion = myGame.motion.velocityFromAngle(ship.angle, 400);
+ b.revive();
+ b.angle = ship.angle;
+ b.velocity.setTo(bulletMotion.x, bulletMotion.y);
+ fireRate = myGame.time.now + 100;
+ }
+ }
+})();
diff --git a/Tests/scrollzones/blasteroids.ts b/Tests/scrollzones/blasteroids.ts
new file mode 100644
index 00000000..b3611525
--- /dev/null
+++ b/Tests/scrollzones/blasteroids.ts
@@ -0,0 +1,138 @@
+///
+///
+
+(function () {
+
+ var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
+
+ function init() {
+
+ myGame.loader.addImageFile('nashwan', 'assets/sprites/xenon2_ship.png');
+ myGame.loader.addImageFile('starfield', 'assets/misc/starfield.jpg');
+ myGame.loader.addImageFile('jet', 'assets/sprites/particle1.png');
+ myGame.loader.addImageFile('bullet', 'assets/misc/bullet1.png');
+
+ myGame.loader.load();
+
+ }
+
+ var scroller: Phaser.ScrollZone;
+ var emitter: Phaser.Emitter;
+ var ship: Phaser.Sprite;
+ var bullets: Phaser.Group;
+
+ var speed: number = 0;
+ var fireRate: number = 0;
+ var shipMotion: Phaser.Point;
+
+ function create() {
+
+ scroller = myGame.createScrollZone('starfield', 0, 0, 1024, 1024);
+
+ emitter = myGame.createEmitter(myGame.stage.centerX + 16, myGame.stage.centerY + 12);
+ emitter.makeParticles('jet', 250, 0, false, 0);
+ emitter.setRotation(0, 0);
+
+ bullets = myGame.createGroup(50);
+
+ // Create our bullet pool
+ for (var i = 0; i < 50; i++)
+ {
+ var tempBullet = new Phaser.Sprite(myGame, myGame.stage.centerX, myGame.stage.centerY, 'bullet');
+ tempBullet.exists = false;
+ tempBullet.rotationOffset = 90;
+ bullets.add(tempBullet);
+ }
+
+ ship = myGame.createSprite(myGame.stage.centerX, myGame.stage.centerY, 'nashwan');
+
+ // We do this because the ship was drawn facing up, but 0 degrees is pointing to the right
+ ship.rotationOffset = 90;
+
+ }
+
+ function update() {
+
+ // Recycle bullets
+ bullets.forEach(recycleBullet);
+
+ ship.angularVelocity = 0;
+
+ if (myGame.input.keyboard.isDown(Phaser.Keyboard.LEFT))
+ {
+ ship.angularVelocity = -200;
+ }
+ else if (myGame.input.keyboard.isDown(Phaser.Keyboard.RIGHT))
+ {
+ ship.angularVelocity = 200;
+ }
+
+ if (myGame.input.keyboard.isDown(Phaser.Keyboard.UP))
+ {
+ speed += 0.1;
+
+ if (speed > 10)
+ {
+ speed = 10;
+ }
+ }
+ else
+ {
+ speed -= 0.1;
+
+ if (speed < 0) {
+ speed = 0;
+ }
+ }
+
+ shipMotion = myGame.motion.velocityFromAngle(ship.angle, speed);
+
+ scroller.setSpeed(shipMotion.x, shipMotion.y);
+
+ // emit particles
+ if (speed > 2)
+ {
+ // We use the opposite of the motion because the jets emit out the back of the ship
+ // The 20 and 30 values just keep them nice and fast
+ emitter.setXSpeed(-(shipMotion.x * 20), -(shipMotion.x * 30));
+ emitter.setYSpeed(-(shipMotion.y * 20), -(shipMotion.y * 30));
+ emitter.emitParticle();
+ }
+
+ if (myGame.input.keyboard.isDown(Phaser.Keyboard.SPACEBAR))
+ {
+ fire();
+ }
+
+ }
+
+ function recycleBullet(bullet:Phaser.Sprite) {
+
+ if (bullet.exists && bullet.x < -40 || bullet.x > 840 || bullet.y < -40 || bullet.y > 640)
+ {
+ bullet.exists = false;
+ }
+
+ }
+
+ function fire() {
+
+ if (myGame.time.now > fireRate)
+ {
+ var b:Phaser.Sprite = bullets.getFirstAvailable();
+
+ b.x = ship.x;
+ b.y = ship.y - 26;
+
+ var bulletMotion = myGame.motion.velocityFromAngle(ship.angle, 400);
+
+ b.revive();
+ b.angle = ship.angle;
+ b.velocity.setTo(bulletMotion.x, bulletMotion.y);
+
+ fireRate = myGame.time.now + 100;
+ }
+
+ }
+
+})();
diff --git a/Tests/scrollzones/texture repeat.js b/Tests/scrollzones/texture repeat.js
deleted file mode 100644
index 3aed931c..00000000
--- a/Tests/scrollzones/texture repeat.js
+++ /dev/null
@@ -1,51 +0,0 @@
-///
-///
-(function () {
- var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
- function init() {
- myGame.loader.addImageFile('nashwan', 'assets/sprites/xenon2_ship.png');
- myGame.loader.addImageFile('starfield', 'assets/misc/starfield.jpg');
- myGame.loader.addImageFile('jet', 'assets/sprites/jets.png');
- myGame.loader.load();
- }
- var scroller;
- var emitter;
- var ship;
- var speed = 0;
- function create() {
- scroller = myGame.createScrollZone('starfield', 0, 0, 1024, 1024);
- emitter = myGame.createEmitter(myGame.stage.centerX + 16, myGame.stage.centerY + 12);
- emitter.makeParticles('jet', 250, 0, false, 0);
- //emitter.lifespan
- ship = myGame.createSprite(myGame.stage.centerX, myGame.stage.centerY, 'nashwan');
- // We do this because the ship was drawn facing up, but 0 degrees is pointing to the right
- ship.rotationOffset = 90;
- }
- function update() {
- ship.angularVelocity = 0;
- if(myGame.input.keyboard.isDown(Phaser.Keyboard.LEFT)) {
- ship.angularVelocity = -200;
- } else if(myGame.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) {
- ship.angularVelocity = 200;
- }
- if(myGame.input.keyboard.isDown(Phaser.Keyboard.UP)) {
- speed += 0.1;
- if(speed > 10) {
- speed = 10;
- }
- } else {
- speed -= 0.1;
- if(speed < 0) {
- speed = 0;
- }
- }
- var motion = myGame.motion.velocityFromAngle(ship.angle, speed);
- scroller.setSpeed(motion.x, motion.y);
- // emit particles
- if(speed > 2) {
- emitter.setXSpeed(-(motion.x * 20), -(motion.x * 30));
- emitter.setYSpeed(-(motion.y * 20), -(motion.y * 30));
- emitter.emitParticle();
- }
- }
-})();
diff --git a/Tests/scrollzones/texture repeat.ts b/Tests/scrollzones/texture repeat.ts
deleted file mode 100644
index 2ada7f16..00000000
--- a/Tests/scrollzones/texture repeat.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-///
-///
-
-(function () {
-
- var myGame = new Phaser.Game(this, 'game', 800, 600, init, create, update);
-
- function init() {
-
- myGame.loader.addImageFile('nashwan', 'assets/sprites/xenon2_ship.png');
- myGame.loader.addImageFile('starfield', 'assets/misc/starfield.jpg');
- myGame.loader.addImageFile('jet', 'assets/sprites/jets.png');
-
- myGame.loader.load();
-
- }
-
- var scroller: Phaser.ScrollZone;
- var emitter: Phaser.Emitter;
- var ship: Phaser.Sprite;
-
- var speed: number = 0;
-
- function create() {
-
- scroller = myGame.createScrollZone('starfield', 0, 0, 1024, 1024);
-
- emitter = myGame.createEmitter(myGame.stage.centerX + 16, myGame.stage.centerY + 12);
- emitter.makeParticles('jet', 250, 0, false, 0);
- //emitter.lifespan
-
-
- ship = myGame.createSprite(myGame.stage.centerX, myGame.stage.centerY, 'nashwan');
-
- // We do this because the ship was drawn facing up, but 0 degrees is pointing to the right
- ship.rotationOffset = 90;
-
- }
-
- function update() {
-
- ship.angularVelocity = 0;
-
- if (myGame.input.keyboard.isDown(Phaser.Keyboard.LEFT))
- {
- ship.angularVelocity = -200;
- }
- else if (myGame.input.keyboard.isDown(Phaser.Keyboard.RIGHT))
- {
- ship.angularVelocity = 200;
- }
-
- if (myGame.input.keyboard.isDown(Phaser.Keyboard.UP))
- {
- speed += 0.1;
-
- if (speed > 10)
- {
- speed = 10;
- }
- }
- else
- {
- speed -= 0.1;
-
- if (speed < 0) {
- speed = 0;
- }
- }
-
- var motion:Phaser.Point = myGame.motion.velocityFromAngle(ship.angle, speed);
-
- scroller.setSpeed(motion.x, motion.y);
-
- // emit particles
- if (speed > 2)
- {
- emitter.setXSpeed(-(motion.x * 20), -(motion.x * 30));
- emitter.setYSpeed(-(motion.y * 20), -(motion.y * 30));
- emitter.emitParticle();
- }
-
- }
-
-})();
diff --git a/build/phaser.js b/build/phaser.js
index 3e72f0d0..a02d494a 100644
--- a/build/phaser.js
+++ b/build/phaser.js
@@ -1593,7 +1593,7 @@ var Phaser;
this._game.stage.context.fillStyle = 'rgb(255,255,255)';
this._game.stage.context.fillRect(this._dx, this._dy, this._dw, this._dh);
}
- if(this.flipped === true || this.rotation !== 0) {
+ if(this.flipped === true || this.rotation !== 0 || this.rotationOffset !== 0) {
//this._game.stage.context.translate(0, 0);
this._game.stage.context.restore();
}
@@ -10469,7 +10469,7 @@ var Phaser;
particle.velocity.y = this.minParticleSpeed.y;
}
particle.acceleration.y = this.gravity;
- if(this.minRotation != this.maxRotation) {
+ if(this.minRotation != this.maxRotation && this.minRotation !== 0 && this.maxRotation !== 0) {
particle.angularVelocity = this.minRotation + this._game.math.random() * (this.maxRotation - this.minRotation);
} else {
particle.angularVelocity = this.minRotation;