You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.4 KiB
73 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Revision: $ |
|
// $NoKeywords: $ |
|
// |
|
// This file contains code to allow us to associate client data with bsp leaves. |
|
// |
|
//=============================================================================// |
|
|
|
#if !defined( ICLIENTLEAFSYSTEM_H ) |
|
#define ICLIENTLEAFSYSTEM_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "client_render_handle.h" |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Render groups |
|
//----------------------------------------------------------------------------- |
|
enum RenderGroup_Config_t |
|
{ |
|
// Number of buckets that are used to hold opaque entities |
|
// and opaque static props by size. The bucketing should be used to reduce overdraw. |
|
RENDER_GROUP_CFG_NUM_OPAQUE_ENT_BUCKETS = 4, |
|
}; |
|
|
|
enum RenderGroup_t |
|
{ |
|
RENDER_GROUP_OPAQUE_STATIC_HUGE = 0, // Huge static prop |
|
RENDER_GROUP_OPAQUE_ENTITY_HUGE = 1, // Huge opaque entity |
|
RENDER_GROUP_OPAQUE_STATIC = RENDER_GROUP_OPAQUE_STATIC_HUGE + ( RENDER_GROUP_CFG_NUM_OPAQUE_ENT_BUCKETS - 1 ) * 2, |
|
RENDER_GROUP_OPAQUE_ENTITY, // Opaque entity (smallest size, or default) |
|
|
|
RENDER_GROUP_TRANSLUCENT_ENTITY, |
|
RENDER_GROUP_TWOPASS, // Implied opaque and translucent in two passes |
|
RENDER_GROUP_VIEW_MODEL_OPAQUE, // Solid weapon view models |
|
RENDER_GROUP_VIEW_MODEL_TRANSLUCENT, // Transparent overlays etc |
|
|
|
RENDER_GROUP_OPAQUE_BRUSH, // Brushes |
|
|
|
RENDER_GROUP_OTHER, // Unclassfied. Won't get drawn. |
|
|
|
// This one's always gotta be last |
|
RENDER_GROUP_COUNT |
|
}; |
|
|
|
#define CLIENTLEAFSYSTEM_INTERFACE_VERSION_1 "ClientLeafSystem001" |
|
#define CLIENTLEAFSYSTEM_INTERFACE_VERSION "ClientLeafSystem002" |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// The client leaf system |
|
//----------------------------------------------------------------------------- |
|
abstract_class IClientLeafSystemEngine |
|
{ |
|
public: |
|
// Adds and removes renderables from the leaf lists |
|
// CreateRenderableHandle stores the handle inside pRenderable. |
|
virtual void CreateRenderableHandle( IClientRenderable* pRenderable, bool bIsStaticProp = false ) = 0; |
|
virtual void RemoveRenderable( ClientRenderHandle_t handle ) = 0; |
|
virtual void AddRenderableToLeaves( ClientRenderHandle_t renderable, int nLeafCount, unsigned short *pLeaves ) = 0; |
|
virtual void ChangeRenderableRenderGroup( ClientRenderHandle_t handle, RenderGroup_t group ) = 0; |
|
}; |
|
|
|
|
|
#endif // ICLIENTLEAFSYSTEM_H |
|
|
|
|
|
|