source-engine/public/engine/IClientLeafSystem.h

74 lines
2.4 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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