From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/public/engine/IClientLeafSystem.h | 73 ++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mp/src/public/engine/IClientLeafSystem.h (limited to 'mp/src/public/engine/IClientLeafSystem.h') diff --git a/mp/src/public/engine/IClientLeafSystem.h b/mp/src/public/engine/IClientLeafSystem.h new file mode 100644 index 00000000..6100243a --- /dev/null +++ b/mp/src/public/engine/IClientLeafSystem.h @@ -0,0 +1,73 @@ +//========= 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 + + -- cgit v1.2.3