OpenBarnyard
 
Loading...
Searching...
No Matches
AGUI2 Class Reference

#include <AGUI2.h>

Inheritance diagram for AGUI2:

Public Types

using ThisClass = AGUI2
 
using BaseClass = Toshi::TTask
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 AGUI2 ()
 
virtual TBOOL OnCreate () override
 
virtual TBOOL OnUpdate (TFLOAT a_fDeltaTime) override
 
void GetDimensions (TFLOAT &a_rWidth, TFLOAT &a_rHeight)
 
void CreateContext ()
 
TBOOL IsCursorVisible () const
 
void SetCursorVisible (TBOOL a_bVisible)
 

Static Public Member Functions

static Toshi::TObject * CreateTObject ()
 
static Toshi::TObject * CreateTObjectInPlace (void *a_pPtr)
 
static void InitialiseClass ()
 
static void DeinitialiseClass ()
 
static TFORCEINLINE Toshi::TClass * GetClassStatic ()
 
static AGUI2MouseCursorGetMouseCursor ()
 
static AGUI2ElementGetRootElement ()
 
static AGUI2ContextGetContext ()
 
static AGUI2RendererGetRenderer ()
 

Static Public Attributes

static constexpr Toshi::TClass * PARENTCLASS = & Toshi::TTask::ms_oClass
 
static Toshi::TClass ms_oClass = Toshi::TClass( "AGUI2", AGUI2::PARENTCLASS, AGUI2::CreateTObject, AGUI2::CreateTObjectInPlace, AGUI2::InitialiseClass, AGUI2::DeinitialiseClass, 0, 1, sizeof( AGUI2 ), alignof( AGUI2 ) )
 

Detailed Description

Definition at line 11 of file AGUI2.h.

Member Typedef Documentation

◆ BaseClass

using AGUI2::BaseClass = Toshi::TTask

Definition at line 15 of file AGUI2.h.

◆ ThisClass

Definition at line 15 of file AGUI2.h.

Constructor & Destructor Documentation

◆ AGUI2()

AGUI2::AGUI2 ( )

Definition at line 25 of file AGUI2.cpp.

26{
27 m_pRootElement = TNULL;
28 m_bShowMouseCursor = TFALSE;
29
30 m_bShowMemStatsInfo = TTRUE;
31 m_bShowFPSInfo = TTRUE;
32 m_bShowPlayerInfo = TTRUE;
33 m_bShowTexturesInfo = TTRUE;
34}
#define TNULL
Definition Typedefs.h:23
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25

Member Function Documentation

◆ CreateContext()

void AGUI2::CreateContext ( )

Definition at line 234 of file AGUI2.cpp.

235{
236 ms_pCurrentContext = new AGUI2Context;
237}

◆ CreateTObject()

Toshi::TObject * AGUI2::CreateTObject ( )
static

Definition at line 23 of file AGUI2.cpp.

◆ CreateTObjectInPlace()

Toshi::TObject * AGUI2::CreateTObjectInPlace ( void * a_pPtr)
static

Definition at line 23 of file AGUI2.cpp.

◆ DeinitialiseClass()

void AGUI2::DeinitialiseClass ( )
static

Definition at line 23 of file AGUI2.cpp.

◆ GetClass()

Toshi::TClass * AGUI2::GetClass ( )
overridevirtual

Definition at line 23 of file AGUI2.cpp.

◆ GetClassStatic()

static TFORCEINLINE Toshi::TClass * AGUI2::GetClassStatic ( )
inlinestatic

Definition at line 15 of file AGUI2.h.

◆ GetContext()

static AGUI2Context * AGUI2::GetContext ( )
inlinestatic

Definition at line 32 of file AGUI2.h.

32{ return ms_pCurrentContext; }

◆ GetDimensions()

void AGUI2::GetDimensions ( TFLOAT & a_rWidth,
TFLOAT & a_rHeight )

Definition at line 229 of file AGUI2.cpp.

