Skip to content

Commit f2c75c6

Browse files
committed
Blitter support
1 parent b223627 commit f2c75c6

5 files changed

Lines changed: 71 additions & 53 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: '07360840-e1c4-11e6-a539-73ab52eda7a7'
2+
build: '635b8da0-e234-11e6-9dac-3feadd6ebdbc'
33
};
44
module.exports = CHECKSUM;

v3/src/gameobjects/blitter/Blitter.js

Lines changed: 53 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@
55
*/
66

77
var CONST = require('../../const');
8+
var Bob = require('./Bob');
89
var GameObject = require('../GameObject');
10+
var Children = require('../../components/Children');
911

1012
/**
11-
* An Image is a light-weight object you can use to display anything that doesn't need physics or animation.
12-
* It can still rotate, scale, crop and receive input events. This makes it perfect for logos, backgrounds, simple buttons and other non-Sprite graphics.
13+
* A Blitter Game Object.
1314
*
14-
* @class Phaser.GameObject.Blitter
15+
* The Blitter Game Object is a special type of Container, that contains Blitter.Bob objects.
16+
* These objects can be thought of as just texture frames with a transform, and nothing more.
17+
* Bobs don't have any update methods, or the ability to have children, or any kind of special effects.
18+
* They are essentially just texture renderers, and the Blitter object creates and manages them.
19+
*
20+
* @class Blitter
1521
* @extends Phaser.GameObject
1622
* @constructor
1723
* @param {Phaser.Game} game - A reference to the currently running game.
@@ -28,48 +34,68 @@ var Blitter = function (state, x, y, key, frame)
2834
GameObject.call(this, state, x, y, _texture, _frame);
2935

3036
this.type = CONST.BLITTER;
37+
38+
this.children = new Children(this);
3139
};
3240

3341
Blitter.prototype = Object.create(GameObject.prototype);
3442
Blitter.prototype.constructor = Blitter;
3543

36-
Blitter.prototype.renderCanvas = require('./BlitterCanvasRenderer');
44+
// Blitter.prototype.renderCanvas = require('./BlitterCanvasRenderer');
3745
Blitter.prototype.renderWebGL = require('./BlitterWebGLRenderer');
3846

39-
Object.defineProperties(Blitter.prototype, {
47+
// frame MUST be part of the Blitter texture
48+
Blitter.prototype.create = function (x, y, frame, visible, index)
49+
{
50+
if (frame === undefined) { frame = this.frame; }
51+
if (visible === undefined) { visible = true; }
52+
if (index === undefined) { index = 0; }
4053

41-
width: {
54+
var bob = new Bob(this, x, y, frame, visible);
4255

43-
enumerable: true,
56+
this.children.addAt(bob, index, false);
4457

45-
get: function ()
46-
{
47-
return this.transform._scaleX * this.frame.realWidth;
48-
},
58+
return bob;
59+
};
4960

50-
set: function (value)
51-
{
52-
this.scaleX = value / this.frame.realWidth;
53-
}
61+
// frame MUST be part of the Blitter texture
62+
Blitter.prototype.createFromCallback = function (callback, quantity, frame, visible)
63+
{
64+
var bobs = this.createMultiple(quantity, key, frame, visible);
65+
66+
for (var i = 0; i < bobs.length; i++)
67+
{
68+
var bob = bobs[i];
5469

55-
},
70+
callback.call(this, bob, i);
71+
}
5672

57-
height: {
73+
return bobs;
74+
};
5875

59-
enumerable: true,
76+
// frame MUST be part of the Blitter texture
77+
Blitter.prototype.createMultiple = function (quantity, frame, visible)
78+
{
79+
if (frame === undefined) { frame = 0; }
80+
if (visible === undefined) { visible = true; }
6081

61-
get: function ()
62-
{
63-
return this.transform._scaleY * this.frame.realHeight;
64-
},
82+
if (!Array.isArray(frame))
83+
{
84+
frame = [ frame ];
85+
}
6586

66-
set: function (value)
87+
var bobs = [];
88+
var _this = this;
89+
90+
frame.forEach(function (singleFrame)
91+
{
92+
for (var i = 0; i < quantity; i++)
6793
{
68-
this.scaleY = value / this.frame.realHeight;
94+
bobs.push(_this.create(0, 0, singleFrame, visible));
6995
}
96+
});
7097

71-
}
72-
73-
});
98+
return bobs;
99+
};
74100

75101
module.exports = Blitter;
Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,29 @@
11

22
var BlitterWebGLRenderer = function (renderer, src, interpolationPercentage)
33
{
4-
// var frame = src.frame;
54
var worldAlpha = src.color.worldAlpha * 255 << 24;
5+
var len = src.children.list.length;
66

77
// Skip rendering?
88

9-
if (src.skipRender || !src.visible || worldAlpha === 0)
9+
if (src.skipRender || !src.visible || worldAlpha === 0 || len === 0)
1010
{
1111
return;
1212
}
1313

14-
// var verts = src.transform.getVertexData(interpolationPercentage, renderer);
15-
// var index = src.frame.source.glTextureIndex;
16-
// var tint = src.color._glTint;
17-
// var bg = src.color._glBg;
18-
// renderer.batch.add(frame.source, src.blendMode, verts, frame.uvs, index, alpha, tint, bg);
19-
// var transform = src.transform;
20-
2114
// Render children
22-
for (var i = 0; i < src.children.list.length; i++)
15+
for (var i = 0; i < len; i++)
2316
{
2417
var bob = src.children.list[i];
2518
var frame = bob.frame;
26-
var alpha = (worldAlpha * bob.alpha) * 255 << 24;
2719

28-
if (!bob.visible || alpha === 0 || !frame.cutWidth || !frame.cutHeight)
20+
if (!bob.visible || !frame.cutWidth || !frame.cutHeight)
2921
{
3022
continue;
3123
}
3224

33-
var index = frame.source.glTextureIndex;
34-
var verts = bob.transform.getVertexData(interpolationPercentage);
35-
36-
// tint and bg values come from the parent Blitter object, not the Bob
37-
renderer.batch.add(frame.source, src.blendMode, verts, frame.uvs, index, alpha, tint, bg);
25+
renderer.blitterBatch.add(bob.x, bob.y, frame);
3826
}
39-
40-
// renderer.spriteBatch.add(
41-
// frame,
42-
// transform._pivotX, transform._pivotY,
43-
// transform.world.tx, transform.world.ty,
44-
// transform._worldScaleX, transform._worldScaleY,
45-
// transform._worldRotation
46-
// );
4727
};
4828

4929
module.exports = BlitterWebGLRenderer;

v3/src/gameobjects/blitter/Bob.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var Bob = function (blitter, x, y, frame, visible)
2+
{
3+
this.parent = blitter;
4+
5+
this.x = x;
6+
this.y = y;
7+
this.frame = frame;
8+
this.visible = visible;
9+
};
10+
11+
module.exports = Bob;

v3/src/phaser.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var Phaser = {
4141

4242
// Required, but don't need Phaser level exports
4343

44+
require('./gameobjects/blitter/BlitterFactory');
4445
require('./gameobjects/image/ImageFactory');
4546
require('./gameobjects/container/ContainerFactory');
4647

0 commit comments

Comments
 (0)