ArtofKinect.Common.PointCloudPlayerSource.Seek C# (CSharp) Method

Seek() public method

public Seek ( int frameNumber ) : void
frameNumber int
return void
        public void Seek(int frameNumber)
        {
            if (Status == PointCloudPlayerStatus.NotLoaded)
            {
                throw new InvalidOperationException("Player not loaded");
            }
            if (frameNumber < 0 || frameNumber > MaxFrameIndex)
            {
                throw new ArgumentOutOfRangeException("frameNumber");
            }

            //TODO: intelligently reset buffer
            lock (_bufferedFrames)
            {
                _bufferedFrames.Clear();
            }
            _nextFrameToLoadIndex = frameNumber;
            CurrentFrameIndex = frameNumber;

            using (var stream = new MemoryStream())
            {
                lock (_zipFileLock)
                {
                    _zipFile[_filesToLoad[frameNumber]].Extract(stream);
                }
                stream.Position = 0;
                MotionFrameHeader header = _serializer.DeserializeHeader(stream);

                var timeOffset = header.TimeUTC - MinTimeUTC;

                if (Status == PointCloudPlayerStatus.Playing)
                {
                    _playbackStartUTC = DateTime.Now - timeOffset;
                }

                _soundPlayer.Seek(timeOffset);

            }
        }