public override void OnUpdate()
            {
                RenderStatisticsInfo statistics = RendererWorld.Instance.Statistics;

                PageControl.Controls[ "Triangles" ].Text = statistics.Triangles.ToString( "N0" );
                PageControl.Controls[ "Batches" ].Text = statistics.Batches.ToString( "N0" );
                PageControl.Controls[ "Lights" ].Text = statistics.Lights.ToString( "N0" );

                //performance counter
                {
                    float otherTime = 0;

                    foreach( PerformanceCounter.Counter counter in PerformanceCounter.Counters )
                    {
                        PerformanceCounter.TimeCounter timeCounter =
                            counter as PerformanceCounter.TimeCounter;

                        if( timeCounter != null )
                        {
                            string counterNameWithoutSpaces = counter.Name.Replace( " ", "" );

                            EControl timeControl = PageControl.Controls[
                                counterNameWithoutSpaces + "Time" ];
                            EControl fpsControl = PageControl.Controls[
                                counterNameWithoutSpaces + "FPS" ];

                            if( timeControl != null )
                            {
                                timeControl.Text = ( timeCounter.CalculatedValue * 1000.0f ).
                                    ToString( "F2" );
                            }
                            if( fpsControl != null )
                                fpsControl.Text = ( 1.0f / timeCounter.CalculatedValue ).ToString( "F1" );

                            if( !counter.InnerCounter )
                            {
                                if( counter == PerformanceCounter.TotalTimeCounter )
                                    otherTime += timeCounter.CalculatedValue;
                                else
                                    otherTime -= timeCounter.CalculatedValue;
                            }
                        }
                    }

                    {
                        ETextBox timeControl = PageControl.Controls[ "OtherTime" ] as ETextBox;
                        ETextBox fpsControl = PageControl.Controls[ "OtherFPS" ] as ETextBox;

                        if( timeControl != null )
                            timeControl.Text = ( otherTime * 1000.0f ).ToString( "F2" );
                        if( fpsControl != null )
                            fpsControl.Text = ( 1.0f / otherTime ).ToString( "F1" );
                    }
                }

                //cameras
                {
                    EListBox camerasListBox = (EListBox)PageControl.Controls[ "Cameras" ];

                    //update cameras list
                    {
                        StatisticsInfoItem lastSelectedItem = camerasListBox.SelectedItem as
                            StatisticsInfoItem;

                        camerasListBox.Items.Clear();

                        foreach( RenderStatisticsInfo.CameraStatistics cameraStatistics in
                            statistics.CamerasStatistics )
                        {
                            StatisticsInfoItem item = new StatisticsInfoItem();
                            item.cameraInformation = cameraStatistics.CameraInformation;
                            item.ownerCameraIdentifier = cameraStatistics.OwnerCameraIdentifier;
                            camerasListBox.Items.Add( item );

                            if( lastSelectedItem != null )
                            {
                                if( item.cameraInformation == lastSelectedItem.cameraInformation &&
                                    item.ownerCameraIdentifier == lastSelectedItem.ownerCameraIdentifier )
                                {
                                    camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;
                                }
                            }
                        }

                        camerasListBox.Items.Add( "Total" );
                        if( lastSelectedItem != null && lastSelectedItem.cameraInformation == "Total" )
                            camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;

                        if( camerasListBox.SelectedIndex == -1 )
                            camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;
                    }

                    //update camera info
                    if( camerasListBox.SelectedIndex == camerasListBox.Items.Count - 1 )
                    {
                        //total statistics

                        int staticMeshObjects = 0;
                        int sceneNodes = 0;
                        int guiRenderers = 0;
                        int guiBatches = 0;
                        int triangles = 0;
                        int batches = 0;

                        foreach( RenderStatisticsInfo.CameraStatistics cameraStatistics in
                            statistics.CamerasStatistics )
                        {
                            staticMeshObjects += cameraStatistics.StaticMeshObjects;
                            sceneNodes += cameraStatistics.SceneNodes;
                            guiRenderers += cameraStatistics.GuiRenderers;
                            guiBatches += cameraStatistics.GuiBatches;
                            triangles += cameraStatistics.Triangles;
                            batches += cameraStatistics.Batches;
                        }

                        PageControl.Controls[ "CameraOutdoorWalks" ].Text = "No camera";
                        PageControl.Controls[ "CameraPortalsPassed" ].Text = "No camera";
                        PageControl.Controls[ "CameraZonesPassed" ].Text = "No camera";

                        PageControl.Controls[ "CameraStaticMeshObjects" ].Text =
                            staticMeshObjects.ToString( "N0" );
                        PageControl.Controls[ "CameraSceneNodes" ].Text = sceneNodes.ToString( "N0" );
                        PageControl.Controls[ "CameraGuiRenderers" ].Text = guiRenderers.ToString( "N0" );
                        PageControl.Controls[ "CameraGuiBatches" ].Text = guiBatches.ToString( "N0" );
                        PageControl.Controls[ "CameraTriangles" ].Text = triangles.ToString( "N0" );
                        PageControl.Controls[ "CameraBatches" ].Text = batches.ToString( "N0" );

                    }
                    else if( camerasListBox.SelectedIndex != -1 )
                    {
                        //selected camera statistics

                        RenderStatisticsInfo.CameraStatistics activeCameraStatistics =
                            statistics.CamerasStatistics[ camerasListBox.SelectedIndex ];

                        RenderStatisticsInfo.CameraStatistics.PortalSystemInfo portalSystemInfo =
                            activeCameraStatistics.PortalSystem;
                        if( portalSystemInfo != null )
                        {
                            PageControl.Controls[ "CameraOutdoorWalks" ].Text =
                                portalSystemInfo.OutdoorWalks.ToString( "N0" );
                            PageControl.Controls[ "CameraPortalsPassed" ].Text =
                                portalSystemInfo.PortalsPassed.ToString( "N0" );
                            PageControl.Controls[ "CameraZonesPassed" ].Text =
                                portalSystemInfo.ZonesPassed.ToString( "N0" );
                        }
                        else
                        {
                            PageControl.Controls[ "CameraOutdoorWalks" ].Text = "No zones";
                            PageControl.Controls[ "CameraPortalsPassed" ].Text = "No zones";
                            PageControl.Controls[ "CameraZonesPassed" ].Text = "No zones";
                        }

                        PageControl.Controls[ "CameraStaticMeshObjects" ].Text =
                            activeCameraStatistics.StaticMeshObjects.ToString( "N0" );
                        PageControl.Controls[ "CameraSceneNodes" ].Text =
                            activeCameraStatistics.SceneNodes.ToString( "N0" );
                        PageControl.Controls[ "CameraGuiRenderers" ].Text =
                            activeCameraStatistics.GuiRenderers.ToString( "N0" );
                        PageControl.Controls[ "CameraGuiBatches" ].Text =
                            activeCameraStatistics.GuiBatches.ToString( "N0" );
                        PageControl.Controls[ "CameraTriangles" ].Text =
                            activeCameraStatistics.Triangles.ToString( "N0" );
                        PageControl.Controls[ "CameraBatches" ].Text =
                            activeCameraStatistics.Batches.ToString( "N0" );
                    }
                    else
                    {
                        //no camera selected

                        PageControl.Controls[ "CameraOutdoorWalks" ].Text = "";
                        PageControl.Controls[ "CameraPortalsPassed" ].Text = "";
                        PageControl.Controls[ "CameraZonesPassed" ].Text = "";

                        PageControl.Controls[ "CameraStaticMeshObjects" ].Text = "";
                        PageControl.Controls[ "CameraSceneNodes" ].Text = "";
                        PageControl.Controls[ "CameraGuiRenderers" ].Text = "";
                        PageControl.Controls[ "CameraGuiBatches" ].Text = "";
                        PageControl.Controls[ "CameraTriangles" ].Text = "";
                        PageControl.Controls[ "CameraBatches" ].Text = "";
                    }
                }
            }
