1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 12:06:07 +08:00

Sync with latest source-sdk-2013.

This commit is contained in:
Nicholas Hastings
2014-10-30 12:30:57 -04:00
parent 6abc7fddca
commit aa5841f220
407 changed files with 6784 additions and 10498 deletions

View File

@ -600,6 +600,10 @@ public:
pModel->mpBreakMode = MULTIPLAYER_BREAK_CLIENTSIDE;
}
}
else if ( !strcmpi( pKey, "velocity" ) )
{
UTIL_StringToVector( pModel->velocity.Base(), pValue );
}
}
virtual void SetDefaults( void *pData )
{
@ -617,6 +621,7 @@ public:
pModel->placementName[0] = 0;
pModel->placementIsBone = false;
pModel->mpBreakMode = MULTIPLAYER_BREAK_DEFAULT;
pModel->velocity = vec3_origin;
m_wroteCollisionGroup = false;
}
@ -626,7 +631,7 @@ private:
bool m_wroteCollisionGroup;
};
void BreakModelList( CUtlVector<breakmodel_t> &list, int modelindex, float defBurstScale, int defCollisionGroup )
void BuildPropList( const char *pszBlockName, CUtlVector<breakmodel_t> &list, int modelindex, float defBurstScale, int defCollisionGroup )
{
vcollide_t *pCollide = modelinfo->GetVCollide( modelindex );
if ( !pCollide )
@ -638,7 +643,7 @@ void BreakModelList( CUtlVector<breakmodel_t> &list, int modelindex, float defBu
CBreakParser breakParser( defBurstScale, defCollisionGroup );
const char *pBlock = pParse->GetCurrentBlockName();
if ( !strcmpi( pBlock, "break" ) )
if ( !strcmpi( pBlock, pszBlockName ) )
{
int index = list.AddToTail();
breakmodel_t &breakModel = list[index];
@ -652,6 +657,11 @@ void BreakModelList( CUtlVector<breakmodel_t> &list, int modelindex, float defBu
physcollision->VPhysicsKeyParserDestroy( pParse );
}
void BreakModelList( CUtlVector<breakmodel_t> &list, int modelindex, float defBurstScale, int defCollisionGroup )
{
BuildPropList( "break", list, modelindex, defBurstScale, defCollisionGroup );
}
#if !defined(_STATIC_LINKED) || defined(CLIENT_DLL)
int GetAutoMultiplayerPhysicsMode( Vector size, float mass )
{
@ -1226,9 +1236,8 @@ void PropBreakableCreateAll( int modelindex, IPhysicsObject *pPhysics, const Vec
// Purpose:
// Input : modelindex -
//-----------------------------------------------------------------------------
void PrecacheGibsForModel( int iModel )
void PrecachePropsForModel( int iModel, const char *pszBlockName )
{
VPROF_BUDGET( "PrecacheGibsForModel", VPROF_BUDGETGROUP_PLAYER );
vcollide_t *pCollide = modelinfo->GetVCollide( iModel );
if ( !pCollide )
return;
@ -1241,7 +1250,7 @@ void PrecacheGibsForModel( int iModel )
while ( !pParse->Finished() )
{
const char *pBlock = pParse->GetCurrentBlockName();
if ( !strcmpi( pBlock, "break" ) )
if ( !strcmpi( pBlock, pszBlockName ) )
{
breakmodel_t breakModel;
pParse->ParseCustom( &breakModel, &breakParser );
@ -1257,6 +1266,12 @@ void PrecacheGibsForModel( int iModel )
physcollision->VPhysicsKeyParserDestroy( pParse );
}
void PrecacheGibsForModel( int iModel )
{
VPROF_BUDGET( "PrecacheGibsForModel", VPROF_BUDGETGROUP_PLAYER );
PrecachePropsForModel( iModel, "break" );
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : &list -
@ -1448,12 +1463,21 @@ CBaseEntity *CreateGibsFromList( CUtlVector<breakmodel_t> &list, int modelindex,
}
Vector objectVelocity = params.velocity;
float flScale = VectorNormalize( objectVelocity );
objectVelocity.x += RandomFloat( -1.f, 1.0f );
objectVelocity.y += RandomFloat( -1.0f, 1.0f );
objectVelocity.z += RandomFloat( 0.0f, 1.0f );
VectorNormalize( objectVelocity );
objectVelocity *= flScale;
Vector gibVelocity = vec3_origin;
if ( !list[i].velocity.IsZero() )
{
VectorRotate( list[i].velocity, matrix, gibVelocity );
objectVelocity = gibVelocity;
}
else
{
float flScale = VectorNormalize( objectVelocity );
objectVelocity.x += RandomFloat( -1.f, 1.0f );
objectVelocity.y += RandomFloat( -1.0f, 1.0f );
objectVelocity.z += RandomFloat( 0.0f, 1.0f );
VectorNormalize( objectVelocity );
objectVelocity *= flScale;
}
if (pPhysics)
{