 			_changed.execute(this);
 		}
 		
-		public function cast(ray : Ray, transform : Matrix4x4 = null, hitPoint : Vector4 = null) : int
+		/**
+		 * Cast a ray on the 3D geometry to retrieve the ID of the hit triangle.
+		 * 
+		 * @param ray The ray to cast on the geometry.
+		 * @param transform An optional 3D transform to transform the ray into the geometry local space.
+		 * @param hitXYZ An optional reference to a Vector4 object to fill with the (x, y, z) coordinates
+		 * of the actual ray/geometry hit point.
+		 * @param hitUV An optional reference to a Point object to fill with the (u, v) texture coordinates
+		 * of the actual ray/geometry hit point.
+		 * 
+		 * @return The triangle ID (the ID of the first index of the triangle in the IndexStream) that was
+		 * hit by the specified ray, -1 otherwise.
+		 * 
+		 */
+		public function cast(ray 		: Ray,
+							 transform 	: Matrix4x4 = null,
+							 hitXYZ 	: Vector4 	= null,
+							 hitUV		: Point		= null) : int
 		{
 			var numVertices : uint 	= indexStream._data.length / 2;
 			

			return this;				
		}
		
		public function flipNormals(flipTangents : Boolean = true) : Geometry
		{
			var numStreams 	: uint 		= this.numVertexStreams;

	import aerys.minko.type.math.Ray;
	import aerys.minko.type.math.Vector4;
	
	import flash.geom.Point;
	import flash.utils.ByteArray;

	/**