示例#2
0
            public override void OnUpdate()
            {
                RenderStatisticsInfo statistics = RendererWorld.Instance.Statistics;

                PageControl.Controls["Triangles"].Text = statistics.Triangles.ToString("N0");
                PageControl.Controls["Batches"].Text   = statistics.Batches.ToString("N0");
                PageControl.Controls["Lights"].Text    = statistics.Lights.ToString("N0");

                //performance counter
                {
                    float otherTime = 0;

                    foreach (PerformanceCounter.Counter counter in PerformanceCounter.Counters)
                    {
                        PerformanceCounter.TimeCounter timeCounter =
                            counter as PerformanceCounter.TimeCounter;

                        if (timeCounter != null)
                        {
                            string counterNameWithoutSpaces = counter.Name.Replace(" ", "");

                            EControl timeControl = PageControl.Controls[
                                counterNameWithoutSpaces + "Time"];
                            EControl fpsControl = PageControl.Controls[
                                counterNameWithoutSpaces + "FPS"];

                            if (timeControl != null)
                            {
                                timeControl.Text = (timeCounter.CalculatedValue * 1000.0f).
                                                   ToString("F2");
                            }
                            if (fpsControl != null)
                            {
                                fpsControl.Text = (1.0f / timeCounter.CalculatedValue).ToString("F1");
                            }

                            if (!counter.InnerCounter)
                            {
                                if (counter == PerformanceCounter.TotalTimeCounter)
                                {
                                    otherTime += timeCounter.CalculatedValue;
                                }
                                else
                                {
                                    otherTime -= timeCounter.CalculatedValue;
                                }
                            }
                        }
                    }

                    {
                        ETextBox timeControl = PageControl.Controls["OtherTime"] as ETextBox;
                        ETextBox fpsControl  = PageControl.Controls["OtherFPS"] as ETextBox;

                        if (timeControl != null)
                        {
                            timeControl.Text = (otherTime * 1000.0f).ToString("F2");
                        }
                        if (fpsControl != null)
                        {
                            fpsControl.Text = (1.0f / otherTime).ToString("F1");
                        }
                    }
                }

                //cameras
                {
                    EListBox camerasListBox = (EListBox)PageControl.Controls["Cameras"];

                    //update cameras list
                    {
                        StatisticsInfoItem lastSelectedItem = camerasListBox.SelectedItem as
                                                              StatisticsInfoItem;

                        camerasListBox.Items.Clear();

                        foreach (RenderStatisticsInfo.CameraStatistics cameraStatistics in
                                 statistics.CamerasStatistics)
                        {
                            StatisticsInfoItem item = new StatisticsInfoItem();
                            item.cameraInformation     = cameraStatistics.CameraInformation;
                            item.ownerCameraIdentifier = cameraStatistics.OwnerCameraIdentifier;
                            camerasListBox.Items.Add(item);

                            if (lastSelectedItem != null)
                            {
                                if (item.cameraInformation == lastSelectedItem.cameraInformation &&
                                    item.ownerCameraIdentifier == lastSelectedItem.ownerCameraIdentifier)
                                {
                                    camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;
                                }
                            }
                        }

                        camerasListBox.Items.Add("Total");
                        if (lastSelectedItem != null && lastSelectedItem.cameraInformation == "Total")
                        {
                            camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;
                        }

                        if (camerasListBox.SelectedIndex == -1)
                        {
                            camerasListBox.SelectedIndex = camerasListBox.Items.Count - 1;
                        }
                    }

                    //update camera info
                    if (camerasListBox.SelectedIndex == camerasListBox.Items.Count - 1)
                    {
                        //total statistics

                        int staticMeshObjects = 0;
                        int sceneNodes        = 0;
                        int guiRenderers      = 0;
                        int guiBatches        = 0;
                        int triangles         = 0;
                        int batches           = 0;

                        foreach (RenderStatisticsInfo.CameraStatistics cameraStatistics in
                                 statistics.CamerasStatistics)
                        {
                            staticMeshObjects += cameraStatistics.StaticMeshObjects;
                            sceneNodes        += cameraStatistics.SceneNodes;
                            guiRenderers      += cameraStatistics.GuiRenderers;
                            guiBatches        += cameraStatistics.GuiBatches;
                            triangles         += cameraStatistics.Triangles;
                            batches           += cameraStatistics.Batches;
                        }

                        PageControl.Controls["CameraOutdoorWalks"].Text  = "No camera";
                        PageControl.Controls["CameraPortalsPassed"].Text = "No camera";
                        PageControl.Controls["CameraZonesPassed"].Text   = "No camera";

                        PageControl.Controls["CameraStaticMeshObjects"].Text =
                            staticMeshObjects.ToString("N0");
                        PageControl.Controls["CameraSceneNodes"].Text   = sceneNodes.ToString("N0");
                        PageControl.Controls["CameraGuiRenderers"].Text = guiRenderers.ToString("N0");
                        PageControl.Controls["CameraGuiBatches"].Text   = guiBatches.ToString("N0");
                        PageControl.Controls["CameraTriangles"].Text    = triangles.ToString("N0");
                        PageControl.Controls["CameraBatches"].Text      = batches.ToString("N0");
                    }
                    else if (camerasListBox.SelectedIndex != -1)
                    {
                        //selected camera statistics

                        RenderStatisticsInfo.CameraStatistics activeCameraStatistics =
                            statistics.CamerasStatistics[camerasListBox.SelectedIndex];

                        RenderStatisticsInfo.CameraStatistics.PortalSystemInfo portalSystemInfo =
                            activeCameraStatistics.PortalSystem;
                        if (portalSystemInfo != null)
                        {
                            PageControl.Controls["CameraOutdoorWalks"].Text =
                                portalSystemInfo.OutdoorWalks.ToString("N0");
                            PageControl.Controls["CameraPortalsPassed"].Text =
                                portalSystemInfo.PortalsPassed.ToString("N0");
                            PageControl.Controls["CameraZonesPassed"].Text =
                                portalSystemInfo.ZonesPassed.ToString("N0");
                        }
                        else
                        {
                            PageControl.Controls["CameraOutdoorWalks"].Text  = "No zones";
                            PageControl.Controls["CameraPortalsPassed"].Text = "No zones";
                            PageControl.Controls["CameraZonesPassed"].Text   = "No zones";
                        }

                        PageControl.Controls["CameraStaticMeshObjects"].Text =
                            activeCameraStatistics.StaticMeshObjects.ToString("N0");
                        PageControl.Controls["CameraSceneNodes"].Text =
                            activeCameraStatistics.SceneNodes.ToString("N0");
                        PageControl.Controls["CameraGuiRenderers"].Text =
                            activeCameraStatistics.GuiRenderers.ToString("N0");
                        PageControl.Controls["CameraGuiBatches"].Text =
                            activeCameraStatistics.GuiBatches.ToString("N0");
                        PageControl.Controls["CameraTriangles"].Text =
                            activeCameraStatistics.Triangles.ToString("N0");
                        PageControl.Controls["CameraBatches"].Text =
                            activeCameraStatistics.Batches.ToString("N0");
                    }
                    else
                    {
                        //no camera selected

                        PageControl.Controls["CameraOutdoorWalks"].Text  = "";
                        PageControl.Controls["CameraPortalsPassed"].Text = "";
                        PageControl.Controls["CameraZonesPassed"].Text   = "";

                        PageControl.Controls["CameraStaticMeshObjects"].Text = "";
                        PageControl.Controls["CameraSceneNodes"].Text        = "";
                        PageControl.Controls["CameraGuiRenderers"].Text      = "";
                        PageControl.Controls["CameraGuiBatches"].Text        = "";
                        PageControl.Controls["CameraTriangles"].Text         = "";
                        PageControl.Controls["CameraBatches"].Text           = "";
                    }
                }
            }