mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
engine: add bsp v21 support, add StaticPropLump_t v7-v11 support
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
|
||||
// MINBSPVERSION is the minimum acceptable version. The engine will load MINBSPVERSION through BSPVERSION
|
||||
#define MINBSPVERSION 19
|
||||
#define BSPVERSION 20
|
||||
#define BSPVERSION 21
|
||||
|
||||
|
||||
// This needs to match the value in gl_lightmap.h
|
||||
@@ -62,7 +62,7 @@
|
||||
#define MAX_MAP_ENTITIES 8192
|
||||
#define MAX_MAP_TEXINFO 12288
|
||||
#define MAX_MAP_TEXDATA 2048
|
||||
#define MAX_MAP_DISPINFO 2048
|
||||
#define MAX_MAP_DISPINFO 10240
|
||||
#define MAX_MAP_DISP_VERTS ( MAX_MAP_DISPINFO * ((1<<MAX_MAP_DISP_POWER)+1) * ((1<<MAX_MAP_DISP_POWER)+1) )
|
||||
#define MAX_MAP_DISP_TRIS ( (1 << MAX_MAP_DISP_POWER) * (1 << MAX_MAP_DISP_POWER) * 2 )
|
||||
#define MAX_DISPVERTS NUM_DISP_POWER_VERTS( MAX_MAP_DISP_POWER )
|
||||
@@ -364,6 +364,7 @@ enum
|
||||
LUMP_OCCLUSION_VERSION = 2,
|
||||
LUMP_LEAFS_VERSION = 1,
|
||||
LUMP_LEAF_AMBIENT_LIGHTING_VERSION = 1,
|
||||
LUMP_WORLDLIGHTS_VERSION = 1
|
||||
};
|
||||
|
||||
|
||||
@@ -966,7 +967,31 @@ enum emittype_t
|
||||
|
||||
// Flags for dworldlight_t::flags
|
||||
#define DWL_FLAGS_INAMBIENTCUBE 0x0001 // This says that the light was put into the per-leaf ambient cubes.
|
||||
#define DWL_FLAGS_CASTENTITYSHADOWS 0x0002 // This says that the light will cast shadows from entities
|
||||
|
||||
// Old version of the worldlight struct, used for backward compatibility loading.
|
||||
struct dworldlight_version0_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
Vector origin;
|
||||
Vector intensity;
|
||||
Vector normal; // for surfaces and spotlights
|
||||
int cluster;
|
||||
emittype_t type;
|
||||
int style;
|
||||
float stopdot; // start of penumbra for emit_spotlight
|
||||
float stopdot2; // end of penumbra for emit_spotlight
|
||||
float exponent; //
|
||||
float radius; // cutoff distance
|
||||
// falloff for emit_spotlight + emit_point:
|
||||
// 1 / (constant_attn + linear_attn * dist + quadratic_attn * dist^2)
|
||||
float constant_attn;
|
||||
float linear_attn;
|
||||
float quadratic_attn;
|
||||
int flags; // Uses a combination of the DWL_FLAGS_ defines.
|
||||
int texinfo; //
|
||||
int owner; // entity that this light it relative to
|
||||
};
|
||||
|
||||
struct dworldlight_t
|
||||
{
|
||||
@@ -974,6 +999,7 @@ struct dworldlight_t
|
||||
Vector origin;
|
||||
Vector intensity;
|
||||
Vector normal; // for surfaces and spotlights
|
||||
Vector shadow_cast_offset; // gets added to the light origin when this light is used as a shadow caster (only if DWL_FLAGS_CASTENTITYSHADOWS flag is set)
|
||||
int cluster;
|
||||
emittype_t type;
|
||||
int style;
|
||||
|
||||
@@ -203,6 +203,101 @@ struct StaticPropLumpV6_t
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
};
|
||||
|
||||
struct StaticPropLumpV7_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
Vector m_Origin;
|
||||
QAngle m_Angles;
|
||||
unsigned short m_PropType;
|
||||
unsigned short m_FirstLeaf;
|
||||
unsigned short m_LeafCount;
|
||||
unsigned char m_Solid;
|
||||
unsigned char m_Flags;
|
||||
int m_Skin;
|
||||
float m_FadeMinDist;
|
||||
float m_FadeMaxDist;
|
||||
Vector m_LightingOrigin;
|
||||
float m_flForcedFadeScale;
|
||||
unsigned short m_nMinDXLevel;
|
||||
unsigned short m_nMaxDXLevel;
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
color32 m_DiffuseModulation; // per instance color and alpha modulation
|
||||
};
|
||||
|
||||
struct StaticPropLumpV8_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
Vector m_Origin;
|
||||
QAngle m_Angles;
|
||||
unsigned short m_PropType;
|
||||
unsigned short m_FirstLeaf;
|
||||
unsigned short m_LeafCount;
|
||||
unsigned char m_Solid;
|
||||
unsigned char m_Flags;
|
||||
int m_Skin;
|
||||
float m_FadeMinDist;
|
||||
float m_FadeMaxDist;
|
||||
Vector m_LightingOrigin;
|
||||
float m_flForcedFadeScale;
|
||||
unsigned char m_nMinCPULevel;
|
||||
unsigned char m_nMaxCPULevel;
|
||||
unsigned char m_nMinGPULevel;
|
||||
unsigned char m_nMaxGPULevel;
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
color32 m_DiffuseModulation; // per instance color and alpha modulation
|
||||
};
|
||||
|
||||
struct StaticPropLumpV9_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
Vector m_Origin;
|
||||
QAngle m_Angles;
|
||||
unsigned short m_PropType;
|
||||
unsigned short m_FirstLeaf;
|
||||
unsigned short m_LeafCount;
|
||||
unsigned char m_Solid;
|
||||
unsigned char m_Flags;
|
||||
int m_Skin;
|
||||
float m_FadeMinDist;
|
||||
float m_FadeMaxDist;
|
||||
Vector m_LightingOrigin;
|
||||
float m_flForcedFadeScale;
|
||||
unsigned char m_nMinCPULevel;
|
||||
unsigned char m_nMaxCPULevel;
|
||||
unsigned char m_nMinGPULevel;
|
||||
unsigned char m_nMaxGPULevel;
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
color32 m_DiffuseModulation; // per instance color and alpha modulation
|
||||
bool m_bDisableX360;
|
||||
};
|
||||
|
||||
// version 10
|
||||
struct StaticPropLumpV10_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
Vector m_Origin;
|
||||
QAngle m_Angles;
|
||||
unsigned short m_PropType;
|
||||
unsigned short m_FirstLeaf;
|
||||
unsigned short m_LeafCount;
|
||||
unsigned char m_Solid;
|
||||
unsigned char m_Flags;
|
||||
int m_Skin;
|
||||
float m_FadeMinDist;
|
||||
float m_FadeMaxDist;
|
||||
Vector m_LightingOrigin;
|
||||
float m_flForcedFadeScale;
|
||||
unsigned char m_nMinCPULevel;
|
||||
unsigned char m_nMaxCPULevel;
|
||||
unsigned char m_nMinGPULevel;
|
||||
unsigned char m_nMaxGPULevel;
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
color32 m_DiffuseModulation; // per instance color and alpha modulation
|
||||
bool m_bDisableX360;
|
||||
int m_FlagsEx; // more flags (introduced in v10)
|
||||
};
|
||||
|
||||
// version 11
|
||||
struct StaticPropLump_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
@@ -212,67 +307,23 @@ struct StaticPropLump_t
|
||||
unsigned short m_FirstLeaf;
|
||||
unsigned short m_LeafCount;
|
||||
unsigned char m_Solid;
|
||||
unsigned char m_Flags;
|
||||
int m_Skin;
|
||||
float m_FadeMinDist;
|
||||
float m_FadeMaxDist;
|
||||
Vector m_LightingOrigin;
|
||||
float m_flForcedFadeScale;
|
||||
unsigned short m_nMinDXLevel;
|
||||
unsigned short m_nMaxDXLevel;
|
||||
unsigned char m_nMinCPULevel;
|
||||
unsigned char m_nMaxCPULevel;
|
||||
unsigned char m_nMinGPULevel;
|
||||
unsigned char m_nMaxGPULevel;
|
||||
// int m_Lighting; // index into the GAMELUMP_STATIC_PROP_LIGHTING lump
|
||||
unsigned int m_Flags;
|
||||
unsigned short m_nLightmapResolutionX;
|
||||
unsigned short m_nLightmapResolutionY;
|
||||
|
||||
|
||||
StaticPropLump_t& operator=(const StaticPropLumpV4_t& _rhs)
|
||||
{
|
||||
m_Origin = _rhs.m_Origin;
|
||||
m_Angles = _rhs.m_Angles;
|
||||
m_PropType = _rhs.m_PropType;
|
||||
m_FirstLeaf = _rhs.m_FirstLeaf;
|
||||
m_LeafCount = _rhs.m_LeafCount;
|
||||
m_Solid = _rhs.m_Solid;
|
||||
m_Flags = _rhs.m_Flags;
|
||||
m_Skin = _rhs.m_Skin;
|
||||
m_FadeMinDist = _rhs.m_FadeMinDist;
|
||||
m_FadeMaxDist = _rhs.m_FadeMaxDist;
|
||||
m_LightingOrigin = _rhs.m_LightingOrigin;
|
||||
|
||||
// These get potentially set twice--once here and once in the caller.
|
||||
// Value judgement: This makes the code easier to work with, so unless it's a perf issue...
|
||||
m_flForcedFadeScale = 1.0f;
|
||||
m_nMinDXLevel = 0;
|
||||
m_nMaxDXLevel = 0;
|
||||
m_nLightmapResolutionX = 0;
|
||||
m_nLightmapResolutionY = 0;
|
||||
|
||||
// Older versions don't want this.
|
||||
m_Flags |= STATIC_PROP_NO_PER_TEXEL_LIGHTING;
|
||||
return *this;
|
||||
}
|
||||
|
||||
StaticPropLump_t& operator=(const StaticPropLumpV5_t& _rhs)
|
||||
{
|
||||
(*this) = reinterpret_cast<const StaticPropLumpV4_t&>(_rhs);
|
||||
|
||||
m_flForcedFadeScale = _rhs.m_flForcedFadeScale;
|
||||
return *this;
|
||||
}
|
||||
|
||||
StaticPropLump_t& operator=(const StaticPropLumpV6_t& _rhs)
|
||||
{
|
||||
(*this) = reinterpret_cast<const StaticPropLumpV5_t&>(_rhs);
|
||||
|
||||
m_nMinDXLevel = _rhs.m_nMinDXLevel;
|
||||
m_nMaxDXLevel = _rhs.m_nMaxDXLevel;
|
||||
return *this;
|
||||
}
|
||||
color32 m_DiffuseModulation; // per instance color and alpha modulation
|
||||
bool m_bDisableX360;
|
||||
int m_FlagsEx; // more flags (introduced in v10)
|
||||
float m_flPropScale;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
struct StaticPropLeafLump_t
|
||||
{
|
||||
DECLARE_BYTESWAP_DATADESC();
|
||||
|
||||
Reference in New Issue
Block a user