230{
231 m_pRootElement->GetDimensions( a_rWidth, a_rHeight );
232}

◆ GetMouseCursor()

static AGUI2MouseCursor & AGUI2::GetMouseCursor ( )
inlinestatic

Definition at line 30 of file AGUI2.h.

30{ return GetSingletonSafe()->m_oMouseCursor; }

◆ GetRenderer()

AGUI2Renderer * AGUI2::GetRenderer ( )
static

Definition at line 239 of file AGUI2.cpp.

240{
241 TASSERT( ms_pCurrentContext != TNULL );
242 return ms_pCurrentContext->GetRenderer();
243}
#define TASSERT(X,...)
Definition Defines.h:138

◆ GetRootElement()

static AGUI2Element * AGUI2::GetRootElement ( )
inlinestatic

Definition at line 31 of file AGUI2.h.

31{ return GetSingletonSafe()->m_pRootElement; }

◆ InitialiseClass()

void AGUI2::InitialiseClass ( )
static

Definition at line 23 of file AGUI2.cpp.

◆ IsCursorVisible()

TBOOL AGUI2::IsCursorVisible ( ) const
inline

Definition at line 26 of file AGUI2.h.

26{ return m_bShowMouseCursor; }

◆ OnCreate()

TBOOL AGUI2::OnCreate ( )
overridevirtual

Definition at line 36 of file AGUI2.cpp.

37{
39 ms_pCurrentContext->SetRenderer( new AGUI2RendererDX8 );
40
41 m_pRootElement = ms_pCurrentContext->GetRootElement();
42 m_pRootElement->SetDimensions( 800.0f, 600.0f );
43 m_pRootElement->SetPostRenderCallback( MainPostRenderCallback );
44
45 AGUI2FontManager::Open( "data/gui/fonts.trb" );
48
49 auto pDebugCanvas = ms_pCurrentContext->GetDebugCanvas();
50 auto pFont = AGUI2FontManager::FindFont( "Rekord18" );
51
52 // FPS stats
53 m_oFPS.Create( pFont, 600.0f );
54 m_oFPS.SetAttachment( AGUI2ATTACHMENT_TOPLEFT, AGUI2ATTACHMENT_TOPLEFT );
55 m_oFPS.SetTextAlign( AGUI2Font::TextAlign_Left );
56 m_oFPS.SetTransform( 0.0f, 0.0f );
57
58 if ( m_bShowFPSInfo ) m_oFPS.Show();
59 else m_oFPS.Hide();
60 pDebugCanvas->AddChildTail( m_oFPS );
61
62 // Player stats
63 m_oPlayerInfo.Create( pFont, 600.0f );
64 m_oPlayerInfo.SetAttachment( AGUI2ATTACHMENT_TOPLEFT, AGUI2ATTACHMENT_TOPLEFT );
65 m_oPlayerInfo.SetTextAlign( AGUI2Font::TextAlign_Left );
66 m_oPlayerInfo.SetTransform( 0.0f, 24.0f );
67
68 if ( m_bShowPlayerInfo ) m_oPlayerInfo.Show();
69 else m_oPlayerInfo.Hide();
70 pDebugCanvas->AddChildTail( m_oPlayerInfo );
71
72 // Textures stats
73 m_oTexturesInfo.Create( pFont, 600.0f );
74 m_oTexturesInfo.SetAttachment( AGUI2ATTACHMENT_TOPLEFT, AGUI2ATTACHMENT_TOPLEFT );
75 m_oTexturesInfo.SetTextAlign( AGUI2Font::TextAlign_Left );
76 m_oTexturesInfo.SetTransform( 0.0f, 48.0f );
77
78 if ( m_bShowTexturesInfo ) m_oTexturesInfo.Show();
79 else m_oTexturesInfo.Hide();
80 pDebugCanvas->AddChildTail( m_oTexturesInfo );
81
82 // Memory stats
83 m_oMemStats.Create( pFont, 600.0f );
84 m_oMemStats.SetAttachment( AGUI2ATTACHMENT_TOPLEFT, AGUI2ATTACHMENT_TOPLEFT );
85 m_oMemStats.SetTextAlign( AGUI2Font::TextAlign_Left );
86 m_oMemStats.SetTransform( 0.0f, 72.0f );
87
88 if ( m_bShowMemStatsInfo ) m_oMemStats.Show();
89 else m_oMemStats.Hide();
90 pDebugCanvas->AddChildTail( m_oMemStats );
91
92 // Mouse cursor
93 m_oMouseCursor.Create( "Pointer_Up", "Pointer_Down", 0.5f );
94
95 return TTRUE;
96}
@ AAssetType_Startup
Definition AAssetLoader.h:8
@ AGUI2ATTACHMENT_TOPLEFT
static Toshi::TTRB * GetAssetTRB(AAssetType a_eAssetType)
void CreateContext()
Definition AGUI2.cpp:234
@ TextAlign_Left
Definition AGUI2Font.h:39
static TBOOL Open(const TCHAR *a_szFileName)
static AGUI2Font * FindFont(const TCHAR *a_szFontName)
static TBOOL Open(const TCHAR *a_szFileName, Toshi::TTRB *a_pTRB)

