diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /engine/decal_private.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'engine/decal_private.h')
| -rw-r--r-- | engine/decal_private.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/engine/decal_private.h b/engine/decal_private.h new file mode 100644 index 0000000..8252103 --- /dev/null +++ b/engine/decal_private.h @@ -0,0 +1,82 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#ifndef DECAL_PRIVATE_H +#define DECAL_PRIVATE_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "gl_model_private.h" +#include "idispinfo.h" + +#define DECAL_NORMAL 0x00 // Default +#define DECAL_CUSTOM 0x01 // Clan logo, etc. + +// JAY: Compress this as much as possible +// decal instance +struct decal_t +{ + decal_t *pnext; // linked list for each surface + decal_t *pDestroyList; // + SurfaceHandle_t surfID; // Surface id for persistence / unlinking + IMaterial *material; + float lightmapOffset; + + // FIXME: + // make dx and dy in decal space and get rid of position, so that + // position can be rederived from the decal basis. + Vector position; // location of the decal center in world space. + Vector saxis; // direction of the s axis in world space + float dx; // Offsets into surface texture (in texture coordinates, so we don't need floats) + float dy; + float scale; // Pixel scale + float flSize; // size of decal, used for rejecting on dispinfo planes + float fadeDuration; // Negative value means to fade in + float fadeStartTime; + color32 color; + void *userdata; // For player decals only, decal index ( first player at slot 1 ) + DispDecalHandle_t m_DispDecal; // Handle to displacement decals associated with this + unsigned short clippedVertCount; + unsigned short cacheHandle; + unsigned short m_iDecalPool; // index into the decal pool. + short flags; // Decal flags DECAL_* !!!SAVED AS A BYTE (SEE HOST_CMD.C) + short entityIndex; // Entity this is attached to + + // NOTE: The following variables are dynamic variables. + // We could put these into a separate array and reference them + // by index to reduce memory costs of this... + + int m_iSortTree; // MaterialSort tree id + int m_iSortMaterial; // MaterialSort id. +}; + + +#define FDECAL_PERMANENT 0x01 // This decal should not be removed in favor of any new decals +#define FDECAL_REFERENCE 0x02 // This is a decal that's been moved from another level +#define FDECAL_CUSTOM 0x04 // This is a custom clan logo and should not be saved/restored +#define FDECAL_HFLIP 0x08 // Flip horizontal (U/S) axis +#define FDECAL_VFLIP 0x10 // Flip vertical (V/T) axis + +// NOTE: There are used by footprints; maybe we separate into a separate struct? +#define FDECAL_USESAXIS 0x80 // Uses the s axis field to determine orientation +#define FDECAL_DYNAMIC 0x100 // Indicates the decal is dynamic +#define FDECAL_SECONDPASS 0x200 // Decals that have to be drawn after everything else +#define FDECAL_DONTSAVE 0x800 // Decal was loaded from adjacent level, don't save out to save file for this level +#define FDECAL_PLAYERSPRAY 0x1000 // Decal is a player spray +#define FDECAL_DISTANCESCALE 0x2000 // Decal is dynamically scaled based on distance. +#define FDECAL_HASUPDATED 0x4000 // Decal has not been updated this frame yet + +// Max decal (see r_decal.cpp for initialization). +extern int g_nMaxDecals; + +struct worldbrushdata_t; +void R_DecalUnlink( decal_t *pdecal, worldbrushdata_t *model ); + +#endif // DECAL_PRIVATE_H |