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