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

#include <ASysMaterial_DX8.h>

Inheritance diagram for ASysMaterialHAL:
ASysMaterial

Public Member Functions

 TDECLARE_CLASS (ASysMaterialHAL, ASysMaterial)
 
 ASysMaterialHAL ()
 
 ~ASysMaterialHAL ()
 
virtual void PreRender () override
 
virtual void PostRender () override
 
virtual TBOOL Create (BLENDMODE a_eBlendMode) override
 
virtual void SetBlendMode (BLENDMODE a_eBlendMode) override
 
void SetOrderTable (Toshi::TOrderTable *a_pOrderTable)
 
ASysShaderHALGetSysShaderHAL () const
 
- Public Member Functions inherited from ASysMaterial
 TDECLARE_CLASS (ASysMaterial, Toshi::TMaterial)
 
 ASysMaterial ()
 
virtual TBOOL Create () override
 
void SetTexture (Toshi::TTexture *a_pTexture)
 
ASysShaderGetSysShader () const
 

Additional Inherited Members

- Public Types inherited from ASysMaterial
enum  BLENDMODE {
  BLENDMODE_DEFAULT , BLENDMODE_1 , BLENDMODE_2 , BLENDMODE_3 ,
  BLENDMODE_4 , BLENDMODE_5 , BLENDMODE_6 , BLENDMODE_7 ,
  BLENDMODE_8 , BLENDMODE_9 , BLENDMODE_10 , BLENDMODE_NUMOF
}
 
- Protected Attributes inherited from ASysMaterial
Toshi::TTexture * m_pTexture
 
TUINT m_Unk1
 
TUINT m_Unk2
 
TUINT m_Unk3
 
BLENDMODE m_eBlendMode
 
Toshi::TVector4 m_Vec3
 

Detailed Description

Definition at line 7 of file ASysMaterial_DX8.h.

Constructor & Destructor Documentation

◆ ASysMaterialHAL()

ASysMaterialHAL::ASysMaterialHAL ( )

Definition at line 19 of file ASysMaterial_DX8.cpp.

20{
21 m_pAssignedOrderTable = TNULL;
23 m_Unk1 = 0;
24 m_Unk2 = 0;
25 m_Unk3 = 0;
26}
#define TNULL
Definition Typedefs.h:23
Toshi::TTexture * m_pTexture

◆ ~ASysMaterialHAL()

ASysMaterialHAL::~ASysMaterialHAL ( )

Definition at line 28 of file ASysMaterial_DX8.cpp.

29{
30 auto pRegMat = GetRegMaterial();
31
32 if ( pRegMat )
33 {
35 }
36}
static void DeregisterMaterial(TRegMaterial *a_pRegMat)

Member Function Documentation

◆ Create()

TBOOL ASysMaterialHAL::Create ( BLENDMODE a_eBlendMode)
overridevirtual

Reimplemented from ASysMaterial.

Definition at line 56 of file ASysMaterial_DX8.cpp.

57{
58 // This is a bug in the original code
59 // Should probably be ASysMaterial::SetBlendMode instead of just SetBlendMode
60 SetBlendMode( a_eBlendMode );
61 ASysMaterialHAL::SetBlendMode( a_eBlendMode );
62
63 return TMaterial::Create();
64}
virtual TBOOL Create()
Definition TMaterial.cpp:40
virtual void SetBlendMode(BLENDMODE a_eBlendMode) override

◆ GetSysShaderHAL()

ASysShaderHAL * ASysMaterialHAL::GetSysShaderHAL ( ) const
inline

Definition at line 23 of file ASysMaterial_DX8.h.

24 {
25 return TSTATICCAST( ASysShaderHAL, GetShader() );
26 }
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69

◆ PostRender()

void ASysMaterialHAL::PostRender ( )
overridevirtual

Definition at line 163 of file ASysMaterial_DX8.cpp.

164{
166
167 pDevice->SetTexture( 0, TNULL );
168
169 if ( m_Flags & FLAGS_NO_CULL )
170 {
171 pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW );
172 }
173
175 pDevice->SetTexture( 0, TNULL );
176 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
177 pDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
178}
@ ADDRESSINGMODE_WRAP
Definition TRender.h:40
@ TEXCOORD_UV
Definition TRender.h:29
TFORCEINLINE IDirect3DDevice8 * GetDirect3DDevice() const
Gets the Direct3D device.
static TFORCEINLINE TRenderD3DInterface * Interface()
Gets the render interface singleton.
void SetTextureAddress(TINT a_iStage, ADDRESSINGMODE a_eAddressing, TEXCOORD a_eTextureCoordinate=TEXCOORD_UV)
Sets texture addressing mode.

