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

#include <AKeyFrameLibraryManager.h>

Inheritance diagram for AKeyFrameLibraryManager:

Public Types

using ThisClass = AKeyFrameLibraryManager
 
using BaseClass = Toshi::TObject
 
using LibraryMap = Toshi::T2Map<Toshi::TPString8, Toshi::TKeyframeLibrary*, Toshi::TPString8::Comparator>
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 AKeyFrameLibraryManager ()
 
 ~AKeyFrameLibraryManager ()
 
void LoadLibrariesFromProperties (const PBPropertyValue *a_pArray, Toshi::TTRB *a_pTRB)
 
TBOOL LoadLibrary (const Toshi::TPString8 &a_rLibraryName, Toshi::TTRB *a_pTRB=nullptr)
 
TBOOL UnrefLibrary (const Toshi::TPString8 &a_rLibraryName)
 

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::TObject::ms_oClass
 
static Toshi::TClass ms_oClass = Toshi::TClass( "AKeyFrameLibraryManager", AKeyFrameLibraryManager::PARENTCLASS, AKeyFrameLibraryManager::CreateTObject, AKeyFrameLibraryManager::CreateTObjectInPlace, AKeyFrameLibraryManager::InitialiseClass, AKeyFrameLibraryManager::DeinitialiseClass, 0, 1, sizeof( AKeyFrameLibraryManager ), alignof( AKeyFrameLibraryManager ) )
 

Detailed Description

Definition at line 9 of file AKeyFrameLibraryManager.h.

Member Typedef Documentation

◆ BaseClass

using AKeyFrameLibraryManager::BaseClass = Toshi::TObject

Definition at line 13 of file AKeyFrameLibraryManager.h.

◆ LibraryMap

using AKeyFrameLibraryManager::LibraryMap = Toshi::T2Map<Toshi::TPString8, Toshi::TKeyframeLibrary*, Toshi::TPString8::Comparator>

Definition at line 15 of file AKeyFrameLibraryManager.h.

◆ ThisClass

Constructor & Destructor Documentation

◆ AKeyFrameLibraryManager()

AKeyFrameLibraryManager::AKeyFrameLibraryManager ( )

Definition at line 17 of file AKeyFrameLibraryManager.cpp.

19{
20}
@ POOL_Misc
Definition AMemory.h:35
static Toshi::T2Allocator * GetAllocator(POOL a_ePool)
Definition AMemory.cpp:31

◆ ~AKeyFrameLibraryManager()

AKeyFrameLibraryManager::~AKeyFrameLibraryManager ( )

Definition at line 22 of file AKeyFrameLibraryManager.cpp.

23{
24 UnloadAllLibraries();
25}

Member Function Documentation

◆ CreateTObject()

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

Definition at line 15 of file AKeyFrameLibraryManager.cpp.

◆ CreateTObjectInPlace()

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

Definition at line 15 of file AKeyFrameLibraryManager.cpp.

◆ DeinitialiseClass()

void AKeyFrameLibraryManager::DeinitialiseClass ( )
static

Definition at line 15 of file AKeyFrameLibraryManager.cpp.

◆ GetClass()

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

Definition at line 15 of file AKeyFrameLibraryManager.cpp.

◆ GetClassStatic()

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

Definition at line 13 of file AKeyFrameLibraryManager.h.

◆ InitialiseClass()

void AKeyFrameLibraryManager::InitialiseClass ( )
static

Definition at line 15 of file AKeyFrameLibraryManager.cpp.

◆ LoadLibrariesFromProperties()

void AKeyFrameLibraryManager::LoadLibrariesFromProperties ( const PBPropertyValue * a_pArray,
Toshi::TTRB * a_pTRB )

Definition at line 27 of file AKeyFrameLibraryManager.cpp.

