mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 15:22:16 +00:00
Opaque blood decals must be defined with 'OpaqueBlood' keyword in DECALDEF
This commit is contained in:
parent
8facd5f3f3
commit
dd0769de80
3 changed files with 19 additions and 5 deletions
|
@ -174,6 +174,7 @@ static const char *DecalKeywords[] =
|
||||||
"colors",
|
"colors",
|
||||||
"animator",
|
"animator",
|
||||||
"lowerdecal",
|
"lowerdecal",
|
||||||
|
"opaqueblood",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -194,7 +195,8 @@ enum
|
||||||
DECAL_SHADE,
|
DECAL_SHADE,
|
||||||
DECAL_COLORS,
|
DECAL_COLORS,
|
||||||
DECAL_ANIMATOR,
|
DECAL_ANIMATOR,
|
||||||
DECAL_LOWERDECAL
|
DECAL_LOWERDECAL,
|
||||||
|
DECAL_OPAQUEBLOOD,
|
||||||
};
|
};
|
||||||
|
|
||||||
const FDecalTemplate *FDecalBase::GetDecal () const
|
const FDecalTemplate *FDecalBase::GetDecal () const
|
||||||
|
@ -473,6 +475,11 @@ void FDecalLib::ParseDecal (FScanner &sc)
|
||||||
sc.MustGetString ();
|
sc.MustGetString ();
|
||||||
newdecal.LowerDecal = GetDecalByName (sc.String);
|
newdecal.LowerDecal = GetDecalByName (sc.String);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DECAL_OPAQUEBLOOD:
|
||||||
|
newdecal.RenderStyle = STYLE_Normal;
|
||||||
|
newdecal.opaqueBlood = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,8 @@ public:
|
||||||
const FDecalBase *LowerDecal;
|
const FDecalBase *LowerDecal;
|
||||||
|
|
||||||
enum { DECAL_RandomFlipX = 0x100, DECAL_RandomFlipY = 0x200 };
|
enum { DECAL_RandomFlipX = 0x100, DECAL_RandomFlipY = 0x200 };
|
||||||
|
|
||||||
|
bool opaqueBlood;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FDecalLib
|
class FDecalLib
|
||||||
|
|
|
@ -764,10 +764,11 @@ DImpactDecal *DImpactDecal::StaticCreate (FLevelLocals *Level, const FDecalTempl
|
||||||
decal->SetShade (color.r, color.g, color.b);
|
decal->SetShade (color.r, color.g, color.b);
|
||||||
}
|
}
|
||||||
|
|
||||||
// [Nash] For compatibility reasons, only do this if the 'Shaded' keyword is omitted from the base decal.
|
// [Nash] opaque blood
|
||||||
if (bloodTranslation != 0 && tpl->ShadeColor == 0)
|
if (bloodTranslation != 0 && tpl->ShadeColor == 0 && tpl->opaqueBlood)
|
||||||
{
|
{
|
||||||
decal->SetTranslation(bloodTranslation);
|
decal->SetTranslation(bloodTranslation);
|
||||||
|
decal->RenderStyle = STYLE_Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cl_spreaddecals || !decal->PicNum.isValid())
|
if (!cl_spreaddecals || !decal->PicNum.isValid())
|
||||||
|
@ -803,8 +804,12 @@ DBaseDecal *DImpactDecal::CloneSelf (const FDecalTemplate *tpl, double ix, doubl
|
||||||
tpl->ApplyToDecal (decal, wall);
|
tpl->ApplyToDecal (decal, wall);
|
||||||
decal->AlphaColor = AlphaColor;
|
decal->AlphaColor = AlphaColor;
|
||||||
|
|
||||||
// [Nash] For compatibility reasons, only do this if the 'Shaded' keyword is omitted from the base decal.
|
// [Nash] opaque blood
|
||||||
if (tpl->ShadeColor == 0) decal->SetTranslation(Translation);
|
if (tpl->ShadeColor == 0 && tpl->opaqueBlood)
|
||||||
|
{
|
||||||
|
decal->SetTranslation(Translation);
|
||||||
|
decal->RenderStyle = STYLE_Normal;
|
||||||
|
}
|
||||||
|
|
||||||
decal->RenderFlags = (decal->RenderFlags & RF_DECALMASK) |
|
decal->RenderFlags = (decal->RenderFlags & RF_DECALMASK) |
|
||||||
(this->RenderFlags & ~RF_DECALMASK);
|
(this->RenderFlags & ~RF_DECALMASK);
|
||||||
|
|
Loading…
Reference in a new issue