OpenBarnyard
 
Loading...
Searching...
No Matches
TModelManager.h
Go to the documentation of this file.
1#pragma once
2#include "TModel.h"
3#include "Toshi/T2DList.h"
4
6
7class TSceneObject;
8class TManagedModel;
9
11{
12public:
13 class ModelNode : public T2DList<ModelNode>::Node
14 {
15 public:
17 {
18 m_CRC32 = 0;
19 m_uiRefCount = 0;
20 m_pModel = TNULL;
21 }
22
23 ModelNode( TUINT32 a_CRC32, TModel* a_pModel )
24 {
25 Create( a_CRC32, a_pModel );
26 }
27
29 {
30 return ++m_uiRefCount;
31 }
32
34 {
35 // TODO: Add something more?
36 TASSERT( m_uiRefCount > 0 );
37 return --m_uiRefCount;
38 }
39
40 void Create( TUINT32 a_CRC32, TModel* a_pModel )
41 {
42 m_CRC32 = a_CRC32;
43 m_uiRefCount = 0;
44 m_pModel = a_pModel;
45 }
46
47 TUINT32 GetCRC32() const { return m_CRC32; }
48 TUINT GetRefCount() const { return m_uiRefCount; }
49 TModel* GetModel() const { return m_pModel; }
50
51 ModelNode& operator=( const ModelNode& a_rOther )
52 {
53 m_CRC32 = a_rOther.m_CRC32;
54 m_uiRefCount = a_rOther.m_uiRefCount;
55 m_pModel = a_rOther.m_pModel;
56 }
57
58 private:
59 TUINT32 m_CRC32;
60 TUINT m_uiRefCount;
61 TModel* m_pModel;
62 };
63
64 static constexpr TUINT MAX_NUM_MODELS = 500;
65
66public:
67 static void Initialise();
68 static void Uninitialise();
69
70 static ModelNode* CreateModel( const TCHAR* a_szFileName, TManagedModel& a_rModelRef, TTRB* a_pAssetTRB );
71
72public:
73 inline static ModelNode* ms_pEntries;
76};
77
79{
80public:
82
83public:
86
87 TBOOL Create( const TCHAR* a_szFileName, TTRB* a_pTRB );
89
90 void SetModel( TModel* a_pModel ) { m_pModel = a_pModel; }
91
92 TModel* GetModel() const { return m_pModel; }
93 TModelManager::ModelNode* GetRegistryEntry() const { return m_pEntry; }
94
95private:
96 TModel* m_pModel = TNULL;
98};
99
3D model system for the Toshi engine
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
unsigned int TUINT
Definition Typedefs.h:8
char TCHAR
Definition Typedefs.h:20
#define TNULL
Definition Typedefs.h:23
uint32_t TUINT32
Definition Typedefs.h:13
bool TBOOL
Definition Typedefs.h:6
Definition TTRB.h:253
static void Initialise()
static ModelNode * ms_pEntries
static constexpr TUINT MAX_NUM_MODELS
static ModelNode * CreateModel(const TCHAR *a_szFileName, TManagedModel &a_rModelRef, TTRB *a_pAssetTRB)
static T2DList< ModelNode > ms_oUsedList
static T2DList< ModelNode > ms_oFreeList
static void Uninitialise()
TModel * GetModel() const
void Create(TUINT32 a_CRC32, TModel *a_pModel)
ModelNode(TUINT32 a_CRC32, TModel *a_pModel)
ModelNode & operator=(const ModelNode &a_rOther)
TUINT32 GetCRC32() const
friend TModelManager
void SetModel(TModel *a_pModel)
TSceneObject * CreateSceneObject()
TBOOL Create(const TCHAR *a_szFileName, TTRB *a_pTRB)
TModel * GetModel() const
TModelManager::ModelNode * GetRegistryEntry() const
constexpr Node()
Definition T2DList.h:26
friend class T2DList
Definition T2DList.h:22