OpenBarnyard
 
Loading...
Searching...
No Matches
AGUIPicture.cpp
Go to the documentation of this file.
1#include "pch.h"
2#include "AGUIPicture.h"
3#include "AGUI2.h"
4
5//-----------------------------------------------------------------------------
6// Enables memory debugging.
7// Note: Should be the last include!
8//-----------------------------------------------------------------------------
10
12
14
25
26void AGUIPicture::InitialiseClass()
27{
28 constexpr TFLOAT TEX_SIZE = 256.0f;
29
30 TFLOAT fValA;
31 TFLOAT fValB = -240.0f;
32
33 for ( TINT i = 0; i < 2; i++ )
34 {
35 fValA = ( i == 0 ) ? TEX_SIZE - 1.0f : 240.0f - fValB;
36
37 split_rules[ i * 3 + 0 ].iImageIndex = i * 3 + 0;
38 split_rules[ i * 3 + 0 ].Pos1 = { -320.0f, -65.0f };
39 split_rules[ i * 3 + 0 ].Pos2 = { fValB, fValA + fValB };
40 split_rules[ i * 3 + 0 ].UV1 = { 0.0f, 0.9960938f };
41 split_rules[ i * 3 + 0 ].UV2 = { 0.0f, fValA / TEX_SIZE };
42 split_rules[ i * 3 + 0 ].iUnk1 = 0;
43 split_rules[ i * 3 + 0 ].iUnk2 = 0;
44
45 split_rules[ i * 3 + 1 ].iImageIndex = i * 3 + 1;
46 split_rules[ i * 3 + 1 ].Pos1 = { -65.0f, 190.0f };
47 split_rules[ i * 3 + 1 ].Pos2 = { fValB, fValA + fValB };
48 split_rules[ i * 3 + 1 ].UV1 = { 0.0f, 0.9960938f };
49 split_rules[ i * 3 + 1 ].UV2 = { 0.0f, fValA / TEX_SIZE };
50 split_rules[ i * 3 + 1 ].iUnk1 = 0;
51 split_rules[ i * 3 + 1 ].iUnk2 = 0;
52
53 split_rules[ i * 3 + 2 ].iImageIndex = i * 3 + 2;
54 split_rules[ i * 3 + 2 ].Pos1 = { 190.0f, 320.0f };
55 split_rules[ i * 3 + 2 ].Pos2 = { fValB, fValA + fValB };
56 split_rules[ i * 3 + 2 ].UV1 = { 0.0f, 1.015625f };
57 split_rules[ i * 3 + 2 ].UV2 = { 0.0f, fValA / TEX_SIZE };
58 split_rules[ i * 3 + 2 ].iUnk1 = 0;
59 split_rules[ i * 3 + 2 ].iUnk2 = 0;
60
61 fValB += fValA;
62 }
63}
64
65void AGUIPicture::DeinitialiseClass()
66{
67}
68
70{
71 m_bFlag = TTRUE;
72}
73
75{
76 if ( m_bIsVisible )
77 {
78 TFLOAT fWidth, fHeight;
79 AGUI2::GetSingleton()->GetDimensions( fWidth, fHeight );
80
81 AGUI2Transform transform;
82 transform.SetTranslation( 0.0f, 0.0f );
83 transform.Scale( fWidth / 638.0f, fHeight / 477.0f );
84
85 auto pRenderer = AGUI2::GetRenderer();
86 pRenderer->PushTransform( transform, TVector2::VEC_ZERO, TVector2::VEC_ZERO );
87
88 for ( TINT i = 0; i < m_iNumRects1; i++ )
89 {
90 pRenderer->SetMaterial( *m_pRectangles[ i ].ppMaterial );
91 pRenderer->RenderRectangle( m_pRectangles[ i ].Pos1, m_pRectangles[ i ].Pos2, m_pRectangles[ i ].UV1, m_pRectangles[ i ].UV2 );
92 }
93
94 pRenderer->PopTransform();
95 }
96}
#define TOSHI_NAMESPACE_USING
Definition Defines.h:46
#define TDEFINE_CLASS_INIT_NORUNTIME(...)
Definition TObject.h:164
float TFLOAT
Definition Typedefs.h:4
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
constinit static const TVector2 VEC_ZERO
Definition TVector2.h:132
static AGUI2Renderer * GetRenderer()
Definition AGUI2.cpp:239
constexpr void SetTranslation(TFLOAT a_fX, TFLOAT a_fY)
void Scale(TFLOAT a_fScaleX, TFLOAT a_fScaleY)
virtual void SetFlag()
static SplitRule split_rules[6]
Definition AGUIPicture.h:54
TBOOL m_bIsVisible
Definition AGUIPicture.h:63
TFLOAT m_fUnknown3
Definition AGUIPicture.h:66
TBOOL m_bFlag
Definition AGUIPicture.h:64
TBOOL m_bLoaded
Definition AGUIPicture.h:65
TINT m_iNumRects2
Definition AGUIPicture.h:59
TINT m_iUnknown1
Definition AGUIPicture.h:57
virtual void Render()
TINT m_iNumRects1
Definition AGUIPicture.h:58
Rectangle * m_pRectangles
Definition AGUIPicture.h:60
Toshi::TVector2 Pos1
Definition AGUIPicture.h:15