Added the following GL Light flags:

- `DontLightOthers`: Acts as the inverse of `DontLightSelf`, where it won't light actors that aren't the owner.
- `DontLightMap`: The light doesn't affect the map.
This commit is contained in:
Major Cooke 2020-12-17 11:44:59 -06:00 committed by Christoph Oelckers
commit 31fa78d7c9
4 changed files with 52 additions and 4 deletions

View file

@ -189,6 +189,8 @@ static const char *LightTags[]=
"dontlightactors",
"spot",
"noshadowmap",
"dontlightothers",
"dontlightmap",
nullptr
};
@ -213,6 +215,8 @@ enum {
LIGHTTAG_DONTLIGHTACTORS,
LIGHTTAG_SPOT,
LIGHTTAG_NOSHADOWMAP,
LIGHTTAG_DONTLIGHTOTHERS,
LIGHTTAG_DONTLIGHTMAP,
};
//==========================================================================
@ -513,6 +517,12 @@ class GLDefsParser
case LIGHTTAG_DONTLIGHTACTORS:
defaults->SetDontLightActors(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTOTHERS:
defaults->SetDontLightOthers(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTMAP:
defaults->SetDontLightMap(ParseInt(sc) != 0);
break;
case LIGHTTAG_SPOT:
{
float innerAngle = ParseFloat(sc);
@ -609,6 +619,12 @@ class GLDefsParser
case LIGHTTAG_DONTLIGHTACTORS:
defaults->SetDontLightActors(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTOTHERS:
defaults->SetDontLightOthers(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTMAP:
defaults->SetDontLightMap(ParseInt(sc) != 0);
break;
case LIGHTTAG_SPOT:
{
float innerAngle = ParseFloat(sc);
@ -708,6 +724,12 @@ class GLDefsParser
case LIGHTTAG_DONTLIGHTACTORS:
defaults->SetDontLightActors(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTOTHERS:
defaults->SetDontLightOthers(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTMAP:
defaults->SetDontLightMap(ParseInt(sc) != 0);
break;
case LIGHTTAG_SPOT:
{
float innerAngle = ParseFloat(sc);
@ -806,6 +828,12 @@ class GLDefsParser
case LIGHTTAG_DONTLIGHTACTORS:
defaults->SetDontLightActors(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTOTHERS:
defaults->SetDontLightOthers(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTMAP:
defaults->SetDontLightMap(ParseInt(sc) != 0);
break;
case LIGHTTAG_SPOT:
{
float innerAngle = ParseFloat(sc);
@ -901,6 +929,12 @@ class GLDefsParser
case LIGHTTAG_DONTLIGHTACTORS:
defaults->SetDontLightActors(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTOTHERS:
defaults->SetDontLightOthers(ParseInt(sc) != 0);
break;
case LIGHTTAG_DONTLIGHTMAP:
defaults->SetDontLightMap(ParseInt(sc) != 0);
break;
case LIGHTTAG_SPOT:
{
float innerAngle = ParseFloat(sc);