Exemplo n.º 1
0
 public void StopTracking(bool gameFinished = false)
 {
     TrackingResultProcessing.Reset();
     Kinect.Dispose();
     Kinect = null;
     if (!gameFinished)
     {
         ProgramState.StoppedTracking();
     }
 }
Exemplo n.º 2
0
        public TrackingManager(UserInterfaceOutputFacade outputFacade, TrackingResultProcessing trackingResultProcessing, UserDefinedParametersPrototypeFactory userParameters, IProgramState programState)
        {
            OutputFacade             = outputFacade;
            TrackingResultProcessing = trackingResultProcessing;
            ProgramState             = programState;

            ProcessingCommandsQueue = new BlockingCollection <Message>(new ConcurrentQueue <Message>());
            ProcessingOutputQueue   = new BlockingCollection <Message>(new ConcurrentQueue <Message>());

            InitPipelineThread(userParameters);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Processing of messages arriving from tracking thread
        /// </summary>
        public void ProcessQueue()
        {
            bool messageProcessed = false;

            do
            {
                messageProcessed = ProcessingOutputQueue.TryTake(out var message);

                if (message is ResultMessage resultMessage)
                {
                    TrackingResultProcessing.ProcessResult(resultMessage);
                }

                if (message is TrackingStartSuccessfulMessage)
                {
                    ProgramState.TrackingStartSuccessful();
                }

                if (message is TrackingError error)
                {
                    ProgramState.ErrorInTracking(error.Message);
                    StopTracking();
                }

                if (message is SceneCalibrationSnapshotMessage snapshot)
                {
                    OutputFacade.UpdateCalibrationSnapshot(snapshot.Snapshot);
                }


                if (messageProcessed && message == null)
                {
                    throw new InvalidOperationException(string.Format(ProgramLocalization.UnexpectedIncomingMessage, nameof(TrackingManager)));
                }
            } while (messageProcessed);
        }
Exemplo n.º 4
0
 public void SendKinectUpdate()
 {
     ProcessingCommandsQueue.Add(new KinectUpdateMessage(TrackingResultProcessing.GetGameStateAlignedWithTrackingState()));
 }
Exemplo n.º 5
0
 public void Recalibrate()
 {
     TrackingResultProcessing.Reset();
     ProgramState.Recalibrating();
     ProcessingCommandsQueue.Add(new RecalibrateMessage());
 }