CURELab.SignLanguage.RecognitionSystem.DataWarehouse.GetLatestPlayer1Positions C# (CSharp) Method

GetLatestPlayer1Positions() public method

public GetLatestPlayer1Positions ( int frames ) : List
frames int
return List
        public List<Vector3> GetLatestPlayer1Positions(int frames)
        {
            if (frames <= 0)
            {
                return null;
            }
            List<Vector3> results = new List<Vector3>(frames);
            if (frames < m_currentFrame)
            {
                List<FrameData> l = m_frameData.GetRange(m_currentFrame - frames, frames);
                l.ForEach(i => results.Add(i.m_Player1.m_position));
                return results;
            }
            else
            {
                List<FrameData> l = m_frameData.GetRange(1, m_currentFrame);
                l.ForEach(i => results.Add(i.m_Player1.m_position));
                return results;
            }
        }

Usage Example

Beispiel #1
0
        public void OnNewFrameDataReady(Object sender, EventArgs args)
        {
            DataTransferEventArgs arg = (DataTransferEventArgs)args;
            int frame = (int)arg.m_data;

            if (m_player1LatestPositions == null)                                                          //first time initial
            {
                m_player1LatestPositions = m_dataWarehouse.GetLatestPlayer1Positions(m_inspectWindowSize); //TODO: specify accurate time
            }
            else //set data
            {
                //initialize data
                if (m_player1LatestPositions.Count < m_inspectWindowSize)
                {
                    m_player1LatestPositions.Add(m_dataWarehouse.m_frameData[frame].m_Player1.m_position);
                    return;
                }
                else
                {
                    m_player1LatestPositions.RemoveAt(0);
                    m_player1LatestPositions.Add(m_dataWarehouse.m_frameData[frame].m_Player1.m_position);
                }
                //make decision
                if (isPlayer1MovesInLatestFrame() && !m_isMoving)//split start point
                {
                    Console.WriteLine("moving");
                    m_isMoving   = true;
                    m_startFrame = frame;
                }
                if (!isPlayer1MovesInLatestFrame() && m_isMoving)//stop moving
                {
                    m_isMoving = false;
                    //NOTIFY dataWarehouse
                    m_endFrame = frame;
                    m_dataWarehouse.SetSegmentationData(m_startFrame, m_endFrame, 1.0f);

                    Console.WriteLine("stop");
                }
            }
        }