/** * 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[] * @param parentMesh * @param parentScene * @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 * @param modelMatrix GameLib.API.Matrix4 * @param parentEntity * @param renderOrder * @constructor */ GameLib.D3.API.Mesh = function( id, meshType, name, vertices, faces, faceVertexUvs, materials, parentMesh, parentScene, skeleton, skinIndices, skinWeights, position, quaternion, scale, localPosition, localRotation, localScale, up, modelMatrix, parentEntity, renderOrder ) { GameLib.Component.call( this, GameLib.Component.COMPONENT_MESH, { 'parentMesh' : GameLib.D3.Mesh, 'parentScene' : GameLib.D3.Scene }, null, parentEntity ); 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)) { vertices = []; } this.vertices = vertices; if (GameLib.Utils.UndefinedOrNull(faces)) { faces = []; } this.faces = faces; if (GameLib.Utils.UndefinedOrNull(parentMesh)) { parentMesh = null; } this.parentMesh = parentMesh; if (GameLib.Utils.UndefinedOrNull(parentScene)) { parentScene = null; } this.parentScene = parentScene; 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; if (GameLib.Utils.UndefinedOrNull(modelMatrix)) { modelMatrix = new GameLib.API.Matrix4(); } this.modelMatrix = modelMatrix; if (GameLib.Utils.UndefinedOrNull(renderOrder)) { renderOrder = 0; } this.renderOrder = renderOrder; }; GameLib.D3.API.Mesh.prototype = Object.create(GameLib.Component.prototype); GameLib.D3.API.Mesh.prototype.constructor = GameLib.D3.API.Mesh; /** * Returns an API Mesh from an Object mesh * @param objectMesh * @constructor */ GameLib.D3.API.Mesh.FromObjectMesh = function (objectMesh){ var apiSkeleton = null; if (objectMesh.skeleton) { apiSkeleton = GameLib.D3.API.Skeleton.FromObjectSkeleton(objectMesh.skeleton); } return new GameLib.D3.API.Mesh( objectMesh.id, objectMesh.meshType, objectMesh.name, objectMesh.vertices.map( function (objectVertex) { return GameLib.D3.API.Vertex.FromObjectVertex(objectVertex); } ), objectMesh.faces, objectMesh.faceVertexUvs, objectMesh.materials.map( function (objectMaterial) { return GameLib.D3.API.Material.FromObjectMaterial(objectMaterial); } ), objectMesh.parentMesh, objectMesh.parentScene, apiSkeleton, objectMesh.skinIndices, objectMesh.skinWeights, GameLib.API.Vector3.FromObjectVector(objectMesh.position), GameLib.API.Quaternion.FromObjectQuaternion(objectMesh.quaternion), GameLib.API.Vector3.FromObjectVector(objectMesh.scale), GameLib.API.Vector3.FromObjectVector(objectMesh.localPosition), GameLib.API.Vector3.FromObjectVector(objectMesh.localRotation), GameLib.API.Vector3.FromObjectVector(objectMesh.localScale), GameLib.API.Vector3.FromObjectVector(objectMesh.up), GameLib.API.Matrix4.FromObjectMatrix(objectMesh.modelMatrix), objectMesh.parentEntity, objectMesh.renderOrder ); };