RootPanel: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Created page with '{{confirm-box}} The '''RootPanel''' (strictly speaking the '''ClientDLLRootPanel''') is the ultimate parent of all VGUI elements created by a game. Unlike <code>m_pViewport</cod…')
 
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{confirm-box}}
{{confirm-box}}


The '''RootPanel''' (strictly speaking the '''ClientDLLRootPanel''') is the ultimate parent of all VGUI elements created by a game. Unlike <code>m_pViewport</code>, which will point to different objects as the active [[ClientMode]] changes, the RootPanel is static.
The '''RootPanel''' (strictly speaking the '''ClientDLLRootPanel''') is the where the client starts creating [[panel]]s for its in-game HUD. It in entirely separate from the [[GameUI]] panel used to draw the main menu. The first child is normally the active [[ClientMode]].


Most games will never need to access the RootPanel. If this is true for your project then you should return the engine-controlled PANEL_CLIENTDLL instead of creating a new object, which is the behaviour of the example below.
Most games will never need to access the RootPanel. If this is true for your project then you should return the engine-controlled <code>PANEL_CLIENTDLL</code> (the behaviour of the example below) instead of creating a new object.


{{tip|If you do need to access the RootPanel, then it is probably to draw an effect over the entire screen, VGUI elements included. Remember to <code>SetPostChildPaintEnabled(true)</code> if this is your intention.}}
{{tip|If you do need to access the RootPanel it is probably to draw an effect over the entire screen, VGUI elements included. Remember to <code>SetPostChildPaintEnabled(true)</code> if this is your intention.}}


== Minimum implementation ==
== Minimum implementation ==
Line 11: Line 11:
Conventionally in <code>vgui_rootpanel_<game>.cpp</code>:
Conventionally in <code>vgui_rootpanel_<game>.cpp</code>:


<source lang=cpp>#include "cbase.h"
<source lang=cpp>
#include "cbase.h"
#include "ienginevgui.h"
#include "ienginevgui.h"


Line 25: Line 26:
{
{
return enginevgui->GetPanel(PANEL_CLIENTDLL);
return enginevgui->GetPanel(PANEL_CLIENTDLL);
}</source>
}
</source>


== See also ==
== See also ==
Line 31: Line 33:
* <code>game\client\sdk\vgui\vgui_rootpanel_sdk.cpp</code> (for a game creating its own RootPanel)
* <code>game\client\sdk\vgui\vgui_rootpanel_sdk.cpp</code> (for a game creating its own RootPanel)
* [[ClientMode]]
* [[ClientMode]]
* [[GameUI]]
* <code>[[VPANEL]]</code>
* <code>[[VPANEL]]</code>


[[Category:VGUI]]
[[Category:VGUI]]

Latest revision as of 12:48, 2 August 2011

Help.png
This article contains speculation that needs to be confirmed.

The RootPanel (strictly speaking the ClientDLLRootPanel) is the where the client starts creating panels for its in-game HUD. It in entirely separate from the GameUI panel used to draw the main menu. The first child is normally the active ClientMode.

Most games will never need to access the RootPanel. If this is true for your project then you should return the engine-controlled PANEL_CLIENTDLL (the behaviour of the example below) instead of creating a new object.

Tip.pngTip:If you do need to access the RootPanel it is probably to draw an effect over the entire screen, VGUI elements included. Remember to SetPostChildPaintEnabled(true) if this is your intention.

Minimum implementation

Conventionally in vgui_rootpanel_<game>.cpp:

#include "cbase.h"
#include "ienginevgui.h"

void VGUI_CreateClientDLLRootPanel()
{
}

void VGUI_DestroyClientDLLRootPanel()
{
}

vgui::VPANEL VGui_GetClientDLLRootPanel()
{
	return enginevgui->GetPanel(PANEL_CLIENTDLL);
}

See also