aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/engine/IClientLeafSystem.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/engine/IClientLeafSystem.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/engine/IClientLeafSystem.h')
-rw-r--r--mp/src/public/engine/IClientLeafSystem.h73
1 files changed, 73 insertions, 0 deletions
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
+
+