|  | // Copyright 2017 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | library fuchsia.ui.gfx; | 
|  |  | 
|  | /// Describes where a hit occurred within the content of a node tagged | 
|  | /// by this session. | 
|  | /// | 
|  | /// To compute the point of intersection within the node's local coordinate | 
|  | /// system, perform the following calculation using the ray which was | 
|  | /// originally passed to `Session.HitTest()`. | 
|  | /// | 
|  | ///   hit_point = ray.origin + (hit.distance * ray.direction) | 
|  | ///   local_point = hit.inverse_transform * hit_point | 
|  | struct Hit { | 
|  | /// The node's tag value. | 
|  | uint32 tag_value; | 
|  |  | 
|  | /// The origin of the ray that was used for the hit test, in the hit | 
|  | /// node's coordinate system. | 
|  | vec4 ray_origin; | 
|  |  | 
|  | /// The direction of the ray that was used for the hit test, in the hit | 
|  | /// node's coordinate system. | 
|  | vec4 ray_direction; | 
|  |  | 
|  | /// The inverse transformation matrix which maps the coordinate system of | 
|  | /// the node at which the hit test was initiated into the local coordinate | 
|  | /// system of the node which was hit. | 
|  | mat4 inverse_transform; | 
|  |  | 
|  | /// The distance from the ray's origin to the closest point of intersection | 
|  | /// in multiples of the ray's direction vector. | 
|  | float32 distance; | 
|  | }; |