using System; namespace UnityEngine.XR.ARSubsystems { /// /// Defines the interface for a _trackable_. A trackable represents anything that can be detected and tracked /// in the physical environment. /// public interface ITrackable { /// /// The `TrackableId` associated with this trackable. /// /// The `TrackableId`. TrackableId trackableId { get; } /// /// The `Pose`, in session space, associated with this trackable. /// /// The pose. /// /// Some `ITrackable` implementations are MonoBehaviours, and you can use the Transform component of their /// GameObjects to access the position and rotation of a trackable in Unity world space. For other trackables /// without associated GameObjects, you can convert a session-space pose to Unity world space if needed by /// using the example code below, assuming the XR Origin has a uniform scale of (1, 1, 1): /// /// var origin = FindAnyObjectByType<XROrigin>().transform; /// var originPose = new Pose(origin.position, origin.rotation); /// var worldSpacePose = pose.GetTransformedBy(xrOriginPose); /// /// Pose pose { get; } /// /// The `TrackingState` associated with this trackable. /// /// The `TrackingState`. TrackingState trackingState { get; } /// /// The native pointer associated with this trackable. /// /// The native pointer. /// /// The data pointed to by this pointer is defined by the provider plug-in implementation. /// Refer to the provider documentation for each platform your app supports to learn more about the value of /// this pointer on your target platform(s). /// IntPtr nativePtr { get; } } }