This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

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