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

#include <AGrassMesh.h>

Inheritance diagram for AGrassMesh:
AGrassMeshHAL

Public Types

using ThisClass = AGrassMesh
 
using BaseClass = Toshi::TMesh
 
using LockBuffer = Toshi::TVertexPoolResourceInterface::LockBuffer
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 AGrassMesh ()
 
 ~AGrassMesh ()
 
virtual TBOOL Validate () override
 
virtual void Invalidate () override
 
virtual void OnDestroy () override
 
virtual TBOOL Create (TUINT32 a_uiFlags, TUINT16 a_uiMaxVertices)
 
virtual TBOOL Lock (LockBuffer &a_rLockBuffer)
 
virtual void Unlock (TUINT32 a_uiNumVertices)
 
virtual Toshi::TVertexPoolResourceInterface * GetVertexPool ()
 
AWorldMesh::SubMeshGetSubMesh (TUINT a_uiIndex)
 

Static Public Member Functions

static Toshi::TObject * CreateTObject ()
 
static Toshi::TObject * CreateTObjectInPlace (void *a_pPtr)
 
static void InitialiseClass ()
 
static void DeinitialiseClass ()
 
static __forceinline Toshi::TClass * GetClassStatic ()
 

Static Public Attributes

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

Friends

class AModelLoader
 

Detailed Description

Definition at line 9 of file AGrassMesh.h.

Member Typedef Documentation

◆ BaseClass

using AGrassMesh::BaseClass = Toshi::TMesh

Definition at line 13 of file AGrassMesh.h.

◆ LockBuffer

using AGrassMesh::LockBuffer = Toshi::TVertexPoolResourceInterface::LockBuffer

Definition at line 15 of file AGrassMesh.h.

◆ ThisClass

Definition at line 13 of file AGrassMesh.h.

Constructor & Destructor Documentation

◆ AGrassMesh()

AGrassMesh::AGrassMesh ( )

Definition at line 18 of file AGrassMesh.cpp.

19 : m_uiFlags( 0 )
20 , m_uiMaxVertices( 0 )
21 , m_pVertexPool( TNULL )
22 , m_Unk5( 0 )
23{
24}
#define TNULL
Definition Typedefs.h:23

◆ ~AGrassMesh()

AGrassMesh::~AGrassMesh ( )

Definition at line 28 of file AGrassMesh.cpp.

29{
30 if ( m_aSubMeshes[ 0 ].pIndexPool )
31 {
32 TRenderInterface::GetSingleton()->DestroyResource( m_aSubMeshes[ 0 ].pIndexPool );
33 m_aSubMeshes[ 0 ].pIndexPool = TNULL;
34 }
35}
void DestroyResource(TResource *resource)
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49

Member Function Documentation

◆ Create()

TBOOL AGrassMesh::Create ( TUINT32 a_uiFlags,
TUINT16 a_uiMaxVertices )
virtual

Definition at line 71 of file AGrassMesh.cpp.

72{
73 m_uiFlags = a_uiFlags;
74 m_uiMaxVertices = a_uiMaxVertices;
75
76 auto pVertexFactory = TRenderInterface::GetSingleton()->GetSystemResource<TVertexFactoryResourceInterface>( SYSRESOURCE_VFWORLD );
77 TVALIDPTR( pVertexFactory );
78
79 m_pVertexPool = pVertexFactory->CreatePoolResource( m_uiMaxVertices, 1 );
80 BaseClass::Create();
81
82 return TTRUE;
83}
@ SYSRESOURCE_VFWORLD
Definition TRender.h:14
#define TVALIDPTR(PTR)
Definition Defines.h:139
#define TTRUE
Definition Typedefs.h:25
T * GetSystemResource(SYSRESOURCE systemResource)

◆ CreateTObject()

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

Definition at line 15 of file AGrassMesh.cpp.

◆ CreateTObjectInPlace()

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

