ClearEvents() public static method

public static ClearEvents ( ) : void
return void
Ejemplo n.º 1
0
 public void ToggleMetering(int frameCount)
 {
     if (meterFrameCount == 0)
     {
         MeterManager.ClearEvents();
         pendingMeterFrameCount = frameCount;
     }
     else
     {
         // Set it to 1 so we'll stop metering at the end of the next frame
         meterFrameCount = 1;
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///		Starts the default rendering loop.
        /// </summary>
        public void StartRendering()
        {
            bool cachedMeterLongestFrame = false;
            int  frameStartTime          = 0;

            Debug.Assert(activeRenderSystem != null, "Engine cannot start rendering without an active RenderSystem.");

            activeRenderSystem.InitRenderTargets();

            // initialize the vars
            lastStartTime = lastEndTime = timer.Milliseconds;

            // reset to false so that rendering can begin
            queuedEnd = false;

            while (!queuedEnd)
            {
                // Make sure we're collecting if it's called for
                if (meterFrameCount > 0)
                {
                    MeterManager.Collecting = true;
                }
                else if (meterLongestFrame)
                {
                    cachedMeterLongestFrame = true;
                    MeterManager.Collecting = true;
                    frameStartTime          = System.Environment.TickCount;
                }

                // allow OS events to process (if the platform requires it
                frameMeter.Enter();
                eventMeter.Enter();
                PlatformManager.Instance.DoEvents();
                eventMeter.Exit();

                if (suspendRendering)
                {
                    Thread.Sleep(100);
                    frameMeter.Exit();
                    continue;
                }

                renderMeter.Enter();
                RenderOneFrame();
                renderMeter.Exit();

                if (activeRenderSystem.RenderTargetCount == 0)
                {
                    QueueEndRendering();
                }
                frameMeter.Exit();

                // Turn metering on or off, and generate the report if
                // we're done
                if (meterFrameCount > 0)
                {
                    meterFrameCount--;
                    if (meterFrameCount == 0)
                    {
                        MeterManager.Collecting = false;
                        MeterManager.Report("Frame Processing");
                    }
                }
                else if (pendingMeterFrameCount > 0)
                {
                    // We'll start metering next frame
                    meterFrameCount        = pendingMeterFrameCount;
                    pendingMeterFrameCount = 0;
                }
                else if (cachedMeterLongestFrame)
                {
                    MeterManager.Collecting = false;
                    int frameTime = System.Environment.TickCount - frameStartTime;
                    if (frameTime > longestFrameTime)
                    {
                        longestFrameTime        = frameTime;
                        longestFrameMeterEvents = MeterManager.ReturnEvents();
                    }
                    else
                    {
                        MeterManager.ClearEvents();
                    }
                }
            }
        }