72 lines
2.7 KiB
C++
72 lines
2.7 KiB
C++
//========= 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
|