2016-12-15 14:53:39 +01:00
|
|
|
/**
|
|
|
|
* Raw Mesh API object - should always correspond with the Mesh Schema
|
|
|
|
* @param id
|
|
|
|
* @param meshType
|
|
|
|
* @param name
|
|
|
|
* @param vertices GameLib.D3.Vertex[]
|
|
|
|
* @param faces GameLib.D3.TriangleFace[]
|
|
|
|
* @param faceVertexUvs
|
|
|
|
* @param materials GameLib.D3.API.Material[]
|
2016-12-20 17:27:36 +01:00
|
|
|
* @param parentMesh
|
|
|
|
* @param parentScene
|
2016-12-15 14:53:39 +01:00
|
|
|
* @param skeleton
|
|
|
|
* @param skinIndices
|
|
|
|
* @param skinWeights
|
|
|
|
* @param position GameLib.API.Vector3
|
|
|
|
* @param quaternion GameLib.API.Quaternion
|
|
|
|
* @param scale GameLib.API.Vector3
|
|
|
|
* @param localPosition GameLib.API.Vector3
|
|
|
|
* @param localRotation GameLib.API.Vector3
|
|
|
|
* @param localScale GameLib.API.Vector3
|
|
|
|
* @param up
|
2016-12-22 17:22:19 +01:00
|
|
|
* @param modelMatrix GameLib.API.Matrix4
|
2016-12-15 14:53:39 +01:00
|
|
|
* @constructor
|
|
|
|
*/
|
|
|
|
GameLib.D3.API.Mesh = function(
|
|
|
|
id,
|
|
|
|
meshType,
|
|
|
|
name,
|
|
|
|
vertices,
|
|
|
|
faces,
|
|
|
|
faceVertexUvs,
|
|
|
|
materials,
|
2016-12-20 17:27:36 +01:00
|
|
|
parentMesh,
|
|
|
|
parentScene,
|
2016-12-15 14:53:39 +01:00
|
|
|
skeleton,
|
|
|
|
skinIndices,
|
|
|
|
skinWeights,
|
|
|
|
position,
|
|
|
|
quaternion,
|
|
|
|
scale,
|
|
|
|
localPosition,
|
|
|
|
localRotation,
|
|
|
|
localScale,
|
2016-12-22 17:22:19 +01:00
|
|
|
up,
|
|
|
|
modelMatrix
|
2016-12-15 14:53:39 +01:00
|
|
|
) {
|
2016-12-16 16:03:48 +01:00
|
|
|
GameLib.Component.call(
|
|
|
|
this,
|
2016-12-20 17:27:36 +01:00
|
|
|
GameLib.Component.COMPONENT_MESH,
|
|
|
|
{
|
|
|
|
'parentMesh' : GameLib.D3.Mesh,
|
|
|
|
'parentScene' : GameLib.D3.Scene
|
|
|
|
}
|
2016-12-16 16:03:48 +01:00
|
|
|
);
|
|
|
|
|
2016-12-15 14:53:39 +01:00
|
|
|
if (GameLib.Utils.UndefinedOrNull(id)) {
|
|
|
|
id = GameLib.Utils.RandomId();
|
|
|
|
}
|
|
|
|
this.id = id;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(meshType)) {
|
|
|
|
meshType = GameLib.D3.Mesh.TYPE_NORMAL;
|
|
|
|
}
|
|
|
|
this.meshType = meshType;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(name)) {
|
|
|
|
name = 'Mesh (' + meshType + ')';
|
|
|
|
}
|
|
|
|
this.name = name;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(vertices)) {
|
|
|
|
throw new Error('Cannot create a mesh with no vertices');
|
|
|
|
}
|
|
|
|
this.vertices = vertices;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(faces)) {
|
|
|
|
throw new Error('Cannot create a mesh with no faces');
|
|
|
|
}
|
|
|
|
this.faces = faces;
|
|
|
|
|
2016-12-20 17:27:36 +01:00
|
|
|
if (GameLib.Utils.UndefinedOrNull(parentMesh)) {
|
|
|
|
parentMesh = null;
|
2016-12-15 14:53:39 +01:00
|
|
|
}
|
2016-12-20 17:27:36 +01:00
|
|
|
this.parentMesh = parentMesh;
|
2016-12-15 14:53:39 +01:00
|
|
|
|
2016-12-20 17:27:36 +01:00
|
|
|
if (GameLib.Utils.UndefinedOrNull(parentScene)) {
|
|
|
|
parentScene = null;
|
2016-12-15 14:53:39 +01:00
|
|
|
}
|
2016-12-20 17:27:36 +01:00
|
|
|
this.parentScene = parentScene;
|
2016-12-15 14:53:39 +01:00
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(skeleton)) {
|
|
|
|
skeleton = null;
|
|
|
|
}
|
|
|
|
this.skeleton = skeleton;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(faceVertexUvs)) {
|
|
|
|
faceVertexUvs = [];
|
|
|
|
}
|
|
|
|
this.faceVertexUvs = faceVertexUvs;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(skinIndices)) {
|
|
|
|
skinIndices = [];
|
|
|
|
}
|
|
|
|
this.skinIndices = skinIndices;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(skinWeights)) {
|
|
|
|
skinWeights = [];
|
|
|
|
}
|
|
|
|
this.skinWeights = skinWeights;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(materials)) {
|
|
|
|
materials = [];
|
|
|
|
}
|
|
|
|
this.materials = materials;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(position)) {
|
|
|
|
position = new GameLib.API.Vector3(0,0,0);
|
|
|
|
}
|
|
|
|
this.position = position;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(quaternion)) {
|
|
|
|
quaternion = new GameLib.API.Quaternion();
|
|
|
|
}
|
|
|
|
this.quaternion = quaternion;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(scale)) {
|
|
|
|
scale = new GameLib.API.Vector3(1,1,1);
|
|
|
|
}
|
|
|
|
this.scale = scale;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(localPosition)) {
|
|
|
|
localPosition = new GameLib.API.Vector3(0,0,0);
|
|
|
|
}
|
|
|
|
this.localPosition = localPosition;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(localRotation)) {
|
|
|
|
localRotation = new GameLib.API.Vector3(0,0,0);
|
|
|
|
}
|
|
|
|
this.localRotation = localRotation;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(localScale)) {
|
|
|
|
localScale = new GameLib.API.Vector3(1,1,1);
|
|
|
|
}
|
|
|
|
this.localScale = localScale;
|
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(up)) {
|
|
|
|
up = new GameLib.API.Vector3(0,1,0);
|
|
|
|
}
|
|
|
|
this.up = up;
|
2016-12-22 17:22:19 +01:00
|
|
|
|
|
|
|
if (GameLib.Utils.UndefinedOrNull(modelMatrix)) {
|
|
|
|
modelMatrix = new GameLib.API.Matrix4();
|
|
|
|
}
|
|
|
|
this.modelMatrix = modelMatrix;
|
2016-12-16 16:03:48 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
GameLib.D3.API.Mesh.prototype = Object.create(GameLib.Component.prototype);
|
|
|
|
GameLib.D3.API.Mesh.prototype.constructor = GameLib.D3.API.Mesh;
|