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

#include <AGUIMatlibPicture.h>

Inheritance diagram for AGUIMatlibPicture:
AGUIPicture

Public Member Functions

 TDECLARE_CLASS (AGUIMatlibPicture, AGUIPicture)
 
 AGUIMatlibPicture ()
 
 ~AGUIMatlibPicture ()
 
virtual void Flush () override
 
virtual void Cache () override
 
virtual void Create (const Toshi::TPString8 &a_rName) override
 
- Public Member Functions inherited from AGUIPicture
 TDECLARE_CLASS (AGUIPicture, Toshi::TObject)
 
 AGUIPicture ()
 
virtual void SetFlag ()
 
virtual void Render ()
 
void SetVisible ()
 
void SetHidden ()
 
const Toshi::TPString8 & GetName () const
 

Additional Inherited Members

- Protected Attributes inherited from AGUIPicture
TINT m_iUnknown1
 
TINT m_iNumRects1
 
TINT m_iNumRects2
 
Rectanglem_pRectangles
 
Imagem_pImages
 
Toshi::TPString8 m_Name
 
TBOOL m_bIsVisible
 
TBOOL m_bFlag
 
TBOOL m_bLoaded
 
TFLOAT m_fUnknown3
 
- Static Protected Attributes inherited from AGUIPicture
static SplitRule split_rules [6]
 

Detailed Description

Definition at line 5 of file AGUIMatlibPicture.h.

Constructor & Destructor Documentation

◆ AGUIMatlibPicture()

AGUIMatlibPicture::AGUIMatlibPicture ( )

Definition at line 131 of file AGUIMatlibPicture.cpp.

132{
133}

◆ ~AGUIMatlibPicture()

AGUIMatlibPicture::~AGUIMatlibPicture ( )

Definition at line 135 of file AGUIMatlibPicture.cpp.

136{
137 Flush();
138}
virtual void Flush() override

Member Function Documentation

◆ Cache()

void AGUIMatlibPicture::Cache ( )
overridevirtual

Implements AGUIPicture.

Definition at line 52 of file AGUIMatlibPicture.cpp.

53{
55
56 if ( m_iNumRects1 < 1 )
57 {
58 if ( !m_Name.IsEmpty() )
59 {
60 m_iNumRects1 = 6;
61 m_pRectangles = new Rectangle[ 6 ];
62
63 m_iNumRects2 = 6;
64 m_pImages = new Image[ 6 ];
65 LoadMatLib();
66
67 auto pTexFactory = TRenderInterface::GetSingleton()->GetSystemResource<TTextureFactory>( SYSRESOURCE_TEXTUREFACTORY );
68
69 for ( TINT i = 0; i < m_iNumRects2; i++ )
70 {
71 TString8 texName;
72 texName.Format( "%s_%d.tga", m_Name.GetString8().GetString(), i + 1 );
73
74 auto iTexIndex = m_pMaterialLibrary->FindTextureIndex( texName );
75 auto pTexture = pTexFactory->CreateFromT2Texture( m_pMaterialLibrary->GetTexture( iTexIndex )->pTexture );
76
77 m_pImages[ i ].pTexture = pTexture;
78 m_pImages[ i ].pMaterial = AGUI2::GetRenderer()->CreateMaterial( pTexture );
79 m_pImages[ i ].pMaterial->SetBlendState( 0 );
80 m_pImages[ i ].pMaterial->SetTextureAddress( 1 );
81 }
82
83 for ( TINT i = 0; i < m_iNumRects1; i++ )
84 {
85 auto pRect = &m_pRectangles[ i ];
86 pRect->ppMaterial = &m_pImages[ AGUIPicture::split_rules[ i ].iImageIndex ].pMaterial;
87
88 ( pRect->Pos1 ).y = AGUIPicture::split_rules[ i ].Pos2.x;
89 ( pRect->Pos1 ).x = AGUIPicture::split_rules[ i ].Pos1.x;
90 ( pRect->Pos2 ).y = AGUIPicture::split_rules[ i ].Pos2.y;
91 ( pRect->Pos2 ).x = AGUIPicture::split_rules[ i ].Pos1.y;
92 ( pRect->UV1 ).y = AGUIPicture::split_rules[ i ].UV2.x;
93 ( pRect->UV1 ).x = AGUIPicture::split_rules[ i ].UV1.x;
94 ( pRect->UV2 ).y = AGUIPicture::split_rules[ i ].UV2.y;
95 ( pRect->UV2 ).x = AGUIPicture::split_rules[ i ].UV1.y;
96 }
97
99 }
100 }
101}
@ SYSRESOURCE_TEXTUREFACTORY
Definition TRender.h:20
#define TASSERT(X,...)
Definition Defines.h:138
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
T * GetSystemResource(SYSRESOURCE systemResource)
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49
TString8 & Format(const TCHAR *a_pcFormat,...)
Definition TString8.cpp:176
static AGUI2Renderer * GetRenderer()
Definition AGUI2.cpp:239
virtual AGUI2Material * CreateMaterial(const TCHAR *a_szTextureName)=0
static SplitRule split_rules[6]
Definition AGUIPicture.h:54
TBOOL m_bLoaded
Definition AGUIPicture.h:65
TINT m_iNumRects2
Definition AGUIPicture.h:59
Image * m_pImages
Definition AGUIPicture.h:61
TINT m_iNumRects1
Definition AGUIPicture.h:58
Toshi::TPString8 m_Name
Definition AGUIPicture.h:62
Rectangle * m_pRectangles
Definition AGUIPicture.h:60

◆ Create()

void AGUIMatlibPicture::Create ( const Toshi::TPString8 & a_rName)
overridevirtual

Implements AGUIPicture.

Definition at line 103 of file AGUIMatlibPicture.cpp.

104{
105 if ( m_Name != a_rName ) Flush();
106 m_Name = a_rName;
107}

◆ Flush()

void AGUIMatlibPicture::Flush ( )
overridevirtual

Implements AGUIPicture.

Definition at line 20 of file AGUIMatlibPicture.cpp.

21{
22 if ( m_iNumRects1 != 0 )
23 {
24 if ( m_pImages != TNULL )
25 {
26 for ( TINT i = 0; i < m_iNumRects2; i++ )
27 {
28 if ( m_pImages[ i ].pTexture )
29 {
30 m_pImages[ i ].pTexture->DestroyResource();
31 m_pImages[ i ].pTexture = TNULL;
32 }
33
34 AGUI2::GetRenderer()->DestroyMaterial( m_pImages[ i ].pMaterial );
35 m_pImages[ i ].pMaterial = TNULL;
36 }
37
38 delete[] m_pImages;
40
41 m_iNumRects2 = 0;
42 delete[] m_pRectangles;
44
45 m_iNumRects1 = 0;
46 UnloadMatLib();
48 }
49 }
50}
#define TNULL
Definition Typedefs.h:23
virtual void DestroyMaterial(AGUI2Material *a_pMaterial)=0

◆ TDECLARE_CLASS()

AGUIMatlibPicture::TDECLARE_CLASS ( AGUIMatlibPicture ,
AGUIPicture  )

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