62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
#ifndef WORLD_RENDER_H
|
|
#define WORLD_RENDER_H
|
|
|
|
#include "tier0/platform.h"
|
|
#include "gamesystem.h"
|
|
#include "trig.h"
|
|
#include "materialsystem/imaterialsystem.h"
|
|
#include "materials.h"
|
|
|
|
#include "cglm/mat4.h"
|
|
|
|
|
|
|
|
abstract_class IMesh
|
|
{
|
|
public:
|
|
|
|
virtual void SetVertices( IVertexBuffer *pBuffer ) = 0;
|
|
virtual void SetIndicies( IIndexBuffer *pBuffer, EIndexFormat eIndexFormat ) = 0;
|
|
|
|
virtual void SetMaterial( IMaterial *pMaterial ) = 0;
|
|
};
|
|
|
|
abstract_class IPointLight
|
|
{
|
|
public:
|
|
virtual void SetColor( Vector vColor ) = 0;
|
|
virtual void SetRadius( Vector vColor ) = 0;
|
|
virtual void SetPosition( Vector vPosition ) = 0;
|
|
virtual void SetRotation( Quat vRotation ) = 0;
|
|
virtual void SetScale( Vector vScale ) = 0;
|
|
};
|
|
|
|
abstract_class IMeshInstance
|
|
{
|
|
public:
|
|
virtual void SetPosition( Vector vPosition ) = 0;
|
|
virtual void SetRotation( Quat vRotation ) = 0;
|
|
virtual void SetScale( Vector vScale ) = 0;
|
|
virtual void SetMaterial( CBaseMaterial *pMaterial ) = 0;
|
|
};
|
|
|
|
abstract_class IWorldRenderer: public IGameSystem
|
|
{
|
|
public:
|
|
virtual void SetCameraRotation( Quat vRotation ) = 0;
|
|
virtual void SetCameraPosition( Vector vPosition ) = 0;
|
|
|
|
virtual IMesh *CreateMesh( const char *szName ) = 0;
|
|
virtual IMeshInstance *CreateInstance( IMesh *pMesh ) = 0;
|
|
virtual void DestroyMeshInstance( IMesh *pMesh, IMeshInstance *pInstance ) = 0;
|
|
virtual void DestroyMesh( IMesh *pMesh ) = 0;
|
|
|
|
virtual void ConfigureShader( IShader *pShader ) = 0;
|
|
|
|
virtual ITextureArray *GetTextures() = 0;
|
|
};
|
|
|
|
extern IWorldRenderer *g_pWorldRenderer;
|
|
|
|
#endif
|