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");
}
}
}