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

Side by Side Diff: sky/examples/game/lib/game_world.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 unified diff | Download patch
OLDNEW
1 part of game; 1 part of game;
2 2
3 class GameWorld extends TransformNode { 3 class GameWorld extends Node {
4 4
5 World world; 5 World world;
6 List<Body> bodies = []; 6 List<Body> bodies = [];
7 Body _bodyShip; 7 Body _bodyShip;
8 8
9 Image _imgBg; 9 Image _imgBg;
10 Image _imgAsteroid; 10 Image _imgAsteroid;
11 Image _imgShip; 11 Image _imgShip;
12 12
13 double _steeringInput; 13 double _steeringInput;
(...skipping 21 matching lines...) Expand all
35 } 35 }
36 for (int i = 0; i < 50; i++) { 36 for (int i = 0; i < 50; i++) {
37 addAsteroid(20.0); 37 addAsteroid(20.0);
38 } 38 }
39 39
40 // Add ship 40 // Add ship
41 addShip(); 41 addShip();
42 } 42 }
43 43
44 void addBackground() { 44 void addBackground() {
45 SpriteNode sprtBg = new SpriteNode.withImage(_imgBg); 45 Sprite sprtBg = new Sprite.withImage(_imgBg);
46 sprtBg.width = width; 46 sprtBg.width = width;
47 sprtBg.height = height; 47 sprtBg.height = height;
48 sprtBg.pivot = new Vector2(0.0, 0.0); 48 sprtBg.pivot = new Vector2(0.0, 0.0);
49 this.addChild(sprtBg); 49 this.addChild(sprtBg);
50 } 50 }
51 51
52 void addAsteroid([double radius=20.0]) { 52 void addAsteroid([double radius=20.0]) {
53 53
54 // Create shape 54 // Create shape
55 final CircleShape shape = new CircleShape(); 55 final CircleShape shape = new CircleShape();
(...skipping 18 matching lines...) Expand all
74 74
75 // Set position of object 75 // Set position of object
76 Math.Random rand = new Math.Random(); 76 Math.Random rand = new Math.Random();
77 body.setTransform(new Vector2(rand.nextDouble() * this.width, rand.nextDoubl e() * this.height), 0.0); 77 body.setTransform(new Vector2(rand.nextDouble() * this.width, rand.nextDoubl e() * this.height), 0.0);
78 body.applyLinearImpulse(new Vector2(rand.nextDouble()*10000.0-5000.0, rand.n extDouble()*10000.0-5000.0), new Vector2(0.0, 0.0), true); 78 body.applyLinearImpulse(new Vector2(rand.nextDouble()*10000.0-5000.0, rand.n extDouble()*10000.0-5000.0), new Vector2(0.0, 0.0), true);
79 79
80 // Add to list 80 // Add to list
81 bodies.add(body); 81 bodies.add(body);
82 82
83 // Create sprite 83 // Create sprite
84 SpriteNode sprt = new SpriteNode.withImage(_imgAsteroid); 84 Sprite sprt = new Sprite.withImage(_imgAsteroid);
85 sprt.width = radius*2; 85 sprt.width = radius*2;
86 sprt.height = radius*2; 86 sprt.height = radius*2;
87 // sprt.colorOverlay = new Color(0x33ff0000); 87 // sprt.colorOverlay = new Color(0x33ff0000);
88 // sprt.transferMode = TransferMode.plusMode; 88 // sprt.transferMode = TransferMode.plusMode;
89 body.userData = sprt; 89 body.userData = sprt;
90 this.addChild(sprt); 90 this.addChild(sprt);
91 } 91 }
92 92
93 void addShip() { 93 void addShip() {
94 double radius = 30.0; 94 double radius = 30.0;
(...skipping 20 matching lines...) Expand all
115 body.createFixtureFromFixtureDef(activeFixtureDef); 115 body.createFixtureFromFixtureDef(activeFixtureDef);
116 116
117 // Center on screen 117 // Center on screen
118 body.setTransform(new Vector2(width/2.0, height/2.0), 90.0); 118 body.setTransform(new Vector2(width/2.0, height/2.0), 90.0);
119 119
120 // Add to list 120 // Add to list
121 bodies.add(body); 121 bodies.add(body);
122 _bodyShip = body; 122 _bodyShip = body;
123 123
124 // Create sprite 124 // Create sprite
125 SpriteNode sprt = new SpriteNode.withImage(_imgShip); 125 Sprite sprt = new Sprite.withImage(_imgShip);
126 sprt.width = radius*2; 126 sprt.width = radius*2;
127 sprt.height = radius*2; 127 sprt.height = radius*2;
128 sprt.position = new Vector2(width/2.0, height/2.0); 128 sprt.position = new Vector2(width/2.0, height/2.0);
129 body.userData = sprt; 129 body.userData = sprt;
130 this.addChild(sprt); 130 this.addChild(sprt);
131 } 131 }
132 132
133 void update(double dt) { 133 void update(double dt) {
134 // Apply thrust 134 // Apply thrust
135 if (_thrustInput != null) { 135 if (_thrustInput != null) {
(...skipping 12 matching lines...) Expand all
148 else { 148 else {
149 _lastSteeringSpeed *= 0.75; 149 _lastSteeringSpeed *= 0.75;
150 } 150 }
151 _bodyShip.setTransform(_bodyShip.position, _bodyShip.getAngle() + _lastSteer ingSpeed); 151 _bodyShip.setTransform(_bodyShip.position, _bodyShip.getAngle() + _lastSteer ingSpeed);
152 152
153 // Update all sprites 153 // Update all sprites
154 bodies.forEach(updateBody); 154 bodies.forEach(updateBody);
155 } 155 }
156 156
157 void updateBody(Body body) { 157 void updateBody(Body body) {
158 SpriteNode sprt = body.userData; 158 Sprite sprt = body.userData;
159 double rot = 0.0; //body.getRotation(); 159 double rot = 0.0; //body.getRotation();
160 160
161 // Check bounds and warp objects 161 // Check bounds and warp objects
162 if (body.position[0] < -sprt.width/2) { 162 if (body.position[0] < -sprt.width/2) {
163 body.setTransform(new Vector2(body.position[0] + this.width + sprt.width, body.position[1]), rot); 163 body.setTransform(new Vector2(body.position[0] + this.width + sprt.width, body.position[1]), rot);
164 } 164 }
165 if (body.position[0] > this.width + sprt.width/2) { 165 if (body.position[0] > this.width + sprt.width/2) {
166 body.setTransform(new Vector2(body.position[0] - (this.width + sprt.width) , body.position[1]), rot); 166 body.setTransform(new Vector2(body.position[0] - (this.width + sprt.width) , body.position[1]), rot);
167 } 167 }
168 if (body.position[1] < -sprt.height/2) { 168 if (body.position[1] < -sprt.height/2) {
(...skipping 13 matching lines...) Expand all
182 } 182 }
183 183
184 void controlThrust(double input) { 184 void controlThrust(double input) {
185 _thrustInput = input; 185 _thrustInput = input;
186 } 186 }
187 187
188 void controlFire() { 188 void controlFire() {
189 189
190 } 190 }
191 } 191 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698