Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(627)

Unified Diff: sky/examples/game/lib/game_tests.dart

Issue 1180703002: Fixes matrix transformations in sprites (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/examples/game/lib/game_tests.dart
diff --git a/sky/examples/game/lib/game_tests.dart b/sky/examples/game/lib/game_tests.dart
index c9800df8d001b20d524d59049744e95d303ea1ca..b74910eff00490db388c052d2f94a1243361cf26 100644
--- a/sky/examples/game/lib/game_tests.dart
+++ b/sky/examples/game/lib/game_tests.dart
@@ -2,7 +2,59 @@ part of game;
Math.Random _rand;
-class GameTests extends TransformNode{
+class GameTestsBox extends SpriteBox {
+ GameTestsBox(Node tests, SpriteBoxTransformMode mode) : super(tests, mode);
+
+ void handleEvent(Event event, BoxHitTestEntry entry) {
+
+ if (event is PointerEvent) {
+ Point pointerPos = new Point(event.x, event.y);
abarth-chromium 2015/06/11 00:20:19 You might want to use entry.localPosition rather t
+ int pointer = event.pointer;
+
+ switch (event.type) {
+ case 'pointerdown':
+ List sprites = findNodesAtPosition(pointerPos);
+ for (Node node in sprites) {
+ if (node is Sprite) {
+ Sprite sprt = node;
+ sprt.colorOverlay = new Color(0x66ff0000);
abarth-chromium 2015/06/11 00:20:19 I think you can just write: node.colorOverlay = n
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+class GameTestsSimple extends Node {
+ Image _imgAsteroid;
+ Image _imgBg;
+ Image _imgShip;
+
+ GameTestsSimple(ImageMap images) {
+ // Setup random number generator
+ _rand = new Math.Random();
+
+ // Fetch images
+ _imgBg = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/resources-auto/BurnTexture.png"];
+ _imgAsteroid = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/asteroid_big_002.png"];
+ _imgShip = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/GG_blueship_Lv3.png"];
+
+ Sprite sprt0 = new Sprite.withImage(_imgBg);
+ sprt0.size = new Size(100.0, 100.0);
+ sprt0.pivot = new Point(0.0, 0.0);
+ sprt0.position = new Point(100.0, 100.0);
+ this.addChild(sprt0);
+
+ Sprite sprt1 = new Sprite.withImage(_imgBg);
+ sprt1.size = new Size(100.0, 100.0);
+ sprt1.pivot = new Point(0.0, 0.0);
+ sprt1.position = new Point(100.0, 100.0);
+ sprt0.addChild(sprt1);
+ }
+}
+
+class GameTests extends Node{
Image _imgAsteroid;
Image _imgBg;
@@ -24,8 +76,7 @@ class GameTests extends TransformNode{
void addSprite([double scale = null]) {
TestAsteroidSprite sprt = new TestAsteroidSprite.withImage(_imgAsteroid);
- sprt.width = 64.0;
- sprt.height = 64.0;
+ sprt.size = new Size(64.0, 64.0);
if (scale == null) {
scale = _rand.nextDouble();
@@ -33,19 +84,29 @@ class GameTests extends TransformNode{
sprt.zPosition = scale;
sprt.scale = scale;
- sprt.position = new Vector2(_rand.nextDouble()*1024.0, _rand.nextDouble()*1024.0);
+ sprt.position = new Point(_rand.nextDouble()*1024.0, _rand.nextDouble()*1024.0);
this.addChild(sprt);
+
+ Sprite sprtMoon0 = new Sprite.withImage(_imgAsteroid);
+ sprtMoon0.size = new Size(32.0, 32.0);
+ sprtMoon0.position = new Point(32.0, 0.0);
+ sprt.addChild(sprtMoon0);
+
+ Sprite sprtMoon1 = new Sprite.withImage(_imgAsteroid);
+ sprtMoon1.size = new Size(32.0, 32.0);
+ sprtMoon1.position = new Point(-32.0, 0.0);
+ sprt.addChild(sprtMoon1);
}
void update(double dt) {
- for (TransformNode child in children) {
+ for (Node child in children) {
child.update(dt);
}
}
}
-class TestAsteroidSprite extends SpriteNode {
+class TestAsteroidSprite extends Sprite {
Vector2 _movementVector;
double _rotationalSpeed;
@@ -56,11 +117,14 @@ class TestAsteroidSprite extends SpriteNode {
}
void update(double dt) {
- position = position + _movementVector * scale;
+ Vector2 vPos = new Vector2(position.x, position.y);
+ Vector2 vNewPos = vPos + _movementVector * scale;
+
+ position = new Point(vNewPos[0], vNewPos[1]);
// Bounce at edges
- if (position[0] < 0 || position[0] > 1024.0) _movementVector[0] = -_movementVector[0];
- if (position[1] < 0 || position[1] > 1024.0) _movementVector[1] = -_movementVector[1];
+ if (position.x < 0 || position.x > 1024.0) _movementVector[0] = -_movementVector[0];
+ if (position.y < 0 || position.y > 1024.0) _movementVector[1] = -_movementVector[1];
rotation += _rotationalSpeed;
}

Powered by Google App Engine
This is Rietveld 408576698