mirror of
https://github.com/rei-2/Amalgam.git
synced 2026-10-11 09:48:12 +08:00
visual fixes
This commit is contained in:
1 parent
f246c3dbbe
commit
cb14f8aac6
8 files changed
+179
-139
No files matched your search
@@ -8,7 +8,7 @@
|
||||
#include "../AutoAirblast/AutoAirblast.h"
|
||||
|
||||
//#define SPLASH_DEBUG1 // normal splash visualization
|
||||
//#define SPLASH_DEBUG2 // obstructed splash visualization
|
||||
#define SPLASH_DEBUG2 // obstructed splash visualization
|
||||
//#define SPLASH_DEBUG3 // simple splash visualization
|
||||
//#define SPLASH_DEBUG4 // points visualization
|
||||
//#define SPLASH_DEBUG5 // trace visualization
|
||||
|
||||
@@ -97,7 +97,7 @@ void CChams::Store(CTFPlayer* pLocal)
|
||||
continue;
|
||||
|
||||
if (pGroup->m_tChams()
|
||||
&& SDK::IsOnScreen(pEntity, !pEntity->IsProjectile()))
|
||||
&& SDK::IsOnScreen(pEntity, pEntity->IsBaseCombatWeapon() || pEntity->IsWearable()))
|
||||
m_vEntities.emplace_back(pEntity, pGroup->m_tChams);
|
||||
|
||||
if (pEntity->IsPlayer() && pEntity != pLocal && pGroup->m_bBacktrack && !pGroup->m_vBacktrackChams.empty()
|
||||
|
||||
@@ -603,6 +603,10 @@ static inline void StoreProjectile(CBaseEntity* pProjectile, CTFPlayer* pLocal,
|
||||
|
||||
static inline void StoreObjective(CBaseEntity* pObjective, CTFPlayer* pLocal, Group_t* pGroup, std::unordered_map<CBaseEntity*, EntityCache_t>& mCache)
|
||||
{
|
||||
auto pOwner = pObjective->m_hOwnerEntity()->As<CTFPlayer>();
|
||||
if (pOwner == pLocal)
|
||||
return;
|
||||
|
||||
EntityCache_t& tCache = mCache[pObjective];
|
||||
tCache.m_flAlpha = pGroup->m_tColor.a / 255.f;
|
||||
tCache.m_tColor = F::Groups.GetColor(pObjective, pGroup);
|
||||
@@ -734,7 +738,7 @@ void CESP::Store(CTFPlayer* pLocal)
|
||||
else if (pEntity->IsProjectile())
|
||||
StoreProjectile(pEntity, pLocal, pGroup, m_mEntityCache);
|
||||
else if (pEntity->GetClassID() == ETFClassID::CCaptureFlag)
|
||||
StoreProjectile(pEntity, pLocal, pGroup, m_mEntityCache);
|
||||
StoreObjective(pEntity, pLocal, pGroup, m_mEntityCache);
|
||||
else
|
||||
StoreMisc(pEntity, pLocal, pGroup, m_mEntityCache);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ void CGlow::SetupBegin(IMatRenderContext* pRenderContext)
|
||||
I::RenderView->SetColorModulation(1.f, 1.f, 1.f);
|
||||
I::ModelRender->ForcedMaterialOverride(m_pMatGlowColor);
|
||||
|
||||
pRenderContext->ClearBuffers(false, false, false);
|
||||
pRenderContext->SetStencilEnable(true);
|
||||
pRenderContext->SetStencilCompareFunction(STENCILCOMPARISONFUNCTION_ALWAYS);
|
||||
pRenderContext->SetStencilPassOperation(STENCILOPERATION_REPLACE);
|
||||
@@ -121,7 +120,7 @@ void CGlow::Store(CTFPlayer* pLocal)
|
||||
|
||||
Color_t tColor = F::Groups.GetColor(pEntity, pGroup);
|
||||
if (pGroup->m_tGlow()
|
||||
&& SDK::IsOnScreen(pEntity, !pEntity->IsProjectile()))
|
||||
&& SDK::IsOnScreen(pEntity, pEntity->IsBaseCombatWeapon() || pEntity->IsWearable()))
|
||||
m_mEntities[pGroup->m_tGlow].emplace_back(pEntity, tColor);
|
||||
|
||||
if (pEntity->IsPlayer() && pEntity != pLocal && pGroup->m_bBacktrack && pGroup->m_tBacktrackGlow()
|
||||
|
||||
@@ -700,4 +700,37 @@ public:
|
||||
virtual void OverrideColorWriteEnable(bool bOverrideEnable, bool bColorWriteEnable) = 0;
|
||||
virtual void ClearBuffersObeyStencilEx(bool bClearColor, bool bClearAlpha, bool bClearDepth) = 0;
|
||||
virtual void AsyncCreateTextureFromRenderTarget(ITexture* pSrcRt, const char* pDstName, ImageFormat dstFmt, bool bGenMips, int nAdditionalCreationFlags, IAsyncTextureOperationReceiver* pRecipient, void* pExtraArgs) = 0;
|
||||
};
|
||||
|
||||
struct ShaderStencilState_t
|
||||
{
|
||||
bool m_bEnable;
|
||||
StencilOperation_t m_FailOp;
|
||||
StencilOperation_t m_ZFailOp;
|
||||
StencilOperation_t m_PassOp;
|
||||
StencilComparisonFunction_t m_CompareFunc;
|
||||
int m_nReferenceValue;
|
||||
uint32 m_nTestMask;
|
||||
uint32 m_nWriteMask;
|
||||
|
||||
ShaderStencilState_t()
|
||||
{
|
||||
m_bEnable = false;
|
||||
m_PassOp = m_FailOp = m_ZFailOp = STENCILOPERATION_KEEP;
|
||||
m_CompareFunc = STENCILCOMPARISONFUNCTION_ALWAYS;
|
||||
m_nReferenceValue = 0;
|
||||
m_nTestMask = m_nWriteMask = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
void SetStencilState(IMatRenderContext* const pRenderContext) const
|
||||
{
|
||||
pRenderContext->SetStencilEnable(m_bEnable);
|
||||
pRenderContext->SetStencilFailOperation(m_FailOp);
|
||||
pRenderContext->SetStencilZFailOperation(m_ZFailOp);
|
||||
pRenderContext->SetStencilPassOperation(m_PassOp);
|
||||
pRenderContext->SetStencilCompareFunction(m_CompareFunc);
|
||||
pRenderContext->SetStencilReferenceValue(m_nReferenceValue);
|
||||
pRenderContext->SetStencilTestMask(m_nTestMask);
|
||||
pRenderContext->SetStencilWriteMask(m_nWriteMask);
|
||||
}
|
||||
};
|
||||
@@ -134,6 +134,144 @@ public:
|
||||
return ent;
|
||||
}
|
||||
|
||||
inline bool IsPlayer()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CTFPlayer;
|
||||
}
|
||||
inline bool IsBuilding()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CObjectDispenser:
|
||||
case ETFClassID::CObjectSentrygun:
|
||||
case ETFClassID::CObjectTeleporter:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
inline bool IsSentrygun()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectSentrygun;
|
||||
}
|
||||
inline bool IsDispenser()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectDispenser;
|
||||
}
|
||||
inline bool IsTeleporter()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectTeleporter;
|
||||
}
|
||||
inline bool IsProjectile()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CBaseProjectile:
|
||||
case ETFClassID::CBaseGrenade:
|
||||
case ETFClassID::CTFWeaponBaseGrenadeProj:
|
||||
case ETFClassID::CTFWeaponBaseMerasmusGrenade:
|
||||
case ETFClassID::CTFGrenadePipebombProjectile:
|
||||
case ETFClassID::CTFStunBall:
|
||||
case ETFClassID::CTFBall_Ornament:
|
||||
case ETFClassID::CTFProjectile_Jar:
|
||||
case ETFClassID::CTFProjectile_Cleaver:
|
||||
case ETFClassID::CTFProjectile_JarGas:
|
||||
case ETFClassID::CTFProjectile_JarMilk:
|
||||
case ETFClassID::CTFProjectile_SpellBats:
|
||||
case ETFClassID::CTFProjectile_SpellKartBats:
|
||||
case ETFClassID::CTFProjectile_SpellMeteorShower:
|
||||
case ETFClassID::CTFProjectile_SpellMirv:
|
||||
case ETFClassID::CTFProjectile_SpellPumpkin:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnBoss:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnHorde:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnZombie:
|
||||
case ETFClassID::CTFProjectile_SpellTransposeTeleport:
|
||||
case ETFClassID::CTFProjectile_Throwable:
|
||||
case ETFClassID::CTFProjectile_ThrowableBreadMonster:
|
||||
case ETFClassID::CTFProjectile_ThrowableBrick:
|
||||
case ETFClassID::CTFProjectile_ThrowableRepel:
|
||||
case ETFClassID::CTFBaseRocket:
|
||||
case ETFClassID::CTFFlameRocket:
|
||||
case ETFClassID::CTFProjectile_Arrow:
|
||||
case ETFClassID::CTFProjectile_GrapplingHook:
|
||||
case ETFClassID::CTFProjectile_HealingBolt:
|
||||
case ETFClassID::CTFProjectile_Rocket:
|
||||
case ETFClassID::CTFProjectile_BallOfFire:
|
||||
case ETFClassID::CTFProjectile_MechanicalArmOrb:
|
||||
case ETFClassID::CTFProjectile_SentryRocket:
|
||||
case ETFClassID::CTFProjectile_SpellFireball:
|
||||
case ETFClassID::CTFProjectile_SpellLightningOrb:
|
||||
case ETFClassID::CTFProjectile_SpellKartOrb:
|
||||
case ETFClassID::CTFProjectile_EnergyBall:
|
||||
case ETFClassID::CTFProjectile_Flare:
|
||||
case ETFClassID::CTFBaseProjectile:
|
||||
case ETFClassID::CTFProjectile_EnergyRing:
|
||||
//case ETFClassID::CTFProjectile_Syringe:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
inline bool IsPickup()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CBaseAnimating:
|
||||
return I::ModelInfoClient->GetModelName(GetModel())[24] != 'h';
|
||||
case ETFClassID::CTFAmmoPack:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
inline bool IsNPC()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CTFBaseBoss:
|
||||
case ETFClassID::CTFTankBoss:
|
||||
case ETFClassID::CMerasmus:
|
||||
case ETFClassID::CEyeballBoss:
|
||||
case ETFClassID::CHeadlessHatman:
|
||||
case ETFClassID::CZombie:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
inline bool IsBomb()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CTFPumpkinBomb:
|
||||
case ETFClassID::CTFGenericBomb:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
inline bool IsWearable()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CTFWearable:
|
||||
case ETFClassID::CTFPowerupBottle:
|
||||
case ETFClassID::CTFWearableCampaignItem:
|
||||
case ETFClassID::CTFWearableDemoShield:
|
||||
case ETFClassID::CTFWeaponPDAExpansion_Dispenser:
|
||||
case ETFClassID::CTFWeaponPDAExpansion_Teleporter:
|
||||
case ETFClassID::CTFWearableLevelableItem:
|
||||
case ETFClassID::CTFWearableRazorback:
|
||||
case ETFClassID::CTFWearableRobotArm:
|
||||
case ETFClassID::CTFWearableVM:
|
||||
case ETFClassID::CTFWearableItem:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//VIRTUAL(IsPlayer, bool, 132, this);
|
||||
VIRTUAL(IsBaseCombatCharacter, bool, 133, this);
|
||||
//VIRTUAL(IsNPC, bool, 135, this);
|
||||
VIRTUAL(IsNextBot, bool, 136, this);
|
||||
VIRTUAL(IsBaseObject, bool, 137, this);
|
||||
VIRTUAL(IsBaseCombatWeapon, bool, 138, this);
|
||||
VIRTUAL(IsCombatItem, bool, 140, this);
|
||||
VIRTUAL(EyePosition, Vec3, 142, this);
|
||||
VIRTUAL(EyeAngles, Vec3&, 143, this);
|
||||
VIRTUAL(UpdateVisibility, void, 91, this);
|
||||
|
||||
@@ -16,135 +16,5 @@ public:
|
||||
virtual CMouthInfo* GetMouth(void) = 0;
|
||||
virtual bool GetSoundSpatialization(SpatializationInfo_t& info) = 0;
|
||||
|
||||
inline bool IsPlayer()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CTFPlayer;
|
||||
}
|
||||
|
||||
inline bool IsSentrygun()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectSentrygun;
|
||||
}
|
||||
|
||||
inline bool IsDispenser()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectDispenser;
|
||||
}
|
||||
|
||||
inline bool IsTeleporter()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CObjectTeleporter;
|
||||
}
|
||||
|
||||
inline bool IsBaseCombatWeapon()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CBaseCombatWeapon;
|
||||
}
|
||||
|
||||
inline bool IsWearable()
|
||||
{
|
||||
return GetClassID() == ETFClassID::CTFWearable;
|
||||
}
|
||||
|
||||
inline bool IsBuilding()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CObjectDispenser:
|
||||
case ETFClassID::CObjectSentrygun:
|
||||
case ETFClassID::CObjectTeleporter:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool IsProjectile()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CBaseProjectile:
|
||||
case ETFClassID::CBaseGrenade:
|
||||
case ETFClassID::CTFWeaponBaseGrenadeProj:
|
||||
case ETFClassID::CTFWeaponBaseMerasmusGrenade:
|
||||
case ETFClassID::CTFGrenadePipebombProjectile:
|
||||
case ETFClassID::CTFStunBall:
|
||||
case ETFClassID::CTFBall_Ornament:
|
||||
case ETFClassID::CTFProjectile_Jar:
|
||||
case ETFClassID::CTFProjectile_Cleaver:
|
||||
case ETFClassID::CTFProjectile_JarGas:
|
||||
case ETFClassID::CTFProjectile_JarMilk:
|
||||
case ETFClassID::CTFProjectile_SpellBats:
|
||||
case ETFClassID::CTFProjectile_SpellKartBats:
|
||||
case ETFClassID::CTFProjectile_SpellMeteorShower:
|
||||
case ETFClassID::CTFProjectile_SpellMirv:
|
||||
case ETFClassID::CTFProjectile_SpellPumpkin:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnBoss:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnHorde:
|
||||
case ETFClassID::CTFProjectile_SpellSpawnZombie:
|
||||
case ETFClassID::CTFProjectile_SpellTransposeTeleport:
|
||||
case ETFClassID::CTFProjectile_Throwable:
|
||||
case ETFClassID::CTFProjectile_ThrowableBreadMonster:
|
||||
case ETFClassID::CTFProjectile_ThrowableBrick:
|
||||
case ETFClassID::CTFProjectile_ThrowableRepel:
|
||||
case ETFClassID::CTFBaseRocket:
|
||||
case ETFClassID::CTFFlameRocket:
|
||||
case ETFClassID::CTFProjectile_Arrow:
|
||||
case ETFClassID::CTFProjectile_GrapplingHook:
|
||||
case ETFClassID::CTFProjectile_HealingBolt:
|
||||
case ETFClassID::CTFProjectile_Rocket:
|
||||
case ETFClassID::CTFProjectile_BallOfFire:
|
||||
case ETFClassID::CTFProjectile_MechanicalArmOrb:
|
||||
case ETFClassID::CTFProjectile_SentryRocket:
|
||||
case ETFClassID::CTFProjectile_SpellFireball:
|
||||
case ETFClassID::CTFProjectile_SpellLightningOrb:
|
||||
case ETFClassID::CTFProjectile_SpellKartOrb:
|
||||
case ETFClassID::CTFProjectile_EnergyBall:
|
||||
case ETFClassID::CTFProjectile_Flare:
|
||||
case ETFClassID::CTFBaseProjectile:
|
||||
case ETFClassID::CTFProjectile_EnergyRing:
|
||||
//case ETFClassID::CTFProjectile_Syringe:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool IsPickup()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CBaseAnimating:
|
||||
return I::ModelInfoClient->GetModelName(GetModel())[24] != 'h';
|
||||
case ETFClassID::CTFAmmoPack:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool IsNPC()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CTFBaseBoss:
|
||||
case ETFClassID::CTFTankBoss:
|
||||
case ETFClassID::CMerasmus:
|
||||
case ETFClassID::CEyeballBoss:
|
||||
case ETFClassID::CHeadlessHatman:
|
||||
case ETFClassID::CZombie:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool IsBomb()
|
||||
{
|
||||
switch (GetClassID())
|
||||
{
|
||||
case ETFClassID::CTFPumpkinBomb:
|
||||
case ETFClassID::CTFGenericBomb:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename T> inline T* As() { return reinterpret_cast<T*>(this); }
|
||||
};
|
||||
@@ -321,10 +321,6 @@ void CEntities::ManualNetwork(const StartSoundParams_t& params)
|
||||
if (!pEntity || !pEntity->IsDormant() || !pEntity->IsPlayer() && !pEntity->IsBuilding())
|
||||
return;
|
||||
|
||||
bool bPlayer = pEntity->IsPlayer();
|
||||
bool bBuilding = pEntity->IsBuilding();
|
||||
bool bNPC = pEntity->IsNPC();
|
||||
|
||||
float flDuration = 0.f;
|
||||
switch (pEntity->GetClassID())
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user