mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-09 02:09:35 +00:00
1
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "c_obj_barbed_wire.h"
|
||||
|
||||
|
||||
IMPLEMENT_CLIENTCLASS_DT( C_ObjectBarbedWire, DT_ObjectBarbedWire, CObjectBarbedWire )
|
||||
RecvPropEHandle( RECVINFO( m_hConnectedTo ) )
|
||||
END_RECV_TABLE()
|
||||
|
||||
|
||||
ConVar obj_barbed_wire_hang_dist( "obj_barbed_wire_hang_dist", "20" );
|
||||
|
||||
|
||||
C_ObjectBarbedWire::C_ObjectBarbedWire()
|
||||
{
|
||||
m_vLastConnectedOrigin.Init( -999999999, -999999999, -999999999 );
|
||||
m_vLastOrigin = m_vLastConnectedOrigin;
|
||||
}
|
||||
|
||||
|
||||
C_ObjectBarbedWire::~C_ObjectBarbedWire()
|
||||
{
|
||||
// Get rid of our rope if necessary.
|
||||
if ( m_hRope )
|
||||
{
|
||||
m_hRope->Release();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void C_ObjectBarbedWire::OnDataChanged( DataUpdateType_t type )
|
||||
{
|
||||
if ( m_hConnectedTo != m_hLastConnectedTo )
|
||||
{
|
||||
m_hLastConnectedTo = m_hConnectedTo;
|
||||
|
||||
// Get rid of any old rope we had.
|
||||
int iAttachment = LookupAttachment( "wire_attachment" );
|
||||
|
||||
// Create or delete our rope?
|
||||
if ( m_hConnectedTo )
|
||||
{
|
||||
if ( !m_hRope )
|
||||
{
|
||||
|
||||
m_hRope = C_RopeKeyframe::Create(
|
||||
this,
|
||||
m_hConnectedTo,
|
||||
iAttachment,
|
||||
iAttachment,
|
||||
3,
|
||||
"sprites/physbeam"
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_hRope )
|
||||
{
|
||||
m_hRope->Release();
|
||||
m_hRope = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// Update rope parameters.
|
||||
if ( m_hRope )
|
||||
{
|
||||
int r, g, b, a;
|
||||
CMapTeamColors *team = &MapData().m_TeamColors[ GetTeamNumber() ];
|
||||
team->m_clrTeam.GetColor( r, g, b, a );
|
||||
m_hRope->SetColorMod( Vector( r / 255.0f, g / 255.0f, b / 255.0f ) );
|
||||
|
||||
m_hRope->SetEndEntity( m_hConnectedTo );
|
||||
m_hRope->SetRopeFlags( ROPE_SIMULATE | ROPE_BARBED );
|
||||
}
|
||||
}
|
||||
|
||||
BaseClass::OnDataChanged( type );
|
||||
}
|
||||
|
||||
|
||||
void C_ObjectBarbedWire::Spawn()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void C_ObjectBarbedWire::ClientThink()
|
||||
{
|
||||
if ( m_hConnectedTo && m_hRope )
|
||||
{
|
||||
if ( m_vLastOrigin != GetAbsOrigin() || m_vLastConnectedOrigin != m_hConnectedTo->GetAbsOrigin() )
|
||||
{
|
||||
m_hRope->SetupHangDistance( obj_barbed_wire_hang_dist.GetFloat() );
|
||||
|
||||
m_vLastOrigin = GetAbsOrigin();
|
||||
m_vLastConnectedOrigin = m_hConnectedTo->GetAbsOrigin();
|
||||
}
|
||||
}
|
||||
|
||||
SetNextClientThink( gpGlobals->curtime + 0.1f );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user