28{
30
31 if ( TNULL != a_pArray )
32 {
33 auto pArray = a_pArray->GetArray();
34
35 for ( TUINT i = 0; i < pArray->GetSize(); i++ )
36 {
37 LoadLibrary( TPString8( pArray->GetValue( i )->GetString() ), a_pTRB );
38 g_oLoadScreen.Update( 1.0f, TTRUE );
39 }
40
41 g_oLoadScreen.Update( 1.0f, TTRUE );
42 }
43}
#define TPROFILER_SCOPE()
Definition Profiler.h:17
unsigned int TUINT
Definition Typedefs.h:8
#define TNULL
Definition Typedefs.h:23
#define TTRUE
Definition Typedefs.h:25
ALoadScreen g_oLoadScreen
const class PBPropertyValueArray * GetArray() const
void Update(TFLOAT a_fDeltaTime=1.0f, TBOOL a_bRender=true)
TBOOL LoadLibrary(const Toshi::TPString8 &a_rLibraryName, Toshi::TTRB *a_pTRB=nullptr)

◆ LoadLibrary()

TBOOL AKeyFrameLibraryManager::LoadLibrary ( const Toshi::TPString8 & a_rLibraryName,
Toshi::TTRB * a_pTRB = nullptr )

Definition at line 45 of file AKeyFrameLibraryManager.cpp.

46{
48
49 if ( m_Libraries.IsValid( m_Libraries.Find( a_rLibraryName ) ) )
50 {
51 // The library is already loaded
52 // Increment reference count
53 m_LibrariesRefs.Find( a_rLibraryName )->GetSecond() += 1;
54 return TTRUE;
55 }
56
57 TKeyframeLibrary* pKeyFrameLibrary;
58 auto pRenderInterface = TRenderInterface::GetSingleton();
59 auto pKeyFrameLibMngr = &pRenderInterface->GetKeyframeLibraryManager();
60
61 if ( TNULL == a_pTRB )
62 {
63 LoadFromModelsFolder:
64 TString8 filePath;
65 filePath.Format( "data/models/%s.tkl", a_rLibraryName.GetString() );
66
67 pKeyFrameLibrary = pKeyFrameLibMngr->LoadLibrary( filePath );
68 }
69 else
70 {
71 TString8 symbolname;
72 symbolname.Format( "%s_keylib", a_rLibraryName.GetString() );
73
74 // If no symbol was found, load from models folder
75 if ( TNULL == a_pTRB->GetSymbol( symbolname ) )
76 goto LoadFromModelsFolder;
77
78 pKeyFrameLibrary = pKeyFrameLibMngr->LoadLibrary( a_pTRB, symbolname );
79
80 // If no success in loading library, try to load it from models folder
81 if ( !pKeyFrameLibrary )
82 goto LoadFromModelsFolder;
83 }
84
85 TVALIDPTR( pKeyFrameLibrary );
86
87 if ( TNULL != pKeyFrameLibrary )
88 m_Libraries.Insert( a_rLibraryName, pKeyFrameLibrary );
89
90 m_LibrariesRefs.Insert( a_rLibraryName, 1 );
91
92 return TTRUE;
93}
#define TVALIDPTR(PTR)
Definition Defines.h:139
static TFORCEINLINE TRenderInterface * GetSingleton()
Definition TSingleton.h:49
TString8 & Format(const TCHAR *a_pcFormat,...)
Definition TString8.cpp:176

◆ UnrefLibrary()

TBOOL AKeyFrameLibraryManager::UnrefLibrary ( const Toshi::TPString8 & a_rLibraryName)

Definition at line 95 of file AKeyFrameLibraryManager.cpp.

96{
98
99 auto pResultNode = m_Libraries.Find( a_rLibraryName );
100
101 if ( m_Libraries.IsValid( pResultNode ) )
102 {
103 auto pRefResultNode = m_LibrariesRefs.Find( pResultNode->GetFirst() );
104
105 if ( pRefResultNode != m_LibrariesRefs.End() )
106 {
107 auto& rNumRefs = pResultNode->GetSecond();
108
109 if ( rNumRefs != 0 )
110 rNumRefs--;
111
112 if ( rNumRefs == 0 )
113 {
114 UnloadLibrary( pResultNode );
115 m_LibrariesRefs.Remove( pRefResultNode );
116 }
117 }
118 }
119
120 return TTRUE;
121}

Member Data Documentation

◆ ms_oClass

◆ PARENTCLASS

Toshi::TClass* AKeyFrameLibraryManager::PARENTCLASS = & Toshi::TObject::ms_oClass
staticconstexpr

Definition at line 13 of file AKeyFrameLibraryManager.h.


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