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

#include <ATerrainLODBlock.h>

Inheritance diagram for ATerrainLODBlock:

Public Member Functions

 ATerrainLODBlock (TUINT a_uiHeapSize, const TCHAR *a_szName)
 
 ~ATerrainLODBlock ()
 
void SetupTRB (Toshi::TTRB *a_pTRB, ATerrainLODBlock *a_pOther)
 
void UpdateLastAccessTime ()
 
void Assign (ATerrainSection *a_pVISGroup, ATerrainLODType a_eLODType)
 
void SetUsed ()
 
void SetUnused ()
 
TBOOL IsUsed () const
 
TBOOL IsUnused () const
 
AMemoryPoolAllocatorGetAllocator ()
 
Toshi::TMemory::MemBlock * GetMemBlock ()
 

Friends

class ATerrainInterface
 
class ATerrainVIS
 
class ATerrainSection
 

Detailed Description

Definition at line 16 of file ATerrainLODBlock.h.

Constructor & Destructor Documentation

◆ ATerrainLODBlock()

ATerrainLODBlock::ATerrainLODBlock ( TUINT a_uiHeapSize,
const TCHAR * a_szName )

Definition at line 16 of file ATerrainLODBlock.cpp.

17{
18 m_pAllocatedSize = TNULL;
19 m_pUnk2 = 0;
20 m_pVISGroup = TNULL;
21 m_eLODType = ATerrainLODType_None;
22 m_fLastAccessTime = 0.0f;
23 m_uiHeapSize = a_uiHeapSize;
24 m_bIsUnused = TTRUE;
25
26 m_pCreatedMemBlock = g_pMemory->CreateMemBlock( m_uiHeapSize, a_szName, g_pMemory->GetGlobalBlock(), 0 );
27 m_Allocator.SetMemBlock( m_pCreatedMemBlock );
28}
#define TNULL
Definition Typedefs.h:23
#define TTRUE
Definition Typedefs.h:25
@ ATerrainLODType_None
TMemory * g_pMemory
Definition TMemory.cpp:131
MemBlock * GetGlobalBlock() const
Gets the global memory block.
Definition TMemory.cpp:582
MemBlock * CreateMemBlock(TSIZE a_uiSize, const TCHAR *a_szName, MemBlock *a_pOwnerBlock, TINT a_iUnused)
Creates a new memory block.
Definition TMemory.cpp:488

◆ ~ATerrainLODBlock()

ATerrainLODBlock::~ATerrainLODBlock ( )

Definition at line 30 of file ATerrainLODBlock.cpp.

31{
32 g_pMemory->DestroyMemBlock( m_pCreatedMemBlock );
33 m_pCreatedMemBlock = (TMemory::MemBlock*)1;
34 m_Allocator.SetMemBlock( TNULL );
35
36 static TUINT32 s_AllocatedSizeAfterDestroy = 0;
37 static TUINT32 s_Unk2AfterDestroy = 0;
38
39 m_pAllocatedSize = &s_AllocatedSizeAfterDestroy;
40 m_pUnk2 = &s_Unk2AfterDestroy;
41}
uint32_t TUINT32
Definition Typedefs.h:13
void DestroyMemBlock(MemBlock *a_pMemBlock)
Destroys a memory block.
Definition TMemory.cpp:572

Member Function Documentation

◆ Assign()

void ATerrainLODBlock::Assign ( ATerrainSection * a_pVISGroup,
ATerrainLODType a_eLODType )

Definition at line 69 of file ATerrainLODBlock.cpp.

70{
71 if ( m_pVISGroup )
72 {
73 m_pVISGroup->DestroyLOD( m_eLODType );
74 m_pVISGroup = TNULL;
75 m_eLODType = ATerrainLODType_None;
76 }
77
78 m_fLastAccessTime = 0.0f;
79 m_pVISGroup = a_pVISGroup;
80 m_eLODType = a_eLODType;
81
82 if ( a_pVISGroup )
83 {
85 }
86 else
87 {
88 m_bIsUnused = TTRUE;
89 }
90}

