/** * TriangleFace * @param v0 * @param v1 * @param v2 * @param materialIndex * @param v0uv * @param v1uv * @param v2uv * @param color * @param vertexColors * @param vertexNormals * @param normal * @constructor */ GameLib.D3.TriangleFace = function( v0, v1, v2, materialIndex, v0uv, v1uv, v2uv, color, vertexColors, vertexNormals, normal ) { this.v0 = v0; this.v1 = v1; this.v2 = v2; this.materialIndex = materialIndex; this.v0uv = v0uv; this.v1uv = v1uv; this.v2uv = v2uv; if (!color) { color = new GameLib.D3.Color(0xff, 0xff, 0xff, 0xff); } this.color = color; if (!vertexColors) { vertexColors = [ new GameLib.D3.Color(0xff, 0xff, 0xff, 0xff), new GameLib.D3.Color(0xff, 0xff, 0xff, 0xff), new GameLib.D3.Color(0xff, 0xff, 0xff, 0xff) ]; } this.vertexColors = vertexColors; if (!vertexNormals) { vertexNormals = [ new GameLib.D3.Vector3(), new GameLib.D3.Vector3(), new GameLib.D3.Vector3() ] } this.vertexNormals = vertexNormals; if (!normal) { normal = new GameLib.D3.Vector3(0); } this.normal = normal; }; /** * Clone a TriangleFace * @returns {GameLib.D3.TriangleFace} */ GameLib.D3.TriangleFace.prototype.clone = function(){ return new GameLib.D3.TriangleFace( this.v0, this.v1, this.v2, this.materialIndex, this.v0uv.copy(), this.v1uv.copy(), this.v2uv.copy() ); }; /** * Returns true if two triangles are equal (their vertex indices match in some order) * @param triangle * @returns {boolean} */ GameLib.D3.TriangleFace.prototype.equals = function(triangle) { return !!( ( (this.v0 == triangle.v0) && (this.v1 == triangle.v1) && (this.v2 == triangle.v2) ) || ( (this.v0 == triangle.v0) && (this.v1 == triangle.v2) && (this.v2 == triangle.v1) ) || ( (this.v0 == triangle.v1) && (this.v1 == triangle.v0) && (this.v2 == triangle.v2) ) || ( (this.v0 == triangle.v1) && (this.v1 == triangle.v2) && (this.v2 == triangle.v0) ) || ( (this.v0 == triangle.v2) && (this.v1 == triangle.v0) && (this.v2 == triangle.v1) ) || ( (this.v0 == triangle.v2) && (this.v1 == triangle.v1) && (this.v2 == triangle.v0) )); };