tweak light styles checks

This commit is contained in:
Garux 2023-08-18 11:30:48 +06:00
parent d40538eea0
commit 1fb1896f11
6 changed files with 10 additions and 20 deletions

View File

@ -428,7 +428,7 @@ static void CreateEntityLights(){
/* set origin */
light.origin = e.vectorForKey( "origin" );
e.read_keyvalue( light.style, "_style", "style" );
if ( light.style < LS_NORMAL || light.style >= LS_NONE ) {
if ( !style_is_valid( light.style ) ) {
Error( "Invalid lightstyle (%d) on entity %zu", light.style, i );
}

View File

@ -487,10 +487,7 @@ static void RadSubdivideDiffuseLight( int lightmapNum, bspDrawSurface_t *ds, raw
light.photons = value * area * areaScale;
light.add = value * formFactorValueScale * areaScale;
light.color = si->color;
light.style = noStyles ? LS_NORMAL : si->lightStyle;
if ( light.style < LS_NORMAL || light.style >= LS_NONE ) {
light.style = LS_NORMAL;
}
light.style = noStyles || !style_is_valid( si->lightStyle )? LS_NORMAL : si->lightStyle;
/* set origin */
light.origin = minmax.origin();
@ -542,10 +539,7 @@ static void RadSubdivideDiffuseLight( int lightmapNum, bspDrawSurface_t *ds, raw
splash.si = si;
splash.color = si->color;
splash.falloffTolerance = falloffTolerance;
splash.style = noStyles ? LS_NORMAL : si->lightStyle;
if ( splash.style < LS_NORMAL || splash.style >= LS_NONE ) {
splash.style = LS_NORMAL;
}
splash.style = noStyles || !style_is_valid( si->lightStyle )? LS_NORMAL : si->lightStyle;
/* create a regular winding */
splash.w = AllocWinding( rw->numVerts );
@ -568,10 +562,7 @@ static void RadSubdivideDiffuseLight( int lightmapNum, bspDrawSurface_t *ds, raw
light.photons = value * area * bounceScale;
light.add = value * formFactorValueScale * bounceScale;
light.color = color;
light.style = noStyles ? LS_NORMAL : style;
if ( light.style < LS_NORMAL || light.style >= LS_NONE ) {
light.style = LS_NORMAL;
}
light.style = noStyles || !style_is_valid( style )? LS_NORMAL : style;
/* set origin */
light.origin = WindingCenter( light.w );

View File

@ -187,6 +187,8 @@ enum class EBrushType
#define LS_UNUSED 0xFE
#define LS_NONE 0xFF
inline bool style_is_valid( int style ){ return LS_NORMAL <= style && style < LS_NONE; }
#define MAX_LIGHTMAP_SHADERS 256
/* ok to increase these at the expense of more memory */

View File

@ -1256,7 +1256,7 @@ static void ParseShaderFile( const char *filename ){
/* q3map_lightStyle (sof2/jk2 lightstyle) */
else if ( striEqual( token, "q3map_lightStyle" ) ) {
text.GetToken( false );
si->lightStyle = std::clamp( atoi( token ), 0, LS_NONE );
si->lightStyle = std::clamp( atoi( token ), LS_NORMAL, LS_NONE );
}
/* wolf: q3map_lightRGB <red> <green> <blue> */

View File

@ -1071,10 +1071,7 @@ mapDrawSurface_t *DrawSurfaceForFlare( int entNum, const Vector3& origin, const
ds->lightmapVecs[ 0 ] = color;
/* store light style */
ds->lightStyle = lightStyle;
if ( ds->lightStyle < 0 || ds->lightStyle >= LS_NONE ) {
ds->lightStyle = LS_NORMAL;
}
ds->lightStyle = style_is_valid( lightStyle )? lightStyle : LS_NORMAL;
/* fixme: fog */

View File

@ -266,7 +266,7 @@ void SetLightStyles(){
/* get existing style */
const int style = e.intForKey( "style" );
if ( style < LS_NORMAL || style > LS_NONE ) {
if ( !style_is_valid( style ) ) {
Error( "Invalid lightstyle (%d) on entity %zu", style, i );
}
@ -287,7 +287,7 @@ void SetLightStyles(){
}
/* set explicit style */
sprintf( value, "%d", 32 + j );
sprintf( value, "%d", MAX_SWITCHED_LIGHTS + j );
e.setKeyValue( "style", value );
/* set old style */