◆ GetAllocator()

AMemoryPoolAllocator & ATerrainLODBlock::GetAllocator ( )
inline

Definition at line 46 of file ATerrainLODBlock.h.

46{ return m_Allocator; }

◆ GetMemBlock()

Toshi::TMemory::MemBlock * ATerrainLODBlock::GetMemBlock ( )
inline

Definition at line 47 of file ATerrainLODBlock.h.

47{ return m_pCreatedMemBlock; }

◆ IsUnused()

TBOOL ATerrainLODBlock::IsUnused ( ) const
inline

Definition at line 44 of file ATerrainLODBlock.h.

44{ return m_bIsUnused; }

◆ IsUsed()

TBOOL ATerrainLODBlock::IsUsed ( ) const
inline

Definition at line 43 of file ATerrainLODBlock.h.

43{ return !m_bIsUnused; }

◆ SetUnused()

void ATerrainLODBlock::SetUnused ( )
inline

Definition at line 38 of file ATerrainLODBlock.h.

39 {
40 m_bIsUnused = TTRUE;
41 }

◆ SetupTRB()

void ATerrainLODBlock::SetupTRB ( Toshi::TTRB * a_pTRB,
ATerrainLODBlock * a_pOther )

Definition at line 43 of file ATerrainLODBlock.cpp.

44{
45 Node::InsertAfter( a_pOther );
46 a_pTRB->SetMemoryFunctions(
47 []( TTRB::AllocType alloctype, TUINT32 size, TINT16 unk1, TUINT32 unk2, void* userData ) -> void* {
48 auto pBlock = TSTATICCAST( ATerrainLODBlock, userData );
49
50 if ( pBlock->m_pAllocatedSize )
51 {
52 *pBlock->m_pAllocatedSize += size;
53 }
54
55 return TMemalign( 128, size, pBlock->Next()->m_pCreatedMemBlock );
56 },
57 []( TTRB::AllocType alloctype, void* ptr, TINT16 unk1, TUINT32 unk2, void* userData ) {
58 TFree( ptr );
59 },
60 a_pOther
61 );
62}
void * TMemalign(TSIZE a_uiAlignment, TSIZE a_uiSize, Toshi::TMemory::MemBlock *a_pMemBlock)
Allocates aligned memory from a specific memory block.
Definition TMemory.cpp:1020
void TFree(void *a_pMem)
Frees previously allocated memory.
Definition TMemory.cpp:1054
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69
int16_t TINT16
Definition Typedefs.h:14
TUINT8 AllocType
Definition TTRB.h:269
ATerrainLODBlock(TUINT a_uiHeapSize, const TCHAR *a_szName)

◆ SetUsed()

void ATerrainLODBlock::SetUsed ( )
inline

Definition at line 32 of file ATerrainLODBlock.h.

33 {
35 m_bIsUnused = TFALSE;
36 }
#define TFALSE
Definition Typedefs.h:24

◆ UpdateLastAccessTime()

void ATerrainLODBlock::UpdateLastAccessTime ( )

Definition at line 64 of file ATerrainLODBlock.cpp.

65{
66 m_fLastAccessTime = g_oSystemManager.GetScheduler()->GetTotalTime();
67}
TSystemManager g_oSystemManager
Definition TSystem.cpp:15
TFLOAT GetTotalTime() const
Definition TScheduler.h:67
TScheduler * GetScheduler() const
Definition TSystem.h:155

Friends And Related Symbol Documentation

◆ ATerrainInterface

friend class ATerrainInterface
friend

Definition at line 19 of file ATerrainLODBlock.h.

◆ ATerrainSection

friend class ATerrainSection
friend

Definition at line 21 of file ATerrainLODBlock.h.

◆ ATerrainVIS

friend class ATerrainVIS
friend

Definition at line 20 of file ATerrainLODBlock.h.


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