Esempio n. 1
0
 //This is the listener that is called by the event manager
 //It transforms and adds the received report to the reports list
 void Record(string name, VRPNAnalog.AnalogReport report)
 {
     if (firstReport)
     {
         firstTime_sec  = report.msg_time.tv_sec;
         firstTime_usec = report.msg_time.tv_usec;
         firstReport    = false;
     }
     if (report.msg_time.tv_usec < firstTime_usec)
     {
         report.msg_time.tv_sec  = report.msg_time.tv_sec - (firstTime_sec + 1);
         report.msg_time.tv_usec = (report.msg_time.tv_usec + 1000000) - firstTime_usec;
     }
     else
     {
         report.msg_time.tv_sec  = report.msg_time.tv_sec - firstTime_sec;
         report.msg_time.tv_usec = report.msg_time.tv_usec - firstTime_usec;
     }
     VRPNAnalog.AnalogReportNew newReport  = new VRPNAnalog.AnalogReportNew();
     VRPNManager.TimeValNew     newMsgTime = new VRPNManager.TimeValNew();
     newMsgTime.tv_sec     = (int)report.msg_time.tv_sec;
     newMsgTime.tv_usec    = (int)report.msg_time.tv_usec;
     newReport.msg_time    = newMsgTime;
     newReport.num_channel = report.num_channel;
     newReport.channel     = report.channel;
     data.list.Add(newReport);
 }
Esempio n. 2
0
 //Auxiliar method that sends last frame report
 private void sendingReport(VRPNAnalog.AnalogReportNew lastReport)
 {
     VRPNAnalog.AnalogReport newReport  = new VRPNAnalog.AnalogReport();
     VRPNManager.TimeVal     newMsgTime = new VRPNManager.TimeVal();
     newMsgTime.tv_sec     = (UInt32)lastReport.msg_time.tv_sec;
     newMsgTime.tv_usec    = (UInt32)lastReport.msg_time.tv_usec;
     newReport.msg_time    = newMsgTime;
     newReport.num_channel = lastReport.num_channel;
     newReport.channel     = lastReport.channel;
     VRPNEventManager.TriggerEventAnalog(data.deviceType, data.deviceName, newReport);
 }
Esempio n. 3
0
    //VRPNAnalogRecording Constructor
    public VRPNAnalogRecording(string nName, float nTime, VRPNAnalog.AnalogReports nData)
    {
        name       = nName;
        reportTime = nTime;
        data       = nData;
        e          = data.list.GetEnumerator();

        while (e.MoveNext())
        {
            VRPNAnalog.AnalogReportNew report = e.Current;
            channels = report.num_channel;
            lastTime = report.msg_time.tv_sec + (report.msg_time.tv_usec / 1000000f);
        }

        e = data.list.GetEnumerator();
    }
Esempio n. 4
0
 //This is the listener that is called by the event manager
 //It transforms and adds the received report to the reports list
 void Record(string name, VRPNAnalog.AnalogReport report)
 {
     if (firstReport)
     {
         firstTime_sec = report.msg_time.tv_sec;
         firstTime_usec = report.msg_time.tv_usec;
         firstReport = false;
     }
     if (report.msg_time.tv_usec < firstTime_usec)
     {
         report.msg_time.tv_sec = report.msg_time.tv_sec - (firstTime_sec + 1);
         report.msg_time.tv_usec = (report.msg_time.tv_usec + 1000000) - firstTime_usec;
     }
     else
     {
         report.msg_time.tv_sec = report.msg_time.tv_sec - firstTime_sec;
         report.msg_time.tv_usec = report.msg_time.tv_usec - firstTime_usec;
     }
     VRPNAnalog.AnalogReportNew newReport = new VRPNAnalog.AnalogReportNew();
     VRPNManager.TimeValNew newMsgTime = new VRPNManager.TimeValNew();
     newMsgTime.tv_sec = (int)report.msg_time.tv_sec;
     newMsgTime.tv_usec = (int)report.msg_time.tv_usec;
     newReport.msg_time = newMsgTime;
     newReport.num_channel = report.num_channel;
     newReport.channel = report.channel;
     data.list.Add(newReport);
 }
Esempio n. 5
0
    //Public method that allows to update the playing state
    public void Update()
    {
        if (isPlaying)
        {
            float actualTime;
            float actualReportTime = 0f;
            bool  moreReports      = true;
            bool  alreadyAdvanced  = false;
            VRPNAnalog.AnalogReportNew lastReport = new VRPNAnalog.AnalogReportNew();

            if (firstReport)
            {
                firstReport = false;
                firstTime   = Time.time;
                if (e.MoveNext())
                {
                    actualReport = e.Current;
                }
                else
                {
                    isPlaying   = false;
                    moreReports = false;
                    firstReport = true;
                }
            }

            actualTime = Time.time - firstTime;

            //It seeks the last appropiate report for the actual time
            while (moreReports)
            {
                actualReportTime = actualReport.msg_time.tv_sec + (actualReport.msg_time.tv_usec / 1000000f) + reportTime;
                if (actualReportTime <= actualTime)
                {
                    lastReport = e.Current;
                    if (e.MoveNext())
                    {
                        actualReport    = e.Current;
                        alreadyAdvanced = true;
                    }
                    else
                    {
                        sendingReport(lastReport);

                        moreReports = false;
                        isPlaying   = false;
                        firstReport = true;
                    }
                }
                else if (alreadyAdvanced)
                {
                    sendingReport(lastReport);

                    moreReports = false;
                }
                else
                {
                    moreReports = false;
                }
            }
        }
    }
Esempio n. 6
0
    //Public method that allows to update the playing state
    public void Update()
    {
        if (isPlaying)
        {
            float actualTime;
            float actualReportTime = 0f;
            bool moreReports = true;
            bool alreadyAdvanced = false;
            VRPNAnalog.AnalogReportNew lastReport = new VRPNAnalog.AnalogReportNew();

            if (firstReport)
            {
                firstReport = false;
                firstTime = Time.time;
                if (e.MoveNext())
                {
                    actualReport = e.Current;
                }
                else
                {
                    isPlaying = false;
                    moreReports = false;
                    firstReport = true;
                }
            }

            actualTime = Time.time - firstTime;

            //It seeks the last appropiate report for the actual time
            while (moreReports)
            {
                actualReportTime = actualReport.msg_time.tv_sec + (actualReport.msg_time.tv_usec / 1000000f) + reportTime;
                if (actualReportTime <= actualTime)
                {
                    lastReport = e.Current;
                    if (e.MoveNext())
                    {
                        actualReport = e.Current;
                        alreadyAdvanced = true;
                    }
                    else
                    {
                        sendingReport(lastReport);

                        moreReports = false;
                        isPlaying = false;
                        firstReport = true;
                    }
                }
                else if (alreadyAdvanced)
                {
                    sendingReport(lastReport);

                    moreReports = false;
                }
                else
                {
                    moreReports = false;
                }
            }
        }
    }