// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.SpatialAwareness
{
public interface IMixedRealitySpatialAwarenessObserver : IMixedRealityDataProvider, IMixedRealityEventSource
{
///
/// Indicates the developer's intended startup behavior.
///
AutoStartBehavior StartupBehavior { get; set; }
///
/// Get or sets the default Unity Physics Layer on which to set the spatial object.
///
int DefaultPhysicsLayer { get; }
///
/// Is the observer running (actively accumulating spatial data)?
///
bool IsRunning { get; }
///
/// Should the observer remain stationary in the scene?
///
///
/// Set IsStationaryObserver to false to move the volume with the user.
/// If set to true, the origin will be 0,0,0 or the last known location.
///
bool IsStationaryObserver { get; set; }
///
/// Gets or sets the type of volume the observer should operate in.
///
VolumeType ObserverVolumeType { get; set; }
///
/// Gets or sets the extents (1/2 size) of the volume, in meters per axis, from which individual observations will be made.
///
///
/// When used when is set to .
/// The X value of the extents will be used as the radius.
///
Vector3 ObservationExtents { get; set; }
///
/// Gets or sets the orientation of the volume in world space.
///
///
/// This is only used when is set to
///
Quaternion ObserverRotation { get; set; }
///
/// Gets or sets the origin, in world space, of the observer.
///
///
/// Moving the observer origin allows the spatial awareness system to locate and discard meshes as the user
/// navigates the environment.
///
Vector3 ObserverOrigin { get; set; }
///
/// Gets or sets the frequency, in seconds, at which the spatial observer should update.
///
float UpdateInterval { get; set; }
///
/// Start | resume the observer.
///
void Resume();
///
/// Stop | pause the observer
///
void Suspend();
///
/// Clears the observer's collection of observations.
///
///
/// If the observer is currently running, calling ClearObservations will suspend it.
///
void ClearObservations();
}
}