css_enhanced_waf/game/client/css_enhanced/c_entityinput.cpp
Kamay Xutax 14717d8092 Added prediction for triggers, thanks oblivious
Prediction is fixed by me by adding two more functions in prediction
class, there had before some issues because
starttouch/endtouch weren't predicted.
The result is that with lag, it restores touched entities,
including the triggers touched entity list.
2024-08-23 00:42:58 +02:00

87 lines
No EOL
2.5 KiB
C++

#include "cbase.h"
#include "c_entityinput.h"
//-----------------------------------------------------------------------------
// C_MultiInputVar implementation
//
// Purpose: holds a list of inputs and their ID tags
// used for entities that hold inputs from a set of other entities
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Purpose: destructor, frees the data list
//-----------------------------------------------------------------------------
C_MultiInputVar::~C_MultiInputVar()
{
if ( m_InputList )
{
while ( m_InputList->next != NULL )
{
inputitem_t *input = m_InputList->next;
m_InputList->next = input->next;
delete input;
}
delete m_InputList;
}
}
//-----------------------------------------------------------------------------
// Purpose: Updates the data set with a new value
// Input : newVal - the new value to add to or update in the list
// outputID - the source of the value
//-----------------------------------------------------------------------------
void C_MultiInputVar::AddValue( variant_t newVal, int outputID )
{
// see if it's already in the list
inputitem_t *inp;
for ( inp = m_InputList; inp != NULL; inp = inp->next )
{
// already in list, so just update this link
if ( inp->outputID == outputID )
{
inp->value = newVal;
return;
}
}
// add to start of list
inp = new inputitem_t;
inp->value = newVal;
inp->outputID = outputID;
if ( !m_InputList )
{
m_InputList = inp;
inp->next = NULL;
}
else
{
inp->next = m_InputList;
m_InputList = inp;
}
}
#include "tier0/memdbgoff.h"
//-----------------------------------------------------------------------------
// Purpose: allocates memory from the entitylist pool
//-----------------------------------------------------------------------------
void *C_MultiInputVar::inputitem_t::operator new( size_t stAllocateBlock )
{
return g_EntityListPool.Alloc( stAllocateBlock );
}
void *C_MultiInputVar::inputitem_t::operator new( size_t stAllocateBlock, int nBlockUse, const char *pFileName, int nLine )
{
return g_EntityListPool.Alloc( stAllocateBlock );
}
//-----------------------------------------------------------------------------
// Purpose: frees memory from the entitylist pool
//-----------------------------------------------------------------------------
void C_MultiInputVar::inputitem_t::operator delete( void *pMem )
{
g_EntityListPool.Free( pMem );
}
#include "tier0/memdbgon.h"