Definition at line 15 of file AGrassMesh.cpp.

◆ DeinitialiseClass()

void AGrassMesh::DeinitialiseClass ( )
static

Definition at line 15 of file AGrassMesh.cpp.

◆ GetClass()

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

Reimplemented in AGrassMeshHAL.

Definition at line 15 of file AGrassMesh.cpp.

◆ GetClassStatic()

static __forceinline Toshi::TClass * AGrassMesh::GetClassStatic ( )
inlinestatic

Definition at line 13 of file AGrassMesh.h.

◆ GetSubMesh()

AWorldMesh::SubMesh * AGrassMesh::GetSubMesh ( TUINT a_uiIndex)
inline

Definition at line 38 of file AGrassMesh.h.

39 {
41 return &m_aSubMeshes[ a_uiIndex ];
42 }
#define TASSERT(X,...)
Definition Defines.h:138
static constexpr TUINT NUM_SUBMESHES
Definition AWorldMesh.h:19

◆ GetVertexPool()

TVertexPoolResourceInterface * AGrassMesh::GetVertexPool ( )
virtual

Definition at line 107 of file AGrassMesh.cpp.

108{
109 return m_pVertexPool;
110}

◆ InitialiseClass()

void AGrassMesh::InitialiseClass ( )
static

Definition at line 15 of file AGrassMesh.cpp.

◆ Invalidate()

void AGrassMesh::Invalidate ( )
overridevirtual

Definition at line 50 of file AGrassMesh.cpp.

51{
52 BaseClass::Invalidate();
53}

◆ Lock()

TBOOL AGrassMesh::Lock ( LockBuffer & a_rLockBuffer)
virtual

Definition at line 85 of file AGrassMesh.cpp.

86{
87 if ( m_pVertexPool->Lock( &a_rLockBuffer ) )
88 {
89 m_uiFlags |= FLAG_LOCKED;
90 return TTRUE;
91 }
92
93 return TFALSE;
94}
#define TFALSE
Definition Typedefs.h:24

◆ OnDestroy()

void AGrassMesh::OnDestroy ( )
overridevirtual

Definition at line 56 of file AGrassMesh.cpp.

57{
58 AModelLoader::DestroyMaterial( GetMaterial() );
59
60 if ( m_pVertexPool )
61 {
63 m_pVertexPool = TNULL;
64 }
65
66 m_uiFlags = 0;
67 m_uiMaxVertices = 0;
68}
static void DestroyMaterial(Toshi::TMaterial *a_pMaterial)

◆ Unlock()

void AGrassMesh::Unlock ( TUINT32 a_uiNumVertices)
virtual

Definition at line 96 of file AGrassMesh.cpp.

97{
98 if ( TINT16( a_uiNumVertices ) == -1 )
99 {
100 a_uiNumVertices = m_pVertexPool->GetNumVertices();
101 }
102
103 m_pVertexPool->Unlock( a_uiNumVertices );
104 m_uiFlags &= ~FLAG_LOCKED;
105}
int16_t TINT16
Definition Typedefs.h:14

◆ Validate()

TBOOL AGrassMesh::Validate ( )
overridevirtual

Definition at line 37 of file AGrassMesh.cpp.

38{
39 if ( !IsValidated() )
40 {
41 TVALIDPTR( m_pVertexPool );
42
43 m_pVertexPool->Validate();
44 BaseClass::Validate();
45 }
46
47 return TTRUE;
48}

Friends And Related Symbol Documentation

◆ AModelLoader

friend class AModelLoader
friend

Definition at line 17 of file AGrassMesh.h.

Member Data Documentation

◆ ms_oClass

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

Definition at line 13 of file AGrassMesh.h.

◆ PARENTCLASS

Toshi::TClass* AGrassMesh::PARENTCLASS = & Toshi::TMesh::ms_oClass
staticconstexpr

Definition at line 13 of file AGrassMesh.h.


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