◆ OnUpdate()

TBOOL AGUI2::OnUpdate ( TFLOAT a_fDeltaTime)
overridevirtual

Definition at line 98 of file AGUI2.cpp.

99{
100 if ( m_bShowMemStatsInfo )
101 {
102 static TFLOAT s_UpdateTimer = 10.0f;
103 s_UpdateTimer += a_fDeltaTime;
104
105 if ( s_UpdateTimer >= 1.0f )
106 {
107 TMemory::MemInfo memInfo;
108 g_pMemory->GetMemInfo( memInfo, TNULL );
109
111 m_wszMemStats,
112 TARRAYSIZE( m_wszMemStats ),
113 L"Mem Used: %u, Free: %u\nHoles: %u, Largest: %u",
114 memInfo.m_uiLogicTotalUsed,
115 memInfo.m_uiLogicTotalFree,
116 memInfo.m_iNumHoles,
117 memInfo.m_uiLargestHole
118 );
119
120 m_oMemStats.SetText( m_wszMemStats );
121 s_UpdateTimer = 0.0f;
122 }
123 }
124
125 if ( m_bShowFPSInfo )
126 {
127 static TFLOAT s_FPS = 0.0f;
128 static TFLOAT s_UpdateTimer = 0.0f;
129 s_UpdateTimer += a_fDeltaTime;
130
131 if ( s_UpdateTimer > 0.1f )
132 {
133 s_FPS = g_oSystemManager.GetFPS();
134 s_UpdateTimer = 0.0f;
135 }
136
138 m_wszFPS,
139 TARRAYSIZE( m_wszFPS ),
140 L"FPS: %0.02f",
141 s_FPS
142 );
143
144 m_oFPS.SetText( m_wszFPS );
145
146 if ( s_FPS >= 15.0f )
147 {
148 m_oFPS.SetColour( s_FPS < 20.0f ? 0xffffff00 : 0xffffffff );
149 }
150 else
151 {
152 m_oFPS.SetColour( 0xffff0000 );
153 }
154 }
155
156 if ( m_bShowPlayerInfo )
157 {
158 TWCHAR wszPlayerInfo[ 128 ];
159 TStringManager::String16Format( wszPlayerInfo, TARRAYSIZE( wszPlayerInfo ), L"" );
160 TTODO( "Print debug info about player" );
161
162 TWCHAR wszCameraInfo[ 128 ];
163 TStringManager::String16Format( wszCameraInfo, TARRAYSIZE( wszCameraInfo ), L"" );
164
165 auto pCameraManager = ACameraManager::GetSingleton();
166
167 if ( TNULL != pCameraManager )
168 {
169 auto pCamera = pCameraManager->GetCurrentCamera();
170
171 if ( pCamera )
172 {
173 auto vCamTranslation = pCamera->GetMatrix().GetTranslation();
174
176 wszCameraInfo,
177 TARRAYSIZE( wszCameraInfo ),
178 L"%s: (%0.02f, %0.02f, %0.02f)",
179 L"Cam",
180 vCamTranslation.x,
181 vCamTranslation.y,
182 vCamTranslation.z
183 );
184 }
185 }
186
188 m_wszPlayerInfo,
189 TARRAYSIZE( m_wszPlayerInfo ),
190 L"%s",
191 wszCameraInfo
192 );
193
194 m_oPlayerInfo.SetText( m_wszPlayerInfo );
195 }
196
197 if ( m_bShowTexturesInfo )
198 {
199 auto iNumFreeTextures = AMaterialLibraryManager::GetSingleton()->GetNumFreeTextures();
200 auto iNumUsedTextures = AMaterialLibraryManager::GetSingleton()->GetNumUsedTextures();
201
203 m_wszTexturesInfo,
204 TARRAYSIZE( m_wszTexturesInfo ),
205 L"Textures: (F:%d,U:%d)/%d",
206 iNumFreeTextures,
207 iNumUsedTextures,
209 );
210
211 m_oTexturesInfo.SetText( m_wszTexturesInfo );
212
213 if ( iNumFreeTextures >= 20 )
214 {
215 m_oTexturesInfo.SetColour( iNumFreeTextures < 50 ? 0xffffff00 : 0xffffffff );
216 }
217 else
218 {
219 m_oTexturesInfo.SetColour( 0xffff0000 );
220 }
221 }
222
223 m_oMouseCursor.Update();
224 ms_pCurrentContext->Tick( a_fDeltaTime );
225
226 return TTRUE;
227}
#define TTODO(DESC)
Definition Defines.h:134
#define TARRAYSIZE(ARRAY)
Definition Defines.h:70
wchar_t TWCHAR
Definition Typedefs.h:21
float TFLOAT
Definition Typedefs.h:4
TSystemManager g_oSystemManager
Definition TSystem.cpp:15
TMemory * g_pMemory
Definition TMemory.cpp:131
static void GetMemInfo(MemInfo &a_rMemInfo, MemBlock *a_pMemBlock)
Definition TMemory.cpp:864
TSIZE m_uiLogicTotalUsed
Logical total used memory.
Definition TMemory.h:145
TSIZE m_uiLargestHole
Size of largest free hole.
Definition TMemory.h:148
TSIZE m_uiLogicTotalFree
Logical total free memory.
Definition TMemory.h:143
TINT m_iNumHoles
Number of free holes.
Definition TMemory.h:146
static void String16Format(TWCHAR *str, TINT size, const TWCHAR *format,...)
TFLOAT GetFPS() const
Definition TSystem.h:127
static constexpr TUINT MAX_NUM_TEXTURES

◆ SetCursorVisible()

void AGUI2::SetCursorVisible ( TBOOL a_bVisible)
inline

Definition at line 27 of file AGUI2.h.

27{ m_bShowMouseCursor = a_bVisible; }

Member Data Documentation

◆ ms_oClass

Toshi::TClass AGUI2::ms_oClass = Toshi::TClass( "AGUI2", AGUI2::PARENTCLASS, AGUI2::CreateTObject, AGUI2::CreateTObjectInPlace, AGUI2::InitialiseClass, AGUI2::DeinitialiseClass, 0, 1, sizeof( AGUI2 ), alignof( AGUI2 ) )
static

Definition at line 15 of file AGUI2.h.

◆ PARENTCLASS

Toshi::TClass* AGUI2::PARENTCLASS = & Toshi::TTask::ms_oClass
staticconstexpr

Definition at line 15 of file AGUI2.h.


The documentation for this class was generated from the following files: