mixedreality/com.microsoft.mixedreality..../Core/Interfaces/SpatialAwareness/IMixedRealitySpatialAwarene...

137 lines
6.9 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.SpatialAwareness
{
public interface IMixedRealitySpatialAwarenessSystem : IMixedRealityEventSystem
{
/// <summary>
/// Gets the parent object to which all spatial awareness <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see>s are to be parented.
/// </summary>
GameObject SpatialAwarenessObjectParent { get; }
/// <summary>
/// Creates the a parent, that is a child of the Spatial Awareness System parent so that the scene hierarchy does not get overly cluttered.
/// </summary>
/// <returns>
/// The <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see> to which spatial awareness objects will be parented.
/// </returns>
/// <remarks>
/// <para>This method is to be called by implementations of the <see cref="IMixedRealitySpatialAwarenessObserver"/> interface, not by application code. It
/// is used to enable observations to be grouped by observer.</para>
/// </remarks>
GameObject CreateSpatialAwarenessObservationParent(string name);
/// <summary>
/// Generates a new source identifier for an <see cref="IMixedRealitySpatialAwarenessObserver"/> implementation.
/// </summary>
/// <returns>The source identifier to be used by the <see cref="IMixedRealitySpatialAwarenessObserver"/> implementation.</returns>
/// <remarks>
/// This method is to be called by implementations of the <see cref="IMixedRealitySpatialAwarenessObserver"/> interface, not by application code.
/// </remarks>
uint GenerateNewSourceId();
/// <summary>
/// Typed representation of the ConfigurationProfile property.
/// </summary>
MixedRealitySpatialAwarenessSystemProfile SpatialAwarenessSystemProfile { get; }
/// <summary>
/// Gets the collection of registered <see cref="IMixedRealitySpatialAwarenessObserver"/> data providers.
/// </summary>
/// <returns>
/// Read only copy of the list of registered observers.
/// </returns>
[Obsolete("GetObservers will be removed in a future release. Cast to IMixedRealityDataProviderAccess and call GetDataProviders instead")]
IReadOnlyList<IMixedRealitySpatialAwarenessObserver> GetObservers();
/// <summary>
/// Get the collection of registered observers of the specified type.
/// </summary>
/// <typeparam name="T">The desired spatial awareness observer type (ex: <see cref="IMixedRealitySpatialAwarenessMeshObserver"/>)</typeparam>
/// <returns>
/// Readonly copy of the list of registered observers that implement the specified type.
/// </returns>
[Obsolete("GetObservers<T> will be removed in a future release. Cast to IMixedRealityDataProviderAccess and call GetDataProviders<T> instead")]
IReadOnlyList<T> GetObservers<T>() where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Get the <see cref="IMixedRealitySpatialAwarenessObserver"/> that is registered under the specified name.
/// </summary>
/// <param name="name">The friendly name of the observer.</param>
/// <returns>
/// The requested observer, or null if one cannot be found.
/// </returns>
/// <remarks>
/// If more than one observer is registered under the specified name, the first will be returned.
/// </remarks>
[Obsolete("GetObserver will be removed in a future release. Cast to IMixedRealityDataProviderAccess and call GetDataProvider instead")]
IMixedRealitySpatialAwarenessObserver GetObserver(string name);
/// <summary>
/// Get the observer that is registered under the specified name matching the specified type.
/// </summary>
/// <typeparam name="T">The desired spatial awareness observer type (ex: <see cref="IMixedRealitySpatialAwarenessMeshObserver"/>)</typeparam>
/// <param name="name">The friendly name of the observer.</param>
/// <returns>
/// The requested observer, or null if one cannot be found.
/// </returns>
/// <remarks>
/// If more than one observer is registered under the specified name, the first will be returned.
/// </remarks>
[Obsolete("GetObserver<T> will be removed in a future release. Cast to IMixedRealityDataProviderAccess and call GetDataProvider<T> instead")]
T GetObserver<T>(string name = null) where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Starts / restarts all spatial observers of the specified type.
/// </summary>
void ResumeObservers();
/// <summary>
/// Starts / restarts all spatial observers of the specified type.
/// </summary>
/// <typeparam name="T">The desired spatial awareness observer type (ex: <see cref="IMixedRealitySpatialAwarenessMeshObserver"/>)</typeparam>
void ResumeObservers<T>() where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Starts / restarts the spatial observer registered under the specified name matching the specified type.
/// </summary>
/// <typeparam name="T">The desired spatial awareness observer type (ex: <see cref="IMixedRealitySpatialAwarenessMeshObserver"/>)</typeparam>
/// <param name="name">The friendly name of the observer.</param>
void ResumeObserver<T>(string name) where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Stops / pauses all spatial observers.
/// </summary>
void SuspendObservers();
/// <summary>
/// Stops / pauses all spatial observers of the specified type.
/// </summary>
void SuspendObservers<T>() where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Stops / pauses the spatial observer registered under the specified name matching the specified type.
/// </summary>
/// <typeparam name="T">The desired spatial awareness observer type (ex: <see cref="IMixedRealitySpatialAwarenessMeshObserver"/>)</typeparam>
/// <param name="name">The friendly name of the observer.</param>
void SuspendObserver<T>(string name) where T : IMixedRealitySpatialAwarenessObserver;
/// <summary>
/// Clears all registered observers' observations.
/// </summary>
void ClearObservations();
/// <summary>
/// Clears the observations of the specified observer.
/// </summary>
/// <typeparam name="T">The observer type.</typeparam>
/// <param name="name">The name of the observer.</param>
void ClearObservations<T>(string name = null) where T : IMixedRealitySpatialAwarenessObserver;
}
}