126 lines
2.5 KiB
JavaScript
126 lines
2.5 KiB
JavaScript
|
/**
|
||
|
* 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)
|
||
|
));
|
||
|
};
|
||
|
|