env_muzzleflash: add a hack to force additive rendering (HL1...)

This commit is contained in:
Marco Cawthorne 2025-01-03 04:12:24 -08:00
parent ba6f788ab8
commit 31ed19cb47

View file

@ -59,6 +59,7 @@ private:
string m_strModel; string m_strModel;
string m_strParticle; string m_strParticle;
entity m_eMuzzler; /* lol */ entity m_eMuzzler; /* lol */
bool m_forceAdditive;
}; };
void void
@ -70,6 +71,7 @@ env_muzzleflash::env_muzzleflash(void)
m_strParticle = __NULL__; m_strParticle = __NULL__;
m_eMuzzler = __NULL__; m_eMuzzler = __NULL__;
scale = 1.0f; scale = 1.0f;
m_forceAdditive = false;
} }
#ifdef SERVER #ifdef SERVER
@ -83,6 +85,7 @@ env_muzzleflash::Save(float handle)
SaveString(handle, "m_strModel", m_strModel); SaveString(handle, "m_strModel", m_strModel);
SaveString(handle, "m_strParticle", m_strParticle); SaveString(handle, "m_strParticle", m_strParticle);
SaveEntity(handle, "m_eMuzzler", m_eMuzzler); SaveEntity(handle, "m_eMuzzler", m_eMuzzler);
SaveBool(handle, "m_forceAdditive", m_forceAdditive);
} }
void void
@ -107,6 +110,9 @@ env_muzzleflash::Restore(string strKey, string strValue)
case "m_eMuzzler": case "m_eMuzzler":
m_eMuzzler = ReadEntity(strValue); m_eMuzzler = ReadEntity(strValue);
break; break;
case "m_forceAdditive":
m_forceAdditive = ReadBool(strValue);
break;
default: default:
super::Restore(strKey, strValue); super::Restore(strKey, strValue);
} }
@ -131,6 +137,9 @@ env_muzzleflash::SpawnKey(string keyName, string setValue)
case "model": case "model":
model = ReadString(setValue); model = ReadString(setValue);
break; break;
case "additive":
m_forceAdditive = ReadBool(setValue);
break;
default: default:
super::SpawnKey(keyName, setValue); super::SpawnKey(keyName, setValue);
break; break;
@ -196,7 +205,11 @@ env_muzzleflash::predraw(void)
} }
setorigin(this, muzzlePos); setorigin(this, muzzlePos);
// effects = EF_ADDITIVE;
if (m_forceAdditive) {
effects = EF_ADDITIVE;
}
angles = m_eOwner.angles; angles = m_eOwner.angles;
addentity(this); addentity(this);
alpha -= frametime * 16.0f; alpha -= frametime * 16.0f;
@ -246,6 +259,24 @@ EV_MuzzleFlash_Create(entity muzzleOwner, int attachmentID, float muzzleScale, i
tempMuzzle.drawmask = MASK_GLOWS; tempMuzzle.drawmask = MASK_GLOWS;
} }
void
EV_MuzzleFlash_CreateAdditive(entity muzzleOwner, int attachmentID, float muzzleScale, int muzzleModel)
{
env_muzzleflash tempMuzzle = spawn(env_muzzleflash);
tempMuzzle.m_eOwner = (ncRenderableEntity)muzzleOwner;
tempMuzzle.m_iAttachment = attachmentID;
tempMuzzle.scale = muzzleScale;
tempMuzzle.alpha = 1.0f;
tempMuzzle.modelindex = muzzleModel;
tempMuzzle.m_forceAdditive = true;
setmodel(tempMuzzle, modelnameforindex(muzzleModel));
setorigin(tempMuzzle, tempMuzzle.m_eOwner.origin);
setsize(tempMuzzle, [0,0,0], [0,0,0]);
tempMuzzle.drawmask = MASK_GLOWS;
}
void void
EV_MuzzleFlash_CreateAtPos(entity muzzleOwner, vector pos, float muzzleScale, int muzzleModel) EV_MuzzleFlash_CreateAtPos(entity muzzleOwner, vector pos, float muzzleScale, int muzzleModel)
{ {