engine: add bsp v21 support, add StaticPropLump_t v7-v11 support

This commit is contained in:
nillerusr
2022-11-30 15:58:19 +03:00
parent 20f5783225
commit 729ac111af
4 changed files with 239 additions and 70 deletions
+104 -53
View File
@@ -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();