// Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved.
namespace Meta.XR.Movement.Playback
{
///
/// Interface for playback behaviors. This would respond to UI events,
/// and control the playback as a result.
///
public interface IPlaybackBehaviour
{
///
/// Indicates if has opened file for playback or not.
///
bool HasOpenedFileForPlayback { get; }
///
/// Indicates if the user is actively scrubbing.
///
bool UserActivelyScrubbing { get; set; }
///
/// Returns the current snapshot index.
///
int SnapshotIndex { get; }
///
/// Returns the number of snapshots.
///
int NumSnapshots { get; }
///
/// Seeks to a new index and indicates if the
/// seek was successful or not.
///
/// New seek index.
/// Indicates if the seek is successful or not.
bool Seek(int newSeekIndex);
///
/// Closes the playback file.
///
void ClosePlaybackFile();
///
/// Plays back a recording. It's up to the implementing class
/// to either preload a file or ask the user for one.
///
/// Playback path (optional).
/// True if recording was loaded; false if not.
bool PlayBackRecording(string playbackPath = null);
///
/// Sets the new pause state.
///
/// The new pause state.
void SetPauseState(bool pauseState);
///
/// Bandwidth of playback in kilobits per second.
///
float BandwidthKbps { get; }
}
}