OpenBarnyard
 
Loading...
Searching...
No Matches
TRenderInterface.h
Go to the documentation of this file.
1
11
12#pragma once
13#include "Render/TRender.h"
14#include "Math/Math.h"
15#include "Math/TSphere.h"
16#include "Toshi/TStack.h"
17#include "Toshi/TNodeList.h"
18#include "Toshi/TRefCounted.h"
19#include "Render/TResource.h"
20#include "Render/TAnimation.h"
24#include "Render/TModel.h"
25#include "Render/TDebugText.h"
26
28
29class TViewport;
30
32 : public TObject
33 , public TSingleton<TRenderInterface>
34 , public TRefCounted
35{
36public:
38
39public:
40 static constexpr size_t MAXNUMRESOURCES = 6000;
41
48
57
58public:
60 virtual ~TRenderInterface();
61
62 virtual TBOOL CreateDisplay( const DISPLAYPARAMS& a_rParams );
63 virtual TBOOL DestroyDisplay() = 0;
64 virtual TBOOL Update( float a_fDeltaTime ) = 0;
65 virtual TBOOL BeginScene();
66 virtual TBOOL EndScene() = 0;
69 virtual TBOOL Create();
70 virtual TBOOL Destroy();
71 virtual void RenderIndexPrimitive( TINT param_2, TINT param_3, TINT param_4, TINT param_5, TINT param_6, TINT param_7 );
72 virtual void DumpStats();
73 virtual void GetScreenOffset( TVector2& a_rVec );
74 virtual void SetScreenOffset( const TVector2& a_rVec );
75 virtual float GetScreenAspectRatio();
76 virtual float GetPixelAspectRatio();
77 virtual TBOOL SetPixelAspectRatio( float a_fPixelAspectRatio );
78 virtual void FlushOrderTables();
79 virtual TBOOL IsTextureFormatSupported( TINT a_eTextureFormat );
83 virtual void DestroyCapture( TRenderCapture* a_pRenderCapture ) = 0;
84 virtual void SetLightDirectionMatrix( const TMatrix44& a_rMatrix );
85 virtual void SetLightColourMatrix( const TMatrix44& a_rMatrix );
86 virtual void Unknown1( TViewport* a_pViewport );
87 virtual void* CreateUnknown( const TCHAR* a_szName, TINT a_iUnk1, TINT a_iUnk2, TINT a_iUnk3 ) = 0;
88 virtual TModel* CreateModel( TTMD* a_pTMD, TBOOL a_bLoad ) = 0;
89 virtual TModel* CreateModel( const TCHAR* a_szFilePath, TBOOL a_bLoad ) = 0;
90 virtual TModel* CreateModel( const TCHAR* a_szFilePath, TBOOL a_bLoad, TTRB* a_pAssetTRB, TUINT8 a_ui8FileNameLen ) = 0;
91 virtual void OnInitializationFailureDevice();
92 virtual void OnInitializationFailureDisplay();
94 virtual void DestroyDebugText() = 0;
96 virtual void DestroySystemResources();
97
98 // Creates display and returns TTRUE if success
100
101 // Destroys resource
102 void DestroyResource( TResource* resource );
103
104 // Destroys resource recursively
105 void DestroyResourceRecurse( TResource* resource );
106
107 // Returns system resource
108 template <class T>
109 T* GetSystemResource( SYSRESOURCE systemResource )
110 {
111 TASSERT( systemResource >= 0 && systemResource < SYSRESOURCE_NUMOF, "Unknown resource" );
112 return TSTATICCAST( T, m_SystemResources[ systemResource ] );
113 }
114
115 // Sets resource explicit
116 void SetResourceExplicit( TResource* resource, SYSRESOURCE systemResource );
117
118 // Creates resource and returns it
119 TResource* CreateResource( TClass* pClass, const TCHAR* name, TResource* parent );
120
121 // Sets new render context and returns the old one
123 {
124 return std::exchange( m_pCurrentContext, a_pRenderContext );
125 }
126
127 void SetAutoCreateSystemResources( TBOOL a_bAutoCreate ) { m_bCreateSystemResources = a_bAutoCreate; }
128
132
134 const TMatrix44& GetLightColour() const { return m_LightColour; }
135
141
143
144 void FlushDyingResources();
145 void DestroyDyingResources( TResource* resources );
146 //void DestroyDyingResources();
147
148 void DeleteResource( TResource* resources );
149 void DeleteResourceRecurse( TResource* resources );
150 void DeleteResourceAtomic( TResource* resources );
151
152 TRenderAdapter::Mode::Device* FindDevice( const DISPLAYPARAMS& a_rDisplayParams );
153
154 void BeginEndSceneHAL();
155
156protected:
168 void* m_Unk2; // 0x110
173 TUINT32 m_iFrameCount = 0; // 0x144
179};
180
3D model system for the Toshi engine
TOSHI_NAMESPACE_START typedef TUINT8 SYSRESOURCE
Definition TRender.h:5
@ SYSRESOURCE_NUMOF
Definition TRender.h:21
#define TASSERT(X,...)
Definition Defines.h:138
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
char TCHAR
Definition Typedefs.h:20
uint8_t TUINT8
Definition Typedefs.h:17
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
bool TBOOL
Definition Typedefs.h:6
Definition TTRB.h:253
virtual void SetScreenOffset(const TVector2 &a_rVec)
virtual void DestroyDebugText()=0
virtual TBOOL EndScene()=0
TTexture * GetInvalidTexture()
virtual void DestroySystemResources()
virtual void OnInitializationFailureDevice()
void DeleteResource(TResource *resources)
TGenericEmitter m_EndSceneEmitter
TDebugText * m_pDebugText
void DestroyDyingResources(TResource *resources)
virtual TDebugText * CreateDebugText()=0
virtual void RenderIndexPrimitive(TINT param_2, TINT param_3, TINT param_4, TINT param_5, TINT param_6, TINT param_7)
virtual TRenderAdapter::Mode::Device * GetCurrentDevice()=0
TStack< TMatrix44, 20 > & GetTransforms()
TGenericEmitter m_BeginSceneEmitter
TNodeList< TRenderAdapter > m_AdapterList
TRenderContext * m_pCurrentContext
virtual TRenderContext * CreateRenderContext()=0
virtual TBOOL BeginScene()
TKeyframeLibraryManager & GetKeyframeLibraryManager()
const TMatrix44 & GetLightColour() const
TResource * m_SystemResources[SYSRESOURCE_NUMOF]
TRenderContext * SetCurrentRenderContext(TRenderContext *a_pRenderContext)
virtual void FlushOrderTables()
static constexpr size_t MAXNUMRESOURCES
virtual TBOOL Supports32BitTextures()
TKeyframeLibraryManager m_KeyframeManager
virtual float GetScreenAspectRatio()
T * GetSystemResource(SYSRESOURCE systemResource)
virtual TBOOL SetPixelAspectRatio(float a_fPixelAspectRatio)
TTexture * m_pInvalidTexture
TNodeTree< TResource > m_Resources
void DeleteResourceRecurse(TResource *resources)
TNodeList< TRenderAdapter > * GetAdapterList()
virtual TModel * CreateModel(const TCHAR *a_szFilePath, TBOOL a_bLoad)=0
TRenderContext * m_pCreatedContext
TStack< TMatrix44, 20 > m_Transforms
TDECLARE_CLASS(TRenderInterface, TObject)
void DestroyResource(TResource *resource)
void SetResourceExplicit(TResource *resource, SYSRESOURCE systemResource)
virtual TBOOL Destroy()
TResource * CreateResource(TClass *pClass, const TCHAR *name, TResource *parent)
const TMatrix44 & GetLightDirection() const
virtual void SetLightDirectionMatrix(const TMatrix44 &a_rMatrix)
virtual TBOOL Create()
virtual TBOOL DestroyDisplay()=0
TRenderAdapter::Mode::Device * FindDevice(const DISPLAYPARAMS &a_rDisplayParams)
virtual float GetPixelAspectRatio()
virtual void SetLightColourMatrix(const TMatrix44 &a_rMatrix)
virtual void OnInitializationFailureDisplay()
void SetAutoCreateSystemResources(TBOOL a_bAutoCreate)
TRenderContext * GetCurrentContext() const
virtual void * CreateUnknown(const TCHAR *a_szName, TINT a_iUnk1, TINT a_iUnk2, TINT a_iUnk3)=0
virtual TModel * CreateModel(const TCHAR *a_szFilePath, TBOOL a_bLoad, TTRB *a_pAssetTRB, TUINT8 a_ui8FileNameLen)=0
virtual void GetScreenOffset(TVector2 &a_rVec)
virtual void Unknown1(TViewport *a_pViewport)
virtual void DumpStats()
virtual DISPLAYPARAMS * GetCurrentDisplayParams()=0
virtual TBOOL CreateSystemResources()
virtual void DestroyCapture(TRenderCapture *a_pRenderCapture)=0
void DeleteResourceAtomic(TResource *resources)
virtual TBOOL IsTextureFormatSupported(TINT a_eTextureFormat)
virtual TRenderCapture * CreateCapture()=0
void DestroyResourceRecurse(TResource *resource)
virtual TBOOL Update(float a_fDeltaTime)=0
virtual TModel * CreateModel(TTMD *a_pTMD, TBOOL a_bLoad)=0
Definition TClass.h:8
TSingleton(const TSingleton &)=delete
Definition TStack.h:7