Init ropes in Activated instead of delayed think

This commit is contained in:
Roman Chistokhodov 2020-02-17 14:13:46 +03:00
parent 7c57dc5318
commit 9f932e33f9
2 changed files with 30 additions and 9 deletions

View File

@ -168,6 +168,7 @@ TYPEDESCRIPTION CRope::m_SaveData[] =
DEFINE_FIELD( CRope, mEndingModel, FIELD_STRING ),
DEFINE_FIELD( CRope, mAttachedObjectsOffset, FIELD_FLOAT ),
DEFINE_FIELD( CRope, m_bMakeSound, FIELD_CHARACTER ),
DEFINE_FIELD( CRope, m_activated, FIELD_CHARACTER ),
};
IMPLEMENT_SAVERESTORE( CRope, CBaseDelay )
@ -242,11 +243,19 @@ void CRope::Spawn()
m_NumSamples = m_iSegments + 1;
SetThink(&CRope::StartThink);
pev->nextthink = gpGlobals->time + 0.01;
m_activated = false;
}
void CRope::StartThink()
void CRope::Activate()
{
if (!m_activated)
{
InitRope();
m_activated = true;
}
}
void CRope::InitRope()
{
AddFlags( FL_ALWAYSTHINK );
@ -1345,7 +1354,7 @@ class CElectrifiedWire : public CRope
{
public:
CElectrifiedWire();
void EXPORT StartElectrifiedThink();
void InitElectrifiedRope();
virtual int Save( CSave &save );
virtual int Restore( CRestore &restore );
static TYPEDESCRIPTION m_SaveData[];
@ -1355,6 +1364,7 @@ public:
void Precache();
void Spawn();
void Activate();
void EXPORT ElectrifiedRopeThink();
@ -1490,13 +1500,20 @@ void CElectrifiedWire::Spawn()
{
CRope::Spawn();
pev->classname = MAKE_STRING( "env_electrified_wire" );
SetThink(&CElectrifiedWire::StartElectrifiedThink);
}
void CElectrifiedWire::StartElectrifiedThink()
void CElectrifiedWire::Activate()
{
StartThink();
if (!m_activated)
{
InitElectrifiedRope();
m_activated = true;
}
}
void CElectrifiedWire::InitElectrifiedRope()
{
InitRope();
m_uiNumUninsulatedSegments = 0;
m_bIsActive = true;

View File

@ -36,8 +36,9 @@ public:
virtual void Precache();
virtual void Spawn();
void Activate();
void EXPORT StartThink();
void InitRope();
void EXPORT RopeThink();
virtual int Save( CSave &save );
@ -288,6 +289,9 @@ private:
int mDisallowPlayerAttachment;
bool m_bMakeSound;
protected:
bool m_activated;
};
#endif //ROPES_H