// -----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// -----------------------------------------------------------------------
namespace Microsoft.Samples.Kinect.Webserver.Sensor
{
using System;
using System.Collections.Generic;
using Microsoft.Kinect;
using Microsoft.Kinect.Toolkit.Interaction;
///
/// Interface for objects that keep track of state of users associated with a specific
/// Kinect sensor.
///
public interface IUserStateManager
{
///
/// Event triggered whenever user state changes.
///
event EventHandler UserStateChanged;
///
/// Dictionary mapping user tracking Ids to names used for states corresponding to
/// those users.
///
IDictionary UserStates { get; }
///
/// Tracking id of primary user associated with UI interactions.
///
int PrimaryUserTrackingId { get; }
///
/// Determines which users should be tracked in the future, based on selection
/// metrics and engagement state.
///
///
/// Array of skeletons from which the appropriate user tracking Ids will be selected.
///
///
/// Timestamp from skeleton frame.
///
///
/// Array that will contain the tracking Ids of users to track, sorted from most
/// important to least important user to track.
///
void ChooseTrackedUsers(Skeleton[] frameSkeletons, long timestamp, int[] chosenTrackingIds);
///
/// Called whenever the set of tracked users has changed.
///
///
/// User information from which we'll update the set of tracked users and the primary user.
///
///
/// Interaction frame timestamp corresponding to given user information.
///
void UpdateUserInformation(IEnumerable trackedUserInfo, long timestamp);
///
/// Clear out all user state and start from scratch.
///
void Reset();
}
}