import Renderable from './Renderable'; import glenum from './core/glenum'; /** * @constructor clay.Mesh * @extends clay.Renderable */ var Mesh = Renderable.extend(/** @lends clay.Mesh# */ { /** * Used when it is a skinned mesh * @type {clay.Skeleton} */ skeleton: null, /** * Joints indices Meshes can share the one skeleton instance and each mesh can use one part of joints. Joints indices indicate the index of joint in the skeleton instance * @type {number[]} */ joints: null }, function () { if (!this.joints) { this.joints = []; } }, { /** * Offset matrix used for multiple skinned mesh clone sharing one skeleton * @type {clay.Matrix4} */ offsetMatrix: null, isInstancedMesh: function () { return false; }, isSkinnedMesh: function () { return !!(this.skeleton && this.joints && this.joints.length > 0); }, clone: function () { var mesh = Renderable.prototype.clone.call(this); mesh.skeleton = this.skeleton; if (this.joints) { mesh.joints = this.joints.slice(); } return mesh; } }); // Enums Mesh.POINTS = glenum.POINTS; Mesh.LINES = glenum.LINES; Mesh.LINE_LOOP = glenum.LINE_LOOP; Mesh.LINE_STRIP = glenum.LINE_STRIP; Mesh.TRIANGLES = glenum.TRIANGLES; Mesh.TRIANGLE_STRIP = glenum.TRIANGLE_STRIP; Mesh.TRIANGLE_FAN = glenum.TRIANGLE_FAN; Mesh.BACK = glenum.BACK; Mesh.FRONT = glenum.FRONT; Mesh.FRONT_AND_BACK = glenum.FRONT_AND_BACK; Mesh.CW = glenum.CW; Mesh.CCW = glenum.CCW; export default Mesh;