mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef PHYSICS_IMPACT_DAMAGE_H
|
||||
#define PHYSICS_IMPACT_DAMAGE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
struct impactentry_t
|
||||
{
|
||||
float impulse;
|
||||
float damage;
|
||||
};
|
||||
|
||||
// UNDONE: Add a flag to turn off aggregation of mass in object systems (e.g. ragdolls, vehicles)?
|
||||
struct impactdamagetable_t
|
||||
{
|
||||
impactentry_t *linearTable;
|
||||
impactentry_t *angularTable;
|
||||
int linearCount; // array size of linearTable
|
||||
int angularCount; // array size of angularTable
|
||||
|
||||
float minSpeedSqr; // minimum squared impact speed for damage
|
||||
float minRotSpeedSqr;
|
||||
float minMass; // minimum mass to do damage
|
||||
|
||||
// filter out reall small objects, set all to zero to disable
|
||||
float smallMassMax;
|
||||
float smallMassCap;
|
||||
float smallMassMinSpeedSqr;
|
||||
|
||||
// exaggerate the effects of really large objects, set all to 1 to disable
|
||||
float largeMassMin;
|
||||
float largeMassScale;
|
||||
float largeMassFallingScale; // emphasize downward impacts so that this will kill instead of stress (we have more information here than there)
|
||||
float myMinVelocity; // filter out any energy lost by me unless my velocity is greater than this
|
||||
};
|
||||
|
||||
|
||||
|
||||
extern impactdamagetable_t gDefaultNPCImpactDamageTable;
|
||||
extern impactdamagetable_t gDefaultPlayerImpactDamageTable;
|
||||
extern impactdamagetable_t gDefaultPlayerVehicleImpactDamageTable;
|
||||
|
||||
// NOTE Default uses default NPC table
|
||||
float CalculateDefaultPhysicsDamage( int index, gamevcollisionevent_t *pEvent, float energyScale, bool allowStaticDamage, int &damageTypeOut, string_t iszDamageTableName = NULL_STRING, bool bDamageFromHeldObjects = false );
|
||||
|
||||
// use passes in the table
|
||||
float CalculatePhysicsImpactDamage( int index, gamevcollisionevent_t *pEvent, const impactdamagetable_t &table, float energyScale, bool allowStaticDamage, int &damageTypeOut, bool bDamageFromHeldObjects = false );
|
||||
|
||||
struct vphysics_objectstress_t
|
||||
{
|
||||
float exertedStress;
|
||||
float receivedStress;
|
||||
bool hasNonStaticStress;
|
||||
bool hasLargeObjectContact;
|
||||
};
|
||||
|
||||
float CalculateObjectStress( IPhysicsObject *pObject, CBaseEntity *pOwnerEntity, vphysics_objectstress_t *pOutput );
|
||||
|
||||
#endif // PHYSICS_IMPACT_DAMAGE_H
|
||||
Reference in New Issue
Block a user