|
@@ -23,7 +23,7 @@
|
|
|
}
|
|
|
// Methods
|
|
|
PickingInfo.prototype.getNormal = function () {
|
|
|
- if (!this.pickedMesh) {
|
|
|
+ if (!this.pickedMesh || !this.pickedMesh.isVerticesDataPresent(BABYLON.VertexBuffer.NormalKind)) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
@@ -40,6 +40,25 @@
|
|
|
|
|
|
return new BABYLON.Vector3(normal0.x + normal1.x + normal2.x, normal0.y + normal1.y + normal2.y, normal0.z + normal1.z + normal2.z);
|
|
|
};
|
|
|
+
|
|
|
+ PickingInfo.prototype.getTextureCoordinates = function () {
|
|
|
+ if (!this.pickedMesh || !this.pickedMesh.isVerticesDataPresent(BABYLON.VertexBuffer.UVKind)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ var indices = this.pickedMesh.getIndices();
|
|
|
+ var uvs = this.pickedMesh.getVerticesData(BABYLON.VertexBuffer.UVKind);
|
|
|
+
|
|
|
+ var uv0 = BABYLON.Vector2.FromArray(uvs, indices[this.faceId * 3] * 2);
|
|
|
+ var uv1 = BABYLON.Vector2.FromArray(uvs, indices[this.faceId * 3 + 1] * 2);
|
|
|
+ var uv2 = BABYLON.Vector2.FromArray(uvs, indices[this.faceId * 3 + 2] * 2);
|
|
|
+
|
|
|
+ uv0 = uv0.scale(this.bu);
|
|
|
+ uv1 = uv1.scale(this.bv);
|
|
|
+ uv2 = uv2.scale(1.0 - this.bu - this.bv);
|
|
|
+
|
|
|
+ return new BABYLON.Vector2(uv0.x + uv1.x + uv2.x, uv0.y + uv1.y + uv2.y);
|
|
|
+ };
|
|
|
return PickingInfo;
|
|
|
})();
|
|
|
BABYLON.PickingInfo = PickingInfo;
|