64 lines
1.5 KiB
JavaScript
64 lines
1.5 KiB
JavaScript
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;
|