using Unity.Collections;
using UnityEngine.SubsystemsImplementation;
namespace UnityEngine.XR.ARSubsystems
{
///
/// Base class for subsystems that detect and track things in the physical environment.
///
/// The trackable's data, often a blittable type to inter-operate with native code.
/// Concrete subsystem deriving from TrackingSubsystem.
/// The subsystem descriptor for the underlying subsystem.
/// Provider type for the TrackingSubsystem-derived subsystem.
public abstract class TrackingSubsystem
: SubsystemWithProvider
where TTrackable : struct, ITrackable
where TSubsystem : SubsystemWithProvider, new()
where TSubsystemDescriptor : SubsystemDescriptorWithProvider
where TProvider : SubsystemProvider
{
///
/// Retrieves a set of changes (additions, updates, and removals) since the last
/// time was called. This is typically called
/// once per frame to update the derived class's internal state.
///
/// The Allocator to use when creating the NativeArrays in .
/// The set of changes since the last time this method was invoked.
public abstract TrackableChanges GetChanges(Allocator allocator);
}
}