| // 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; |
| }; |