|
@@ -8,8 +8,8 @@ var BABYLON;
|
|
this.sprites = new Array();
|
|
this.sprites = new Array();
|
|
this.renderingGroupId = 0;
|
|
this.renderingGroupId = 0;
|
|
this.fogEnabled = true;
|
|
this.fogEnabled = true;
|
|
- this._vertexDeclaration = [3, 4, 4, 4];
|
|
|
|
- this._vertexStrideSize = 15 * 4; // 15 floats per sprite (x, y, z, angle, size, offsetX, offsetY, invertU, invertV, cellIndexX, cellIndexY, color)
|
|
|
|
|
|
+ this._vertexDeclaration = [4, 4, 4, 4];
|
|
|
|
+ this._vertexStrideSize = 16 * 4; // 15 floats per sprite (x, y, z, angle, sizeX, sizeY, offsetX, offsetY, invertU, invertV, cellIndexX, cellIndexY, color)
|
|
this._capacity = capacity;
|
|
this._capacity = capacity;
|
|
this._spriteTexture = new BABYLON.Texture(imgUrl, scene, true, false, samplingMode);
|
|
this._spriteTexture = new BABYLON.Texture(imgUrl, scene, true, false, samplingMode);
|
|
this._spriteTexture.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
|
|
this._spriteTexture.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
|
|
@@ -18,8 +18,6 @@ var BABYLON;
|
|
this._scene = scene;
|
|
this._scene = scene;
|
|
this._scene.spriteManagers.push(this);
|
|
this._scene.spriteManagers.push(this);
|
|
// VBO
|
|
// VBO
|
|
- this._vertexDeclaration = [3, 4, 4, 4];
|
|
|
|
- this._vertexStrideSize = 15 * 4;
|
|
|
|
this._vertexBuffer = scene.getEngine().createDynamicVertexBuffer(capacity * this._vertexStrideSize * 4);
|
|
this._vertexBuffer = scene.getEngine().createDynamicVertexBuffer(capacity * this._vertexStrideSize * 4);
|
|
var indices = [];
|
|
var indices = [];
|
|
var index = 0;
|
|
var index = 0;
|
|
@@ -39,7 +37,7 @@ var BABYLON;
|
|
this._effectFog = this._scene.getEngine().createEffect("sprites", ["position", "options", "cellInfo", "color"], ["view", "projection", "textureInfos", "alphaTest", "vFogInfos", "vFogColor"], ["diffuseSampler"], "#define FOG");
|
|
this._effectFog = this._scene.getEngine().createEffect("sprites", ["position", "options", "cellInfo", "color"], ["view", "projection", "textureInfos", "alphaTest", "vFogInfos", "vFogColor"], ["diffuseSampler"], "#define FOG");
|
|
}
|
|
}
|
|
SpriteManager.prototype._appendSpriteVertex = function (index, sprite, offsetX, offsetY, rowSize) {
|
|
SpriteManager.prototype._appendSpriteVertex = function (index, sprite, offsetX, offsetY, rowSize) {
|
|
- var arrayOffset = index * 15;
|
|
|
|
|
|
+ var arrayOffset = index * 16;
|
|
if (offsetX === 0)
|
|
if (offsetX === 0)
|
|
offsetX = this._epsilon;
|
|
offsetX = this._epsilon;
|
|
else if (offsetX === 1)
|
|
else if (offsetX === 1)
|
|
@@ -52,19 +50,20 @@ var BABYLON;
|
|
this._vertices[arrayOffset + 1] = sprite.position.y;
|
|
this._vertices[arrayOffset + 1] = sprite.position.y;
|
|
this._vertices[arrayOffset + 2] = sprite.position.z;
|
|
this._vertices[arrayOffset + 2] = sprite.position.z;
|
|
this._vertices[arrayOffset + 3] = sprite.angle;
|
|
this._vertices[arrayOffset + 3] = sprite.angle;
|
|
- this._vertices[arrayOffset + 4] = sprite.size;
|
|
|
|
- this._vertices[arrayOffset + 5] = offsetX;
|
|
|
|
- this._vertices[arrayOffset + 6] = offsetY;
|
|
|
|
- this._vertices[arrayOffset + 7] = sprite.invertU ? 1 : 0;
|
|
|
|
- this._vertices[arrayOffset + 8] = sprite.invertV ? 1 : 0;
|
|
|
|
|
|
+ this._vertices[arrayOffset + 4] = sprite.width;
|
|
|
|
+ this._vertices[arrayOffset + 5] = sprite.height;
|
|
|
|
+ this._vertices[arrayOffset + 6] = offsetX;
|
|
|
|
+ this._vertices[arrayOffset + 7] = offsetY;
|
|
|
|
+ this._vertices[arrayOffset + 8] = sprite.invertU ? 1 : 0;
|
|
|
|
+ this._vertices[arrayOffset + 9] = sprite.invertV ? 1 : 0;
|
|
var offset = (sprite.cellIndex / rowSize) >> 0;
|
|
var offset = (sprite.cellIndex / rowSize) >> 0;
|
|
- this._vertices[arrayOffset + 9] = sprite.cellIndex - offset * rowSize;
|
|
|
|
- this._vertices[arrayOffset + 10] = offset;
|
|
|
|
|
|
+ this._vertices[arrayOffset + 10] = sprite.cellIndex - offset * rowSize;
|
|
|
|
+ this._vertices[arrayOffset + 11] = offset;
|
|
// Color
|
|
// Color
|
|
- this._vertices[arrayOffset + 11] = sprite.color.r;
|
|
|
|
- this._vertices[arrayOffset + 12] = sprite.color.g;
|
|
|
|
- this._vertices[arrayOffset + 13] = sprite.color.b;
|
|
|
|
- this._vertices[arrayOffset + 14] = sprite.color.a;
|
|
|
|
|
|
+ this._vertices[arrayOffset + 12] = sprite.color.r;
|
|
|
|
+ this._vertices[arrayOffset + 13] = sprite.color.g;
|
|
|
|
+ this._vertices[arrayOffset + 14] = sprite.color.b;
|
|
|
|
+ this._vertices[arrayOffset + 15] = sprite.color.a;
|
|
};
|
|
};
|
|
SpriteManager.prototype.render = function () {
|
|
SpriteManager.prototype.render = function () {
|
|
// Check
|
|
// Check
|