phaser/v3/src/gameobjects/mesh/Mesh.js

80 lines
1.9 KiB
JavaScript
Raw Normal View History

2017-05-16 23:07:52 +00:00
var Class = require('../../utils/Class');
var GameObject = require('../GameObject');
var Components = require('../../components');
var MeshRender = require('./MeshRender');
var Mesh = new Class({
Extends: GameObject,
Mixins: [
Components.Alpha,
Components.BlendMode,
Components.Flip,
Components.GetBounds,
Components.Origin,
Components.RenderTarget,
Components.ScaleMode,
Components.Size,
Components.Texture,
Components.Transform,
Components.Visible,
MeshRender
],
initialize:
2017-05-22 19:29:27 +00:00
function Mesh (state, x, y, vertices, uv, indices, colors, alphas, texture, frame)
2017-05-16 23:07:52 +00:00
{
GameObject.call(this, state, 'Mesh');
this.setTexture(texture, frame);
this.setPosition(x, y);
this.setSizeToFrame();
this.setOrigin();
2017-05-17 16:12:17 +00:00
if (vertices.length !== uv.length)
{
throw new Error('Phaser: Vertex count must match UV count');
}
2017-05-22 19:29:27 +00:00
if (colors.length > 0 && colors.length < (vertices.length / 2)|0)
{
throw new Error('Phaser: Color count must match Vertex count');
}
2017-05-22 19:29:27 +00:00
if (alphas.length > 0 && alphas.length < (vertices.length / 2)|0)
{
throw new Error('Phaser: Alpha count must match Vertex count');
}
var i;
2017-05-22 19:29:27 +00:00
if (colors.length === 0)
{
for (i = 0; i < (vertices.length / 2)|0; ++i)
2017-05-22 19:29:27 +00:00
{
colors[i] = 0xFFFFFF;
}
}
if (alphas.length === 0)
{
for (i = 0; i < (vertices.length / 2)|0; ++i)
2017-05-22 19:29:27 +00:00
{
alphas[i] = 1.0;
}
}
2017-05-17 16:12:17 +00:00
this.vertices = new Float32Array(vertices);
this.uv = new Float32Array(uv);
2017-05-18 19:57:05 +00:00
this.indices = new Uint16Array(indices);
2017-05-22 19:29:27 +00:00
this.colors = new Uint32Array(colors);
this.alphas = new Float32Array(alphas);
2017-05-16 23:07:52 +00:00
}
});
module.exports = Mesh;