◆ PreRender()

void ASysMaterialHAL::PreRender ( )
overridevirtual

Definition at line 98 of file ASysMaterial_DX8.cpp.

99{
101
102 if ( m_pTexture )
103 {
104 TTextureResourceHAL* pTextureHAL = TSTATICCAST( TTextureResourceHAL, m_pTexture );
105 pTextureHAL->Validate();
106
107 if ( pTextureHAL->GetD3DTexture() )
108 {
109 pDevice->SetTexture( 0, pTextureHAL->GetD3DTexture() );
111 }
112 }
113 else
114 {
115 pDevice->SetTexture( 0, TNULL );
116 }
117
118 if ( m_Flags & FLAGS_NO_CULL )
119 {
120 pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
121 }
122
123 switch ( m_eBlendMode )
124 {
126 pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
127 pDevice->SetRenderState( D3DRS_DESTBLEND, 6 );
128 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
129 break;
130 case BLENDMODE_1:
131 case BLENDMODE_8:
132 case BLENDMODE_9:
133 case BLENDMODE_10:
134 pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
135 pDevice->SetRenderState( D3DRS_DESTBLEND, 6 );
136 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
137 break;
138 case BLENDMODE_2:
139 pDevice->SetRenderState( D3DRS_SRCBLEND, 1 );
140 pDevice->SetRenderState( D3DRS_DESTBLEND, 3 );
141 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
142 break;
143 case BLENDMODE_3:
144 case BLENDMODE_6:
145 pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
146 pDevice->SetRenderState( D3DRS_DESTBLEND, 2 );
147 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
148 break;
149 case BLENDMODE_7:
150 pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
151 pDevice->SetRenderState( D3DRS_DESTBLEND, 2 );
152 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
153 pDevice->SetRenderState( D3DRS_ZENABLE, 0 );
154 break;
155 default:
156 pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
157 pDevice->SetRenderState( D3DRS_DESTBLEND, 6 );
158 pDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
159 break;
160 }
161}
IDirect3DTexture8 * GetD3DTexture()
virtual TBOOL Validate() override
ADDRESSINGMODE GetAddressing() const
Definition TTexture.h:55
BLENDMODE m_eBlendMode

◆ SetBlendMode()

void ASysMaterialHAL::SetBlendMode ( BLENDMODE a_eBlendMode)
overridevirtual

Reimplemented from ASysMaterial.

Definition at line 66 of file ASysMaterial_DX8.cpp.

67{
68 TASSERT( a_eBlendMode >= BLENDMODE_DEFAULT && a_eBlendMode < BLENDMODE_NUMOF );
69
70 switch ( a_eBlendMode )
71 {
73 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 0 ) );
74 break;
75 case BLENDMODE_5:
76 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 3 ) );
77 break;
78 case BLENDMODE_6:
79 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 3 ) );
80 break;
81 case BLENDMODE_7:
82 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 1 ) );
83 break;
84 case BLENDMODE_8:
85 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 2 ) );
86 break;
87 case BLENDMODE_9:
88 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 3 ) );
89 break;
90 default:
91 SetOrderTable( GetSysShaderHAL()->GetOrderTable( 1 ) );
92 break;
93 }
94
95 ASysMaterial::SetBlendMode( a_eBlendMode );
96}
#define TASSERT(X,...)
Definition Defines.h:138
ASysShaderHAL * GetSysShaderHAL() const
void SetOrderTable(Toshi::TOrderTable *a_pOrderTable)
virtual void SetBlendMode(BLENDMODE a_eBlendMode)

◆ SetOrderTable()

void ASysMaterialHAL::SetOrderTable ( Toshi::TOrderTable * a_pOrderTable)

Definition at line 38 of file ASysMaterial_DX8.cpp.

39{
40 if ( a_pOrderTable != m_pAssignedOrderTable )
41 {
42 if ( m_pAssignedOrderTable )
43 {
44 TOrderTable::DeregisterMaterial( GetRegMaterial() );
45 }
46
47 if ( a_pOrderTable )
48 {
49 a_pOrderTable->RegisterMaterial( this );
50 }
51
52 m_pAssignedOrderTable = a_pOrderTable;
53 }
54}

◆ TDECLARE_CLASS()

ASysMaterialHAL::TDECLARE_CLASS ( ASysMaterialHAL ,
ASysMaterial  )

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